String字符串存储:分析字符串是不可变对象的原因
String字符串存储
-
String字符串:存储分析
-
-
1.1源码分析:构造方法,用于创建对象;
//1,String的构造方法:String();
public String() {
this.value = "".value;
}
//2,String的构造方法:String(String);
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
//3,String的构造方法:String(char[]); //重点分析
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
/*
笔记:
1,根据构造方法3,可以看出,String内部维护了一个char[]数组,调用Arrays类的copyOf方法;
2,分析Arrays类;
3,分析copyOf()方法:该方法被static修饰,不能被子类重写;存放在内存的方法区,只有一份!
*/
-
1.2:字符数组存储:
-
字符数组:Arrays.copyOf();
-
该方法被static修饰,不能被子类重写;static修饰的方法,存放在方法区;
/**
* 总结:分析Arrays类:
*
*/
public class ArraysDemo01 {
public static void main(String[] args) {
//1.1 定义一个字符数组
char[] charArr=new char[5];
//1.2 给数组赋值
charArr[0]='h';
charArr[1]='e';
charArr[2]='l';
charArr[3]='l';
charArr[4]='o';
//1.3 遍历数组
for (char x: charArr) {
System.out.print(x);//hello
}
System.out.println("-----------------");
/**
* 用Arrays类的copyOf(char[],int i)方法:
* 1,参数类型:char[]数组,int类型;
* 2,返回值类型:char[];
* 3,该方法被static修饰;
*/
//1.4
char[] charArr1=Arrays.copyOf(charArr,5);
for (char c:charArr1) {
System.out.print(c);//hello
}
}
}
-
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律