String 两种定义方法的区别
2016-09-02 09:24
176 查看
String s2=new String("123");
//编译时先去字符串常量池检查,是否存"123",如果不存在,则在常量池中开辟内存空间存放"123";如果存在,则不用重新开辟空间。然后在堆中开辟空间存放new出来的String实例,在栈中开辟空间命名s1,存放堆中String的内存地址,这个过程中将引用s2指向new出来的String实例
String s1="123";
//先去字符串常量池检查,是否存在“123”,如果不存在,在常量池开辟内存空间存放“123”,如果存在,在栈中开辟空间,命名s1,存放常量池中的“123”内存地址
代码如下:
package com.tjove.main;
public class StringDemo {
public static void main(String[] args) {
StringDemo demo=new StringDemo();
demo.practice();
}
void practice(){
String s1="123";
String s2="123";//s1,s2指向常量池中的同一个地址
String s3=new String("123");//s3指向堆内存中地址
String s4=new String("123");//s4指向堆内存中另一个地址,常量池中自始至终只有一个"123"
System.out.println("s1==s2:"+(s1==s2));
System.out.println("s1==s3:"+(s1==s3));
System.out.println("s1==s4:"+(s1==s4));
System.out.println("s3==s4:"+(s3==s4));
}
}
结果如下:
//编译时先去字符串常量池检查,是否存"123",如果不存在,则在常量池中开辟内存空间存放"123";如果存在,则不用重新开辟空间。然后在堆中开辟空间存放new出来的String实例,在栈中开辟空间命名s1,存放堆中String的内存地址,这个过程中将引用s2指向new出来的String实例
String s1="123";
//先去字符串常量池检查,是否存在“123”,如果不存在,在常量池开辟内存空间存放“123”,如果存在,在栈中开辟空间,命名s1,存放常量池中的“123”内存地址
代码如下:
package com.tjove.main;
public class StringDemo {
public static void main(String[] args) {
StringDemo demo=new StringDemo();
demo.practice();
}
void practice(){
String s1="123";
String s2="123";//s1,s2指向常量池中的同一个地址
String s3=new String("123");//s3指向堆内存中地址
String s4=new String("123");//s4指向堆内存中另一个地址,常量池中自始至终只有一个"123"
System.out.println("s1==s2:"+(s1==s2));
System.out.println("s1==s3:"+(s1==s3));
System.out.println("s1==s4:"+(s1==s4));
System.out.println("s3==s4:"+(s3==s4));
}
}
结果如下:
相关文章推荐
- String是一个对象,定义字符串有两种方法——它们的区别和联系
- java中的string定义的两种方法和区别
- String定义的两种方法的区别
- JS类定义原型方法的两种实现的区别
- Java String的两种初始化方法的一点区别
- JS类定义原型方法的两种实现的区别评论很多
- JS类定义原型方法的两种实现的区别
- java String 转 Long 两种方法区别
- JavaScript中String(a)和new String(a)两种生成字符串的方法的使用区别
- JS类定义原型方法的两种实现的区别评论很多
- java String 转 Long 两种方法区别
- String的两种实例化方法的区别
- 函数两种定义方法的区别
- 选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别
- JS类中定义原型方法的两种实现的区别
- 关于java基础类型与引用类型内存存储问题,以及string.intern()方法(String两种创建方式的区别)
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- JS类中定义原型方法的两种实现的区别
- String实例化的两种方法及其区别
- 函数两种定义方法的区别