JAVA——详述String实例化方式(直接赋值和构造方法)

10 篇文章 0 订阅

String类的实例化方式为两种,一种是直接赋值,一种是构造方法实现其实例化

直接赋值

String name1 = "Tim";
		String name2 = "Tim";
		System.out.println(name1==name2);

输出结果:在这里插入图片描述
String name2=“tom”;此时name1和name2共享常量池中的同一个数据,即两个变量的地址是一样的,所以输出结果name1和name2相等。
1、执行“String name1= ”Tim“;”后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;
2、执行“String name2= ”Tim“;”时,JVM会先检查常量池中是否已经存在了一内容为abc的空间,如果存在就直接让str2指向该空间,否则就会在开辟一个新的空间存放该字符串,上面的代码等同于下面代码:

public class homework {

	public static void main(String[] args) {
		String name1 = "Tim";
		String name2 = name1;
		System.out.println(name1);
		System.out.println(name2);
	}
}

如果此时再建立一个对象name3,name3的内容不是前面已有的变量所有的值,那么JVM会再开辟一个新的空间储存name3的变量,示例如下:

public class homework {

	public static void main(String[] args) {
		String name1 = "Tim";
		String name2 = "Tim";
		String name3 = "Tom";
		System.out.println(name1);
		System.out.println(name2);
		System.out.println(name3);
	}
}

1、执行String name1 = “Tim”;后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;
2、执行String name2 = “Tim”;时,JVM会先检查常量池中是否已经存在了一个内容为abc的空间,如果存在就直接让str2指向该空间, 否则就会在开辟一个新的空间存放该字符串;
3、执行“String name3 = “Tom”;”时,JVM会先检查常量池中是否已经存在了一个内容为def的空间,由于不存在,所以JVM在常量池新开辟一个空间存放def并让str3指向该空间;

构造方法实现其实例化

通过此种方式实现的String类型的实例化每一次new都创建一个新的对象代表着一个堆的建立。

public class homework {

	public static void main(String[] args) {
		String name = "Tom";
		String name1 = new String("Tom");
		String name2 = new String("Tom");
		System.out.println(name);
		System.out.println(name1);
		System.out.println(name2);
	}
}

1、执行“String name = ”Tom“;”后,JVM在常量池中开辟存放abc的空间并让str指向该空间;
2、执行“String name1= new String(“Tom”);”时,JVM直接创建一个新的对象并让str1指向该对象;
3、执行“String name2= new String(“Tom”);”时,JVM再次创建一个新的对象并让str2指向该对象;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值