21.Java基础_String

风格不统一 提交于 2019-12-06 03:22:00

 

 

String类构造方法

 

 1 package pack1;
 2 //推荐使用直接赋值的方式得到字符串
 3 public class test {
 4     public static void main(String[] args) {
 5         //public String(): 创建一个空白字符串对象,不含有任何内容
 6         String s1=new String();
 7         System.out.println("s1:"+s1); //"s1:  "
 8 
 9         //public String(char[] chs):根据字符数组的内容,来创建字符串内容
10         char[] chs={'a','b','c'};
11         String s2=new String(chs);
12         System.out.println("s2: "+s2); //"s2: abc"
13 
14         //public String(byte[] bys): 根据字节数组的内容,来创建对象
15         byte[] bys={97,98,99};
16         String s3=new String(bys);
17         System.out.println("s3: "+s3);  // "s3: abc"
18 
19         //public s="abc"; 直接赋值方式创建字符串对象,内容就是abc
20         String s4="abc";
21         System.out.println("s4 "+s4); //"s4: abc"
22     }
23 }

 

String类特点:

 

变量s1,s2,s3,s4在main函数的栈内存中,他们指向堆内存地址。char数组首先在栈内存开辟空间,然后new String()操作在堆内存中创建索引变量ref(用来链接堆内存中数组的首地址),可以看出s1,s2指向的地址是不同的,但是他们的堆内存中的索引都指向char数组。再来看s3,s4,用String s=“abc”方式创建出来的对象,字符串会被存储在堆内存中的常量池,如果有别的对象也用该方式创建,并且字符串完全一致,则共享常量池内的该字符串。

注意:如果再来一句 s3="hdu"; s4的值会改变么?

 

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!