java如何初始化字符串_如何使用“”初始化字符串?

问题

如果String是一个类,就像任何其他类一样,如何使用双引号初始化它?

#1 热门回答(286 赞)

Java String is Special> Java的设计者决定在面向对象的语言中保留原始类型,而不是将所有东西都作为对象,以便提高语言的性能。基元存储在调用堆栈中,这需要较少的存储空间并且操作起来更便宜。另一方面,对象存储在程序堆中,这需要复杂的内存管理和更多的存储空间。出于性能原因,Java的String设计在原语和类之间。

例如

String s1 = "Hello"; // String literal

String s2 = "Hello"; // String literal

String s3 = s1; // same reference

String s4 = new String("Hello"); // String object

String s5 = new String("Hello"); // String object

31710e9f-fc10-4ca1-bda8-9cb94445f1de.png

**注意:**String literals存储在公共池中。这便于共享具有相同内容的字符串的存储以节省存储。通过新运算符分配的对象存储在heap中,并且没有共享相同内容的存储。

#2 热门回答(47 赞)

Java将String视为特殊类,你可以通过两种方式进行初始化

直接分配文字字符串a ="adsasdf";

使用新关键字的其他对象String a = new String("adsasdf");

如果你想与==sign比较,你需要特别小心:

String a = "asdf";

String b = "asdf";

System.out.println(a == b); // True

System.out.println(a.equals(b)); // True

String a = new String("asdf");

String b = new String("asdf");

System.out.println(a == b); // False

System.out.println(a.equals(b)); // True

这是因为在第一种情况下,对象a和b保存在名为literal pool的内容中,并且它们都引用相同的对象,因此它们在两个方面都是相同的。

但在第二种情况下,a和b引用不同的对象,就像我们初始化任何其他对象时一样。因此,与==操作员相比,它们是不相等的,而它们的值相等。

#3 热门回答(17 赞)

字符串在JLS中得到特殊处理:它是文本存在的两种非原始类型之一(另一种是Class)*。

字符串文字是对类String [...]的实例的引用。

*好吧,还有the "null type",它的"null literal"null,但大多数人并不认为"null type"是一个合适的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值