本文最后更新于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