Java中String创建方式及其区别

创建方式

方法一:

String name ="wjq";

方法二:

String name =new String("wjq");

区别

为了正确充分阐述两者之间的区别,不妨多创建几组字符串。代码如下:
需要说明的是:引用类型比较地址的常用方法为(引用类型变量1==引用类型变量2),结果为boolean型,即true/false。

public class Test {

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

}

结果为:
true
false
false
false

直接赋值的方法中,变量的首地址储存在栈中,而内容存在于常量池中。在赋值时,如果常量池中没有与要赋值对象的内容,则在常量池直接创建新的空间赋给变量,反之,如果存在与要赋值对象相同内容,则直接将字符串的地址返回。
而第二种方法,变量的首地址储存在栈中,而内容存在于堆中。只要定义新的变量,无论内容是否相同,都在栈中开辟空间储存首地址,在堆中储存数。
借图辅助理解:
在这里插入图片描述

发布了19 篇原创文章 · 获赞 0 · 访问量 460

猜你喜欢

转载自blog.csdn.net/zzu957/article/details/104850107
今日推荐