Java中一旦被赋值_《java入门》第一季之类(String类字符串一旦被赋值就没法改变)...

本文深入探讨了Java中的String类,强调其不可变性,解释了字符串赋值过程中内存的分配,并通过示例展示了`==`与`.equals()`的区别。讨论了不同创建方式下字符串对象的数量,帮助理解Java内存模型。
摘要由CSDN通过智能技术生成

毫无疑问,String类是java里面最重要的类之一。因此它有很多方法需要了解和掌握。

字符串一旦被赋值,值就不能发生改变:

package cn.itcast_02;

/*

* 字符串的特点:一旦被赋值,就不能改变。

*/

public class StringDemo {

public static void main(String[] args) {

String s = "hello";//hello是在字符串常量池中待着的。赋值hello后就没法在改变了。

s += "world";

System.out.println("s:" + s); // helloworld

}

}

整个过程开辟了三个空间。通过图片看一下赋值过程。

b21c28f9d01200fab6a4fcb9f489821c.bmp

/*

* String s = new String(“hello”)和String s = “hello”;的区别

* 前者会创建2个对象(hello在常量池中创建对象,再在堆内存中创建(new出来的),然后new出来的对象指向字符串常量池中的对象),后者创建1个对象,

直接指向字符串常量池中。

*

* ==:比较引用类型比较的是地址值是否相同

* equals:比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。

*/

public class StringDemo2 {

public static void main(String[] args) {

String s1 = new String("hello");

String s2 = "hello";

System.out.println(s1 == s2);// false

System.out.println(s1.equals(s2));// true

}

}

/*

* 看程序写结果

*/

public class StringDemo3 {

public static void main(String[] args) {

String s1 = new String("hello");

String s2 = new String("hello");

System.out.println(s1 == s2);// false

System.out.println(s1.equals(s2));// true

String s3 = new String("hello");

String s4 = "hello";

System.out.println(s3 == s4);// false

System.out.println(s3.equals(s4));// true

String s5 = "hello";

String s6 = "hello";

System.out.println(s5 == s6);// true

System.out.println(s5.equals(s6));// true

}

}

字符串到底创建几个对象问题,再以后专题中再做详细整理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值