<span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">类的定义方法:</span>
String str = new String ("hello");
只不过它也可以: String str = "hello";Java中基本类型就8个——byte、 short、 int、 lang
float、 double
boolean
char
那么,两种定义类的方法有什么区别吗?
有的——
String str = new String ("hello"); 是new了一个对象 在堆空间分配了一块内存,把对象放在里面,str 指向 这个对象String str = "hello"; 没有创建对象,直接是str 指向了 data segment中的字符串“hello”,而且你再定义一个str2 = “hello”,那么这个时候,系统会先检测data segment里是否已经有了“hello”,如果有了那么str2直接指向这个“hello”,这是系统的优化。
最常见的区别:
String s1 = "hello";
String s2 = "hello";那么s1 == s2得到的是trueString s3 = new String ("hello");
String s4 = new String ("hello");而s3 == s4得到的是false因为“==”比较的是地址,s3,s4指向了两个不同的对象,地址不一样
而s1,s2都是指向的“hello”,地址一样
用equals比较就没问题了
s1.equals(s2) // true
s3.equals(s4) //true这才是对字符串进行比较!
本文详细解释了Java中两种不同的字符串定义方式:使用new关键字创建对象与直接赋值,并探讨了这两种方式的区别,特别是它们在内存分配上的不同,以及如何正确地比较字符串。

被折叠的 条评论
为什么被折叠?



