java中String的两种初始化方法
来源:互联网 发布:中建五局投资公司 知乎 编辑:程序博客网 时间:2024/05/09 19:35
字符串可能是任何程序语言中都会出现的对象,java中创建并初始化一个String对象,最常见的方式有两种:
String str=new String(“XXX”);
String str=”XXX”;
二者看似相同,其实有很大的差别。
前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象;后者则会在栈中创建一个对象引用变量str,然后 查看字符串池中是否存在”XXX”,如果没有,则将”XXX”存放字符串池,并令引用变量str指向它;如果已经有”XXX”,则直接令str指向它。这样充分利用 了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对 象。
下述代码展示了二者的不同:
Java代码
1. public class Main {
2.
3. /** *//**
4. * @param args the command line arguments
5. */
6. public static void main(String[] args) {
7. String strA = “abc”;
8. String strB = “abc”;
9. String strAA = new String(“abc”);
10. String strBB = new String(“abc”);
11. System.out.println(strA == strB);
12. System.out.println(strAA == strBB);
13. }
14. }
输出结果:
true
false
字符串限定是指String s = “abc”这种形式,也就是说String s1 = “abc”;
s 和 s1 都是指向同一个内存地址
String s = “abc”;
这句是定义一个String变量s,jvm会先去字符串池中找有没有”abc”,有的话就把s指向”abc”,没有就会先在池中创建一个,再让s指向”abc”。
String s = new String(“abc”);
这句是先定义一个String变量s,然后在内存中分配新的空间”abc”再让s指向这个内存地址。
String str=new String(“XXX”);
String str=”XXX”;
二者看似相同,其实有很大的差别。
前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象;后者则会在栈中创建一个对象引用变量str,然后 查看字符串池中是否存在”XXX”,如果没有,则将”XXX”存放字符串池,并令引用变量str指向它;如果已经有”XXX”,则直接令str指向它。这样充分利用 了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对 象。
下述代码展示了二者的不同:
Java代码
1. public class Main {
2.
3. /** *//**
4. * @param args the command line arguments
5. */
6. public static void main(String[] args) {
7. String strA = “abc”;
8. String strB = “abc”;
9. String strAA = new String(“abc”);
10. String strBB = new String(“abc”);
11. System.out.println(strA == strB);
12. System.out.println(strAA == strBB);
13. }
14. }
输出结果:
true
false
字符串限定是指String s = “abc”这种形式,也就是说String s1 = “abc”;
s 和 s1 都是指向同一个内存地址
String s = “abc”;
这句是定义一个String变量s,jvm会先去字符串池中找有没有”abc”,有的话就把s指向”abc”,没有就会先在池中创建一个,再让s指向”abc”。
String s = new String(“abc”);
这句是先定义一个String变量s,然后在内存中分配新的空间”abc”再让s指向这个内存地址。
阅读全文
0 0
- java中String的两种初始化方法
- java中String的两种初始化方法
- java中String的两种初始化方法
- Java String的两种初始化方法的一点区别
- java中String初始化的两种方式
- java中Map和List初始化的两种方法
- java中Map和List初始化的两种方法
- java中Map和List初始化的两种方法
- Java 数组初始化的两种方法
- 初始化String的两种方法有何异同
- [Java]java中Map和List初始化的两种方法
- Java中String的初始化
- Java中String类的初始化和方法
- vector<char> 容器初始化 string 对象 两种方法
- C++中string字符串切割的两种方法
- java String字符串类的两种实例化方法
- java中的string定义的两种方法和区别
- Java中String类对象的初始化
- Add to List 198. House Robber
- Linux信号专题FAQ
- 以太坊挖矿破解抽水小工具 v8.5 (完美兼容 Claymore 原版内核,长沙矿工,圣骑士,中国矿工,ETH 超级矿工等所有 ETH 挖矿软件)
- java JDK检验安装是否成功
- 分页
- java中String的两种初始化方法
- 《笨办法学python》加分习题40——我的答案
- C. Coconut 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 机器学习最优化算法的演变,FTRL一路走来,从LR -> SGD -> TG -> FOBOS -> RDA -> FTRL
- 一个类让你了解 kotlin 最基本的语法
- 「Python」os.environ
- CentOS6.9 简化版安装 tmux 步骤说明
- A. Banana 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- Linux命令学习20170912