Java中String="hello"和new String("hello')两种创建字符串的区别
2017-01-10 13:58
411 查看
1.创建String类的对象的两种方式:
1. ""直接赋值法
2. new关键字法
2.两种创建字符串的地址比较
String str="hello";
String str1="hello";
String str2=new String("hello");
String str3=new String("hello");
此时在创建str的时候会去检查常量池里面是否有"hello"这个字符串,如果有的话则不创建,直接地址指向,所以此时str==str1为true,str.equals(str1)为true;
用String str="";这种方式创建的字符串都是在常量池中存在。
用new String("")来创建的字符串都是在堆中开辟空间。
注:常量池:常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间
1. ""直接赋值法
2. new关键字法
2.两种创建字符串的地址比较
String str="hello";
String str1="hello";
String str2=new String("hello");
String str3=new String("hello");
此时在创建str的时候会去检查常量池里面是否有"hello"这个字符串,如果有的话则不创建,直接地址指向,所以此时str==str1为true,str.equals(str1)为true;
用String str="";这种方式创建的字符串都是在常量池中存在。
用new String("")来创建的字符串都是在堆中开辟空间。
注:常量池:常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间
相关文章推荐
- [java] "Hello"和new String("Hello")产生String对象的区别
- Java基础:创建String对象时,String s=new String("abc")和String s="abc"的区别
- java中,字符串String类型的""和null值的区别
- Java中创建字符串的两种方式的区别
- Java中String两种不同创建方式的区别及intern的用法
- Java String = "" 和 new String()区别
- Java中String两种不同创建方式的区别
- java基础——JAVA中创建字符串的两种方式的区别
- Java中String和String Buffer两种字符串类型之间的区别和联系
- Java中String直接赋字符串和new String的区别
- Java中String直接赋字符串和new String的区别
- java中字符串基本知识 String s=new String("abc")创建了几个对象?
- 使用双引号""创建Java字符串还是使用String构造函数?
- Java中String字符串toString()、String.valueOf()、String强转、+ ""的区别
- String字面值对象和构造方法创建对象的区别:String s = new String("hello")和String s = "hello";的区别
- java两种创建String对象的区别
- Java中String直接赋字符串和new String的区别
- Java 创建字符串String的各种方法以及区别
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- java中,char[ ] subStr=new char[8]是什么意思?跟用String创建的字符串有啥区别?