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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

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

3.StringBuilder的作用,为什么要使用StringBuilder

28 个回复

正序浏览
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:引用数据类型包括类,接口和数组,而Sring属于类,是引用数据类型。
     字符串效果上相当于字符数组,数组的长度确定以后是不能改变的,所以字符串的长度不可变。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:对于String s = new String("abc")分为两种情况:
  (1)如果常量池中有字符串abc,那么只会字内存中创建一个对象。

   
  (2)如果常量池中没有字符串abc,那么在常量池中创建一个内容为abc的对象,但是遇到了new关键字,则还是会在内存(不是常量池)中创建一个对象,然后将对象返回给引用s。
   对于String s = "abc"是在常量池中创建了一个对象

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个可变的字符串类,可以用它存储字符串。
      因为用String每次对字符串拼接,都会产生一个新的对象,会比较浪费空间,使运行速度下降,
       StringBuilder是一个可变的字符串类,可以在原有的基础上拼接字符串。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型,因为字符串表现是形式上是字符数组,底层是字节数组

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个可变的字符串类,可以用它存储字符串。
       因为String类每次拼接字符串都会创建一个新的对象,对程序的执行效率有影响,StringBuilder每次拼接都是在缓冲区中,自始至终就一个对象,效率高于String
回复 使用道具 举报
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");这句代码创建了几个对象?分别在内存中的哪个区域创建?
两个。
new String(), 这里是通过new创建了一个String对象,放在堆中
abc,也是一个对象,但是他是放在字符串池里面

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

3.StringBuilder的作用,为什么要使用StringBuilder?
StringBuilder叫字符串缓存区对象,使用时可以不断添加字符、字符串等已有内容。
需要使用时调用toString()获得对象里的所有字符串。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
String类中的成员变量都被封装了,并且在类中没有提供set/get公共方法去修改这些值,
所以字符串一旦初始化后就不能修改,并在外部无法访问到这些成员变量。
而且其中的变量都是有final修饰,等于就是常量,不能修改的。




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

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

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



3.StringBuilder的作用,为什么要使用StringBuilder
使用StringBuilder类相比String类,字符串类是可以改变的,
并且使用StringBuilder类可以提高效率,比如字符串的拼接和反转,都比String类快捷和方便。
回复 使用道具 举报
陈少勇 发表于 2019-6-5 19:04
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
解:String类是引用数据类型。因 ...

很棒呐
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

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


3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder每次拼接都在缓冲区中,一直就一个对象,减少内存的占用,也能提高效率。
回复 使用道具 举报
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";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");创建了两个个对象,一个在堆内存中创建,一个在堆内存中的字符串常量池中创建。
String s = "abc"创建了一个对象 ,在堆内存中的字符串常量池中创建。

3.StringBuilder的作用,为什么要使用StringBuilder
使用StringBuilder可以修改字符串的长度,当需要使用字符串拼接时使用StringBuilder中的方法append可以减少在堆内存中创建对象的次数,提高程序的执行效率。
回复 使用道具 举报

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

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder 主要作用是对字符串进行拼接;
        因为StringBuilder是一个可变的字符串,在进行字符串进行拼接操作时不会构建新的对象,省时省力省了内存空间。
回复 使用道具 举报
1.引用数据类型。因为字符串是放在常量池中,所以这就是原因?
2.2个对象,一个在常量池中,一个在堆内存中。
  1个对象,在常量池中。
3.StringBuilder每次拼接字符串都是在原有的基础之上进行改变,所以是对同一个对象进行的操作。减少内存的消耗,提高程序的执行效率。StringBuilder存储的字符串是可以改变的。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        答:引用数据类型。字符串对象在重新赋值时会创建新的地址来储存新的内容成为新的字符串对象,所以对于字符串对象来说长度和内容改变就不是原来的字符串了。

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

3.StringBuilder的作用,为什么要使用StringBuilder
        答:StringBuilder可变字符串对象,在被重新赋值时,不会重新创建新的对象,而是在将原来的字符串内容改为新的字符串内容。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
String字符串的长度不可变是因为,String赋值都是在常量池中生成一个新的对象,只要变更String的值就会在常量池中查找是否有这个值,如果没有这个对象,就生成一个新的对象

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的长度是可变的,当在遇到需要反复字符串拼接时,使用StringBuilder不会在常量池反复中创建对象,使其占用内存空间,影响运行的性能。
StringBuilder有着一些String没有的方法,可以使代码更便捷,如字符串的反转,使用String需要for循环和一些变量,如果使用StringBuilder只需要使用revser()方法就能简单的实现。String和StringBuilder之间可以互相转换,所以使用StringBuilder能使编写过程简单许多。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型,因为不同的字符串都各自开辟一个内存地址,若相同的话,则是共享同一个内存地址,因此他们的长度不可变。

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder作用是能够改变对象中的内容,其优点是内容拼接都是在缓冲区中,自始至终就一个对象,效率高于String。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答;String类是引用数据类型
字符串长度从开始其创建开始,其空间就是固定不可变得

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:使用StringBuilder进行字符串拼接,在缓冲区自始至终只有一个对象,执行效率较高
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型。
String字符串的长度不可变是因为,String赋值都是在常量池中生成一个新的对象,只要变更String的值就会在常量池中查找是否有这个值,如果没有这个对象,就生成一个新的对象

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

3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder的长度是可变的,当在遇到需要反复字符串拼接时,使用StringBuilder不会在常量池反复中创建对象,使其占用内存空间,影响运行的性能。
StringBuilder有着一些String没有的方法,可以使代码更便捷,如字符串的反转,使用String需要for循环和一些变量,如果使用StringBuilder只需要使用revser()方法就能简单的实现。String和StringBuilder之间可以互相转换,所以使用StringBuilder能使编写过程简单许多。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String类是引用数据类型;字符串的长度变了就是另一个对象了;


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

  String s = new String("abc");创建了2个对象;s在栈内存,“a,b,c”在堆内存的内存池中;

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

  String s = "abc";创建了1个对象,在堆内存;

3.StringBuilder的作用,为什么要使用StringBuilder
  
  作用是向缓冲区追加内容、将缓冲区的内容反转等;使用StringBuilder可以节省代码,减少内存占用

等;
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型。
字符串的长度不可改变,当定义生成好字符串,字符串会在常量池里开辟空间,
若长度发生改变则不是原来的字符串,需要新建。常量池会对字符串进行优化

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

答:这句代码创建了两个对象。其一new String("abc")由new在堆内存中开辟空间,其二“abc”存储于常量池中。

String s = "abc";创建了一个对象,“abc”存储于堆内存的常量池中。
3.StringBuilder的作用,为什么要使用StringBuilder

答StringBuilder是一个字符串缓冲区。它可以在原有的空间上继续拼接字符串内容,即减少了代码的编写又节省了内存的空间。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:引用数据类型包括类,接口和数组,而Sring属于类,是引用数据类型。
     字符串效果上相当于字符数组,数组的长度确定以后是不能改变的,所以字符串的长度不可变。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:对于String s = new String("abc")分为两种情况:
  (1)如果常量池中有字符串abc,那么只会字内存中创建一个对象。

   
  (2)如果常量池中没有字符串abc,那么在常量池中创建一个内容为abc的对象,但是遇到了new关键字,则还是会在内存(不是常量池)中创建一个对象,然后将对象返回给引用s。
   对于String s = "abc"是在常量池中创建了一个对象

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个可变的字符串类,可以用它存储字符串。
      因为用String每次对字符串拼接,都会产生一个新的对象,会比较浪费空间,使运行速度下降,
       StringBuilder是一个可变的字符串类,可以在原有的基础上拼接字符串
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,字符串长度不可改变,因为地址值不可改变。
引用数据类型的数据值会存在常量池里面,不同的引用值都有一个不同的地址值
若是字符串的值改变了会重新存在一块新的空间存在常量池里,所以字符串的长度不可变。

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


3.StringBuilder的作用,为什么要使用StringBuilder
StringBuilder属于类,是一个可变的字符序列
使用append就可以将任何基础类型转换成字符串,
或者将字符串转换成其他基础类型
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马