1.创建string对象的两种方式
01直接赋值
02new 关键字 构造方法
public class S2 {
public static void main(String[] args) {
//直接获取一个字符串
String s = "小橙是大帅哥!";
System.out.println(s);
//创建一个空的字符串
String s1 = new String();
System.out.println("*" + s1 + "*");
//传递一个字符串根据,根据传递的字符串内容再创建一个字符串对象(确实是脱裤子放屁)
String s2 = new String("123");
System.out.println(s2);
//传递一个字符串数组,根据字符串数组的内容再创建一个新的字符串对象
char[] s3 = {'a','b','c','d'};
String s4 = new String(s3);
System.out.println(s4);
//创建一个字节数组,根据字节数组的内容再创建一个新的字符串对象
//应用场景:以后网络当中传输的数据都是字节信息
//一般要把字节信息转换为字符串,会用到这种方式
byte[] s5 = {45,85,89,62,54};
String s6 = new String(s5);
System.out.println(s6);
}
}
运行结果
小橙是大帅哥!
**
123
abcd
-UY>6
2.修改字符串的方法
一般字符串创建之后是不允许修改的
首先将字符串的内容变为字符数组
“abc” = {‘a’,‘b’,‘c’};
数组的值是可以变化的直接自改数组就可以了
然后根据上面的第四条方法,将其拼接为字符串就可以了
3.创建对象的内存图
复习回顾一下
栈内存:方法运行的时候进栈,执行完毕出栈
堆内存:new出来的对象都是在堆内存中
新学
string table(串池)
当双引号进行赋值时,系统会自动检查数据是否在堆内存中的串池,如果不在重新创建,如果在直接复用
只要new一次就会在堆内存中开辟一个新的空间