暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
我躺好了
1楼

常量池里面的"北京尚学堂"和value[]是什么关系呀,是说主体是value[],然后"北京尚学堂"是一个标识吗?因为g1和g2指向了"北京尚学堂",而g3指向了value[]

image.png

尚新途

相当于value[]里存放了"北京尚学堂"

.
2楼
老师这里value不是变量吗 为什么这里把它放在了常量池里面 还有这里的value属于常量池的哪一种啊?

微信截图_20230101183225.png

尚新途

因为String的底层是一个char类型的数组,你在new的时候,是在堆中放了一个char类型的数组,常量池里放了一个value[]是为了让同学清楚,这个String也是底层为char类型的一个数组,不管是new的,还是直接放在常量池里面的,都是底层为char类型的一个数组。

value[]是一个class文件常量池

MKH
3楼

我们可不可以说g1和g2是同一个对象?

尚新途

可以说g1和g2的值是一样的,他们指向的都是同一个内存地址,直接通过g1==g2比较的结果为true,因为==会判断他们的内存地址是否相同

hao
4楼

1656420744291853.png

equals方法在没有重写的情况是默认比较两个对象的哈希值,但视频中的g1和g3很明显地址是不一样的,为什么会返回true?

尚新途

String类自己就重新了equals方法了,equals方法本身是Object类的,String类重写了

Dolores
5楼

g1和g2不都是指向常量池中的“桂林电子科技大学”吗,为啥内存地址不一样?image.png

尚新途

你调错方法了,这个方法是生成字节数组,每一个字符串生成一个新的字节数组

应该用hashCode方法

JackieYuri
6楼

g1和g2的地址为什么是一样的

image.png

尚新途

代码截图完整,让我看看g1  g2是什么,。

尚新途

image.png

尚新途

因为jvm在编译阶段会判断常量池中是否有 "北京尚学堂" 这个常量对象如果有,g2直接指向这个常量的引用,所以他们的地址是相同的 。

郭学宝
7楼
String g3 = new String("北京尚学堂");

为什么报错呢?

尚新途

老师,不用回复了 我找出问题了?不能命名关键字

尚新途

好的

小樓一夜聽春雨
8楼

捕获.JPG这里没看懂哇,泪奔


g1 == g3 返回的是false,明明都是“北京。。。”


图中画的value[]怎么理解,看图三method area里边“北京。。。”跟value[]不是一回事吗?

尚新途

g1==g3是比较的内存地址,比的是地址,肯定是不同的,g3已经new了,new就是在堆里新开辟了一块空间。value[]是一个char类型的数组存放的是字符串的值、g1和g3虽然值相同,但是地址是不同的。

蜕变
9楼
String s = new String("北京尚学堂");

老师,这个代码里是有两个对象么?一个是new,一个是传入的?

尚新途

一个。New了一个String类型的对象s,然后给它传一个参数,相当于赋值。

zjshaopku
10楼

因为String的时候首字母必须大写,但是在IDEA中输入小写的string的时候,string不会自己转换成首字母大写或者给提示选项,只会显示红色下划线报错。

想问下在IDEA中是否可以设置成输入string会自动切换成大写的设置?类似sout可以直接输出print代码,psvm输出main方法一样,还是说string这个必须要自己注意大小写?谢谢

尚新途

IDEA中是否可以设置成输入string会自动切换成大写

否,可以快捷键手动切换大小写。


只想安静的生活
11楼

老师在遍历Str1和Str2时,获取的结果是abcdefg,为啥不是一串地址?老师在源码里面也没找到重写后的toString方法


image.png

尚新途

因为String是一个不可变得类,你在打印的时候会默认的去调用toString方法的。

尚新途

因为String是一个不可变得类,你在打印的时候会默认的去调用toString方法的。

微信用户
12楼

老师,所以String类是重写了toString方法,retun this ,this就是String类的这个对象所以直接把String的值返回回去吗

尚新途

对,可以这样理解

zsa
13楼

string底层是怎么实现的 啊老师,,,,,,

尚新途

现阶段不需要知道底层实现,学到后面可以看一下源码。现在的话看不懂源码就不强求了

神经蛙
14楼

这段代码无法执行?而且还有错?                                    

1595474815719344.png

尚新途

图片.png

把类名改了

尚新途

改了类后不提示错误了,但仍然无法执行,咋回事呢?

image.png

尚新途

你准备干什么,String类和你的St类又没有关系,你能这样new吗?

微信用户
15楼

4.png

老师请问一下,equals方法在没有被重写之前,不就是比较是不是同一个对象吗,str1是一个字符串对象,str2是一个字符串常量,两者肯定不是一个对象,为啥在使用equals方法的时候就返回true了,不是应该返回false吗,不是一个对象的

尚新途

String类已经重写了equals方法只要两个字符串里面的字符是一样的那就返回true

自我检测(5S)