问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在java中 String a = "ab"; String b = "a" + "b"; System.out.println(a==b); 的内存图解是怎样的?

发布网友 发布时间:2022-05-23 06:28

我来回答

4个回答

热心网友 时间:2023-10-15 15:35

栈中一个a,字符串常量池中一个"ab"。a指向"ab"。
栈中一个b,b指向字符串常量池的"ab"。

"a" + "b"这个会有一个运算的过程,现在jdk1.5以后在编译器有个优化,会自动吧+替换成StringBuilder的append,运算之后会把“ab”的引用返给b。然后“a”,"b"会被回收。

热心网友 时间:2023-10-15 15:35

"a"+"b"和"ab"都是常量,对编译器来说常量都会在编译过程中合并,即编译器会把String a="a"+"b";变成String a="ab";。所以编译出来的程序没有性能上的区别。

如果是两个变量相加情况就不一样了。

热心网友 时间:2023-10-15 15:36

丑了点~但是基本就是这个意思了

热心网友 时间:2023-10-15 15:36

返回true啊
a 和 b 是指向同一个地址的
java 中 == 比较俩个对象的地址。
...b ="b"; String c = a+b; System.out.println("ab"==c);

“ab”是新的匿名对象,所以返回的是false。java中==比较的是变量的地址,就好像C中的指针,指针地址一样就返回true的,你这是两个不同的String对象,肯定地址不同了。如果要比较内容就用equals方法。

string a = "a"; string b = "b"; a = b; 创建了几个对象

string是不可变的。string a = "a"; string b = "b"; a = b;这样创建了两个字符串常量,对象a指向字符串常量"a",对象b指向字符串常量"b",然后再把a指向"b"。实际上只有两个字符串。

java新手请教java大师: string A=a;string B=a; A=B吗?

String str="abc"; * 这种情况是引用数据类型,引用数据类型肯定存放在堆中 栈中放置的是参数变量而不能放对象 对象只能放在堆中 它只创建一个对象 在堆中创建一个对String类的对象引用变量str(引用变量肯定是存放在堆里的),然后查找栈中是否有"abc",若没有则将"abc"存放进栈,并令str指向...

...String a = "杨浦区黄兴路长阳路"; String b= "黄兴路";

使用String类中自带的contains或者是indexOf函数来做!

String a = "a"; String b = "a"; 为什么a==b true a.equals(b)==true...

a==b比较的是栈中的值,只不过这种赋值方式是不在堆中开辟新的内存,而是统一放在常量区里 每次赋值时,都会检查常量区中是否有该值,若没有,则开辟一块新的内存,若有,则直接把此内存的地址赋予 所以a==b为true,因为他们的内存地址相同 ...

关于String a = "AA";和String b = new String("AA");的区别

原因:运行出现的字符串常量,若是在常量池中出现过,则JVM会认为同一个对象,以节省内存开销,所以这两个字符串会被认为是同一个对象。第5种 String a="abcdef"; String b=""; String c=a+b; System.out.print(c=="abcdef");结果:false 原因:编译时,先将"abcedf"放在常量池中,而c...

...男'; String b="女"; String c="a+b"; System.out.println(c);_百 ...

你这个就是变量赋值 String c = "a+b";c的值就是字符串"a+b"它会把a+b当做一个字符串 而不会对a+b进行运算;要想输出男女的话 就得 String c = a+b; 这样c的值就为男女了 满意请采纳 多谢!!

String a="a"; String b="b"; a=a+b; 这里共创建了几个对象?

而且是进入常量池的。这个问题涉及到了字符串常量池和字符串拼接。只创建了一个对象,在字符串池只会有一个对象。因为它是一行定义的对象,编译时只会初始化一次字符串缓冲池的数据。如果是 String a="a";String b="b";String c="c";String d=a+b+c;这里就创建了4个对象。

java中String a = new String("abc");这行代码中创建了几个对象,String...

数组和对象都是在堆中生成的,栈中保存的都是一些基本类型的数据和数组,对象的引用.堆中一共产生四个对象 分别是 引用a指向的对象 引用b指向的对象 还有两个没有引用的对象"abc" .

java中比较两个字符串,例如String A[0] = "ab"; A[1] = "cd"; S

//比较字符串用 == 或者equals()例子: if(字符串1 == 字符串2){ // 相等}或者 if(字符串1.equals(字符串2)){ //相等 }

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求游戏《寂静岭》中好听的游戏配乐,最好是纯音乐 A8 6500 最高支持什么显卡 加条内存组成双通道 对游戏有多大提升... ...追了四个多月了、她也喜欢我。我们俩个在一起也上了床…但是我是... 和喜欢7年的女孩表白后女生说给她点时间,但是又没说什么时间回复我。她... 说一个人很有气质`是什么样的呢` 邢台周边地区的苹果是什么价格 太行百果园地址在哪里? ...时最后香的形状是两边低中间高,这代表什么意思呀?麻烦知..._百度知... 染色体的组成为( )A.DNA和蛋白质B.蛋白质和糖类C.基因和蛋白质D.基 ... 监控器被接入后黑屏的原因 java 中变量在内存中是什么结构 中通打印助手打印电子面单怎么用 中通公众号有个发件人下单后可以自助打印快递单的,要连接蓝牙打印机。问题来了打印机需要特定型号吗 做完茶叶蛋的酱油水还能下次用吗 荷航一飞机机长在厦门机场着陆时失能 是啥意思 厦门高崎机场纱网视角!看飞机迎面飞来降落~ 飞机在厦门机场降落为什么要转几圈 我专科学计算机的,本科学金融管理,是自考专升本的那种,我想问我能考湖南的农信社吗? 我是永州职业技术学院金融管理专业的专科生。我想参加专升本,对口的学校是湖南涉外经济学院,这个学校是 湖南金融管理与实务专升本考什么 荣耀magic3至臻版的视频只能录制20分钟吗? 和平精英荣耀magic3为什么录不了像 我左脚脚心张了个包,很痒【急急急,追加20分】 你欺骗谁用古文怎么说 脚上长水泡挑开疼穿些痒用什么药??? 脚上不停地长水泡是不是会引发灰指甲啊 古代谁怎么说的 最近左脚脚底起了这些东西,这是啥,用不用去医院 左脚脚心疼,不知道是不是因为脚趾头起水泡,走路时左脚在后,脚心就疼,走多几步就不疼了,一不走,一会 脚上长水泡,有点痒,怎么处理?小小的水泡好痒,左脚会痒右不会痒。 java在创建继承的类的对象时 内存到底是什么样子 键盘轴的分类和区别是什么 二次型经可逆线性变换和正交线性变换化为标准型有什么区别? ·什么是正交变换? 线性代数 什么是正交变换 为什么经过正交变换的矩阵A B是相似的 如何证明抽样分布定理中所做的线性变换为正交线性变换 用正交线性变换法化二次型为标准型 迪丽热巴总是爱捂胸口,这是为什么? 用正交变换,将二次型f=x1^2+x2^2+x^3+4x1x2+4x1x3+4x2x3化为标准型 利用正交线性变换化二次整型f(x1,x2,x3)=3x1^2 2x2^2 2x3^2 2x2x3为 为什么我的ps cs5的信息是像素信息,我想要测量矩形选框内的尺寸都不知道是多少,怎样让信息显示的是厘米? 什么是线性变换 请讲得通俗一点好吗 二次型化标准型 正交线性变换,已经将正交矩阵Q求出,最后一步正交线性变换X=PY得到标准型,具体何求 线性变换的定义 美容院抗衰仪器超声聚能炮面部抗衰怎么样呢? 雪然的超声炮抗衰项目做几次才有效? 转述句是什么意思啊例:小红说我必须把教室打扫干净? 转述句、直述句是什么意思? 把曾经追过的女孩子照片拼成爱心有什么纪念意义 我的手机是华为荣耀畅玩4的,明明没有插耳机但有一个耳机的图标,听