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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

2.什么情况下会用到Static关键字?

3.静态代码块会在什么时候执行?

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

26 个回复

倒序浏览
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型.String类型数据是保存在字符串池中的,重新赋值并不会改变而是新创建一个字符串,原内容不会改变.

2.什么情况下会用到Static关键字?
当在类中创建成员变量/方法的时候,里面的内容是需要共享的,这时可以用到static关键字.

3.静态代码块会在什么时候执行?
static{}会在创建第一个对象的时候执行,仅此执行一次.

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

String s = new String("abc")创建了2个对象,存储在堆内存数据中.
String s = "abc";创建了1个对象,存储在字符串池中.
回复 使用道具 举报
本帖最后由 zsgdn 于 2021-11-1 16:02 编辑

1.是引用数据类型。因为底层是数组,所以不可变。
2.当对象共享一个变量值得时候
3.加载类的时候
4.创建了两个对象。分别在堆中和方法区的常量池中。创建了两个对象,分别在栈中和常量池中。
回复 使用道具 举报
1、String是引用数据类型,字符串是常量,创建后存在堆内存的字符串常量池中,不可改变,长度固定
2、当成员变量需要给所有对象共用时可以使用static修饰,当成员方法需要直接用类明调用时,如工具类,可以用static修饰成员方法
3、静态代码块在类加载的时候执行
4、两个。"abc"在堆内存的字符串常量池创建,new String("abc")在堆内存中创建
一个。在堆内存的字符串常量池中创建
回复 使用道具 举报

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
是引用类型,因为字符串的底层是字符数组,而字符数组的长度是不可改变的,所以字符串的长度也是不可改变的。
2.什么情况下会用到Static关键字?
当成员变量或者成员方法是属于该类对象的通用属性或通用方法的时候,可以用static关键字修饰。
当需要给对象初始化的时候,可以使用static关键字创建静态代码块。
3.静态代码块会在什么时候执行?
静态代码块在首次创建该类对象时执行,而且仅执行有且一次,并且顺序优先于构造方法。
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
   
   String s=new String("abc")这句创建了两个对象。分别是常量"abc"和通过new String创建出来的内容也是"abc"的对象。其中""引起来的是在堆内存中的字符串常量池中,而new出来的是在堆内存中。
   String s="abc"; 该语句创建了一个字符串对象,存放在堆内存中的字符串常量池中。
回复 使用道具 举报
明月照大姜 发表于 2018-6-7 21:53
1、String是引用数据类型,字符串是常量,创建后存在堆内存的字符串常量池中,不可改变,长度固定
2、当成 ...

杨银万        
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型      
字符串的值在创建了之后是不可改变的
2.什么情况下会用到Static关键字?
修饰成员变量和成员方法的时候使用
3.静态代码块会在什么时候执行?
优先于main方法和构造方法的执行
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
创建了两个对象 new出来的在堆里的字符串常量池里
“abc”直接在堆里

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




回复 使用道具 举报
刘思聪

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用类型,String底层是通过数组实现的,而数组的长度也是不可变的。
2.什么情况下会用到Static关键字?
当同一个类中的所有对象共享同一个数据、当方法是需要属于类本身而不是对象,当要定义静态代码块对类进行初始化,当希望一个方法通过类来调用而不是需要生成对象的时候
3.静态代码块会在什么时候执行?
静态代码块仅会在类被加载到方法区的时候执行唯一一次。
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

在没有其他语句使用过"abc"这个字符串字面值的前提下:
String s = new String("abc");中,字面值"abc"的对象会在堆的字符串常量池中,而new代码则会在堆中创建一个内容和"abc"一样的但并不是同一个对象。故总共是创建了两个对象。
String s = "abc"则是只在字符串常量池(在堆中)创建了一个对象,并把变量s的引用指向了这个对象。





回复 使用道具 举报

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

2.什么情况下会用到Static关键字?
修饰与对象无关的变量和不需要创建对象的方法

3.静态代码块会在什么时候执行?
        随着类加载执行 优先于方法

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

String s = new String("abc");创建了2个对象,分别在内存的堆内存和字符串池
String s = "abc" 创建了一个对象  字符串池
回复 使用道具 举报
吴佳更
1.是引用数据类型,因为被创建后就不能被改变,源码的规定。
2. 需要修饰成员变量和成员方法。修饰后是属于类的,对象可以共享。
3.类的加载时候执行有且只有一次。
4.2个,“abc”在堆中,s指向“abc",在栈中。
1个,在堆中。字符串常量池里面。
回复 使用道具 举报

王博

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
是引用数据类型,字符串是一个常量,创建了就不可改变


2.什么情况下会用到Static关键字?
创建公共的成员变量,静态方法,静态代码块的时候


3.静态代码块会在什么时候执行?
创建对象的时候会执行,且只执行一次


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

回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String是引用数据类型,因为字符串的底层是字符数组,数组的长度一旦创建不能改变。

2.什么情况下会用到Static关键字?
想要给类设置公共成员变量或者成员方法,可以通过类名点直接调用。还有写静态代码块的时候用到。

3.静态代码块会在什么时候执行?
静态代码块会在类加载的时候运行唯一一次。
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
【1】两个对象,第一个"abc"是创建在堆中的常量池,第二个s在栈中指向"abc"地址。
【2】一个对象s指向在常量池中创建好的"abc"
回复 使用道具 举报
1.引用数据类型;因为定义了一个字符串就存储在 内存中了,改变长度是形成一个新的字符串再存于内存中。
2.当成员变量需要公用时;
3.静态代码块会随着类的执行而执行,会先于对象。
4.一个;String s 在栈中,new String在堆中,“abc”在堆中的常量池中。
    无;String s 在栈中,“abc”在在堆中的常量池中。
回复 使用道具 举报

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型。
  字符串的值在创建后不能被改变。
2.什么情况下会用到Static关键字?
用来修饰成员变量和成员方法,当static修饰成员变量时,该变量成为类变量。该类的每个对象都共享同一个值   
3.静态代码块会在什么时候执行?
定义在成员位置,使用static修饰的代码块。优先于main方法和其他方法的执行

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc")创建了2个对象,存储在堆中.
String s = "abc";创建了1个对象,存储在字符串池中.
回复 使用道具 举报
黄希

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        String类是引用数据类型。
        字符串的底层是字节数组,数组的长度不可变。
       
2.什么情况下会用到Static关键字?
        多个对象共享同一份数据时,可以使用static关键字来修饰成员变量或成员方法。静态成员不再属于对象,而属于类。

3.静态代码块会在什么时候执行?
        静态内容优先于非静态,静态代码块比构造方法先执行。

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

回复 使用道具 举报
贾宗虎
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
     引用数据类型
     因为字符串的底层是byte数组,是常量.

2.什么情况下会用到Static关键字?
     比较典型的是,用来一次性的给静态成员变量赋值
3.静态代码块会在什么时候执行?
     优于非静态代码执行,和本类一起执行

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




回复 使用道具 举报

张亚康

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

Striing是引用类型;字符串一旦被创建是将地址值保存在堆内存中,
所以长度不可改变

2.什么情况下会用到Static关键字?

static修饰成员变量,创建对象时只要一开始就被赋值,后边再创建对象时就不需要再对此
再赋值,修饰方法时调用一般建议使用: 类名称.方法名;静态代码块

3.静态代码块会在什么时候执行?

随着方法被执行而执行,且只会执行一次

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

String s= new String("abc")一共创建了三个对象,两个在堆内存,一个在常量池
  String s = "abc"一共创建了两个对象,一个在堆内存,一个在常量池
回复 使用道具 举报
刘慧梅1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类的引用数据类型。
因为字符串是常量,存放在常量池中,所以字符串长度不可变。
2.什么情况下会用到Static关键字?
修饰成员方法以及成员变量时
3.静态代码块会在什么时候执行?
首次用到本类时,将会执行静态代码块
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?

String s = new String("abc"),创建了两个对象。“abc”存放在字符串常量池中,new出来的存在在堆内存中
String s = new String("abc"),创建了一个对象,存放在字符串常量池中
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String是引用数据类型。
我们看到的字符串其实是对象,里面存储的是地址值。字符串的底层是由字节码数组组成的,一旦被创建,是不能进行更改的。我们进行的字符串变量的更改,其实是地址值的更改。而已经生成的字符串是依然存在,不会更改的。

2.什么情况下会用到Static关键字?
当在程序初始化时,有代码块需要优先加载使用的,会用到static关键字

3.静态代码块会在什么时候执行?
会在类加载前期优先运行

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
创建了2个对象,在堆中创建
如果“abc”已经在字符串常量池中存在,则只创建一个对象,在堆中创建
如果“abc”没有在字符串常量池中存在,则创建了2个对象,s在堆中创建,"abc"在字符串常量池中创建。





回复 使用道具 举报
1.String是引用数据类型,因为String底层是字符数组组成的所以长度是不可以改变的。

2.当多个数据有共同属性的时候就可以Static关键字把这个属性共享出来。

3.静态代码块会在类的加载的时候执行优先于方法先执行。

4.new的会在堆当中,"abc"会存在方法区的字符串常量池。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马