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");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:(1)创建了两个对象,s在堆内存创建,""里面的abc在字符串常量池里创建。
      (2)创建了一个对象,在字符串常量池中创建。
3.StringBuilder的作用,为什么要使用StringBuilder
答:String类每次拼接字符串都会创建一个新的对象,对程序的执行效率有影响,StringBuilder每次拼接都是在缓冲区中,自始至终就一个对象,效率高于String。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
解:String类是引用数据类型。因为底层原理是由字节数组(byte[])组成,一个字符串对象在堆内存开辟空间或者在字符串常量池里,当长度改变,地址值将改变指向别的对象空间,就不再是原来的对象了。

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

3.StringBuilder的作用,为什么要使用StringBuilder
解:可变字符串序列。String每次拼接字符串都会创建新的对象,浪费时间、空间。用StringBuilder的话,不需要创建对象,只需要添加就可以改变内容。

点评

66666  发表于 2019-6-24 14:31
回复 使用道具 举报 2 0
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String为引用数类型,因为地址值不可更改,只能创建新的地址


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

String s = new String("abc");创建了两个对象,new String会在堆内存中创建地址值,“abc”会在常量池中创建字符串常量

String s = "abc";创建了一个对象,在常量池中创建一个字符串常量

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

StringBuilder中的对象内容时可变的,使用StringBuilder可以减少内存占用,提高效率
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:是引用数据类型,因为字符串的引用地址值不可改变,所以当长度改变将创建新的地址值。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答: String s = new String("abc");创建了两个对象,new String 会在堆内存中开辟空间,创建新的地址值,"abc"会在常量池中创建字符串。
     String s = "abc"; 创建了一个对象,在常量池中创建一个对象。
3.StringBuilder的作用,为什么要使用StringBuilder
答:可变的字符串序列
    StringBuilder每次拼接都在缓冲区中,一直就一个对象,提高效率,减少内存占用。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:类属于引用类型,即String类属于引用类型。字符串在堆内存中创建,当字符串的长度发生改变那么所指向的也不是当前对象了。

2.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:String s = new String("abc”);创建了三个对象,“”中的abc在堆内存中的字符串常量池    开辟空间,new String()在堆内存中开辟一块空间。
        String s=“abc”,如果在堆内存中的字符串常量池中已经存在属于abc的区域,那么会   直接引用她的地址值,如果常量池没有属于abc的区域将会创建属于abc的区域。

3.StringBuilder的作用,为什么要使用StringBuilder
答:当一个字符串需要多次的拼接时,使用String每进行一次拼接都需要开辟一块新的内存,使用StringBuilder拼接不用开辟新的内存,可在当前的StringBuilder对象上直接拼接,提高了效率。
  
回复 使用道具 举报
1.String是引用数据类型,字符串属于常量,运行过程中不可变

2.两个对象,分别在堆内存中和字符串常量池中创建对象,String s = "abc";创建了一个对象于字符串常量池中。

3.创建对象,对字符串进行拼接反转等功能,使用该对象对字符串进行拼接可以减少对象的创建,提高程序执行效率。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String 类是引用数据类型。String 类 构造的字符串,是一个字符串常量,不能改变长度。

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

答:第一个,创建了两个对象,“abc”存在字符串常量池中,而new出来的对象,存在堆中。
第二个,创建了一个对象,在字串常量池中。

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder是一个字符串缓冲区,较String的不可改变的特性,对于数据量大的情况下,比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就可以将任何基础类型转换成字符串,
或者将字符串转换成其他基础类型
回复 使用道具 举报
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";创建了几个对象,分别在内存中的哪个区域创建?

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

String s = "abc";创建了一个对象,“abc”存储于堆内存的常量池中。
3.StringBuilder的作用,为什么要使用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类是引用数据类型。
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";创建了几个对象,分别在内存中的哪个区域创建?
答:String s = new String("abc");这句代码创建了两个对象,new出来的对象在堆内存中,"abc"创建在常量池中
String s = "abc";这句代码在常量池中创建了一个字符串对象s

3.StringBuilder的作用,为什么要使用StringBuilder
答:使用StringBuilder进行字符串拼接,在缓冲区自始至终只有一个对象,执行效率较高
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型,因为不同的字符串都各自开辟一个内存地址,若相同的话,则是共享同一个内存地址,因此他们的长度不可变。

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

3.StringBuilder的作用,为什么要使用StringBuilder
答:StringBuilder作用是能够改变对象中的内容,其优点是内容拼接都是在缓冲区中,自始至终就一个对象,效率高于String。
回复 使用道具 举报
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类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        答:引用数据类型。字符串对象在重新赋值时会创建新的地址来储存新的内容成为新的字符串对象,所以对于字符串对象来说长度和内容改变就不是原来的字符串了。

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

3.StringBuilder的作用,为什么要使用StringBuilder
        答:StringBuilder可变字符串对象,在被重新赋值时,不会重新创建新的对象,而是在将原来的字符串内容改为新的字符串内容。
回复 使用道具 举报
1.引用数据类型。因为字符串是放在常量池中,所以这就是原因?
2.2个对象,一个在常量池中,一个在堆内存中。
  1个对象,在常量池中。
3.StringBuilder每次拼接字符串都是在原有的基础之上进行改变,所以是对同一个对象进行的操作。减少内存的消耗,提高程序的执行效率。StringBuilder存储的字符串是可以改变的。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马