String类特点分析

2020-10-21  本文已影响0人  曾梦想仗剑天涯

字符串比较

/**
  ==进行的是数值比较,如果是用于对象比较,则比较的是两个内存的地址数值
  equals()是类所提供的一个比较方法,可以直接进行字符串内容的判断
*/
public class StringDemo {
  public static void main(String args []) {
    String strA = "www.baidu.com";
    String strB = new String("www.baidu.com");
    String strC = "www.baidu.com";
    System.out.println(strA == strB);    //false
    System.out.println(strA.equals(strB));    //true
    System.out.println(strA == strC);    //true
  }
}

字符串常量

String类对象两种实例化方式

public class StringDemo {
  public static void main(String args []) {
    String strA = "mldn";
    String strB = "mldn";
  }
}
字符串池--此图来源于李兴华老师
public class StringDemo {
  public static void main(String args []) {
    String strA = new String("mldn");
  }
}
此图来源于李兴华老师
public class StringDemo {
  public static void main(String args []) {
    String strA = "mldn";
    String strB = new String("mldn");
  }
}
此图来源于李兴华老师
public class StringDemo {
  public static void main(String args []) {
    String strA = "mldn";
    String strB = new String("mldn").intern();
    System.out.println(strA == strB);    //true
  }
}

String对象(常量)池

/*
  本程序中所给出的内容全部是常量数据(字符串的常量都是匿名对象)
  所以程序在加载的时候会自动帮助开发者处理好相应的连接
*/
public class StringDemo {
  public static void main(String args []) {
    String strA = "www.mldn.cn";
    String strB = "www." + "mldn" + ".cn";
    System.out.println(strA == strB);    //true
  }
}
此图来源于李兴华老师
/*
  程序在加载时并不确定info是什么内容,因为程序在字符串连接的时候info是一个变量
  变量的内容是可以修改的,所以它不认为strB的结果是一个所需要的最终结果
  此时strB存在了运行时常量池
*/
public class StringDemo {
  public static void main(String args []) {
    String info = "mldn";
    String strA = "www.mldn.cn";
    String strB = "www." + info + ".cn";
    System.out.println(strA == strB);    //false
  }
}

字符串修改

/**
  在整个处理过程中,字符串常量的内容没有发生的改变,改变的只是一个String类对象的引用
  这种改变将有可能带来大量的垃圾空间
*/
public class StringDemo {
  public static void main(String args []) {
    String str = "www.";
    str += "mldn.";
    str = str + "cn";
    System.out.println(str);
  }
}
此图来源于李兴华老师

Java中的主方法

/**
  运行时参数
*/
public class StringDemo {
  public static void main(String args []) {
    for(String arg : args) {
      System.out.println(arg);
    }
  }
}
上一篇 下一篇

猜你喜欢

热点阅读