本文最后更新于2022年6月1日,已超过 1 年没更新!内容可能已失效,请自行测试。
String类简介
字符串严格意义上并不能算基本数据类型,JVM支持制造了一种可以简单使用的String类,并且可以像基本数据类型那样直接赋值处理
// String对象实例化 public class StringDemo { public static void main(String[] args) { String str = "yeyufan.cn"; System.out.println(str); } }
String类里面之所以可以保存字符串是因为定义了一个数组,每一个字符都存放在数组之中
JDK1.8以前String保存的是字符数组,JDK1.9以后保存的是字节数组
// 构造方法实例化 public class StringDemo2 { public static void main(String[] args) { String str = new String("yeyufan.cn"); System.out.println(str); } }
String本身包装的是一个数组,并且有两种对象的实例化形式:直接赋值,构造方法
字符串比较
// String相等判断 public class StringDemo3 { public static void main(String[] args) { String strA = "yeyufan"; String strB = new String("yeyufan"); System.out.println(strA == strB); } }
// 正确的String相等判断 public class StringDemo4 { public static void main(String[] args) { String strA = "yeyufan"; String strB = new String("yeyufan"); System.out.println(strA.equals(strB)); } }
字符串常量
任何一个使用""定义的字符串常量实际上描述的是String类的匿名对象
String类对象两种实例化方式比较
直接赋值的对象实例化模式
在程序中只需将一个字符串赋值给String类的对象就可以实现对象的实例化处理
public class StringDemo5 { public static void main(String[] args) { String strA = "yeyufan"; String strB = "yeyufan"; System.out.println(strA == strB); } }
此时比较的是内存地址,返回true.主要原因是Java底层有一个字符串池,在采用直接赋值的处理过程之中,对于字符串而言可以实现池数据的自动保存,提升操作性能
构造方法对象实例化模式
public class StringDemo6 { public static void main(String[] args) { String strA = new String("yeyufan"); String strB = new String("yeyufan").intern(); System.out.println(strA == strB); } }
String对象常量池
对象池的主要目的是实现数据的共享处理
Java中对象(常量)实际上可分为两种
- 静态常量池:程序加载的时候自动将此程序中保存的字符串,普通的常量类,方法全部进行分配
- 运行时常量池:当一个程序加载后,里面的一些变量,提供的常量池
// 观察常量池 public class StringDemo7 { public static void main(String[] args) { String strA = "yeyufan.cn"; String strB = "yeyufan" + "." + "cn"; System.out.println(strA == strB); } }
// 运行时运行时常量池 public class StringDemo8 { public static void main(String[] args) { String info = "."; String strA = "yeyufan.cn"; String strB = "yeyufan" + info + "cn"; System.out.println(strA == strB); } }
字符串修改分析
String中是一个数组,数组的最大特点是长度不可改变,当设置了一个字符串,此时会自动进行空间开辟
主方法组成分析
Java中的主方法组成比较复杂
- public:描述的是一种访问权限,主方法是一切的开始点,开始点一定是公共的
- static:程序的执行是通过类名称调用的,所以表示此方法由类直接调用
- void:主方法是起点,没有返回的可能
- main:固定的定义好的方法名称
- String args[]:字符串数组,可以实现程序启动参数的接收
Comments | NOTHING