A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2019-6-5 17:44  /  2230 人查看  /  28 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型
一个字符串对象在堆内存开辟空间或者在字符串常量池里,当长度改变,地址值将改变指向别的对象空间,就不再是原来的对象了。
虽然 String 的值是不可变的,但是它们可以被共享,字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
第一个创建了2个对象,一个指向堆内存开辟的对象空间,另一个字符串对象从堆内存对象空间指向字符串常量池的对象。
第二个创建了1个对象,指在堆内存里字符串常量池里的字符串对象。

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder 对象中的内容是可变的
可以轻松的进行本身反转(reverse)
StringBuilder和String可以相互转换
String类每次拼接字符串都会创建一个新的对象,对程序的执行效率有影响,
StringBuilder每次拼接都是在缓冲区中,自始至终就一个对象,效率高于String。
回复 使用道具 举报

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:引用数据类型;
        String类底层其实是对字符数组进行了封装操作,我们在操作时其实也就是在操作数组,既然是数组自然长度不可改变。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:两个对象, new String()在堆内存区域创建,"abc"常量池创建。
        一个对象,"abc"在堆内存区域创建一个常量池。

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder 主要作用是对字符串进行拼接;
        因为StringBuilder是一个可变的字符串,在进行字符串进行拼接操作时不会构建新的对象,省时省力省了内存空间。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String属于引用数据类型,由于字符串保存在堆内存中的字符串常量池,当修改字符串时其实是修改字符串名所对应的堆内存地址值。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");创建了两个个对象,一个在堆内存中创建,一个在堆内存中的字符串常量池中创建。
String s = "abc"创建了一个对象 ,在堆内存中的字符串常量池中创建。

3.StringBuilder的作用,为什么要使用StringBuilder
使用StringBuilder可以修改字符串的长度,当需要使用字符串拼接时使用StringBuilder中的方法append可以减少在堆内存中创建对象的次数,提高程序的执行效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String 是引用数据类型,因为String创建的字符串在字符串常量池中不能改变长度也不能改变内容,但是可以共享

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
创建了两个对象,一个new String 在堆区存放,"abc"引起来的就会在字符串常量池中创建

   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了一个对象, "abc"创建在字符串常量池中 String s = abc的内存地址

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的作用是可以创建一个缓冲区 ,可以随意添加字符串不会创建额外的对象
作用是 如果需要拼接很多String类型的字符串则需要创建很多对象,用StringBuilder可以节省内存空间
也有很多实用的方法,如字符串反转 多个字符串的拼接
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String类是引用数据类型。因为字符串的地址值不能改变,只可以用来公用。
2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
第一个创建了2个对象,一个指向堆内存开辟的对象空间,另一个字符串对象从堆内存对象空间指向字符串常量池的对象。
第二个创建了1个对象,指在堆内存里字符串常量池里的字符串对象。


3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder每次拼接都在缓冲区中,一直就一个对象,减少内存的占用,也能提高效率。
回复 使用道具 举报
陈少勇 发表于 2019-6-5 19:04
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
解:String类是引用数据类型。因 ...

很棒呐
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
String类中的成员变量都被封装了,并且在类中没有提供set/get公共方法去修改这些值,
所以字符串一旦初始化后就不能修改,并在外部无法访问到这些成员变量。
而且其中的变量都是有final修饰,等于就是常量,不能修改的。




2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
两个对象,一个在堆内存中,一个在堆内存的常量池中。

String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

创建了一个对象,在堆内存的常量池中。



3.StringBuilder的作用,为什么要使用StringBuilder
使用StringBuilder类相比String类,字符串类是可以改变的,
并且使用StringBuilder类可以提高效率,比如字符串的拼接和反转,都比String类快捷和方便。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型。因为每个String都有固定的地址值,但是能分享

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
两个。
new String(), 这里是通过new创建了一个String对象,放在堆中
abc,也是一个对象,但是他是放在字符串池里面

String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
一个。是放在字符串池里面

3.StringBuilder的作用,为什么要使用StringBuilder?
StringBuilder叫字符串缓存区对象,使用时可以不断添加字符、字符串等已有内容。
需要使用时调用toString()获得对象里的所有字符串。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马