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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

2.什么情况下会用到Static关键字?
共享一个类的属性,又不用再创建一个对象传递参数
3.静态代码块会在什么时候执行?
当第一次用到本类时,静态代码块执行唯一的一次;静态内容总是优先于非静态,所以静态代码块比构造方法先执行

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");创建了1个对象,String s 在栈内创建,new String("abc")在堆内存中创建;
String s = "abc";创建了1个对象,String s 在栈内创建,"abc"在堆中字符串常量池中创建
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型
字符串本身是一个常量,常量在程序运行期间不能发生改变,因此字符串的长度不可发生改变
2.什么情况下会用到Static关键字?
a.类变量:使用static关键字修饰成员变量
b.类方法:使用static关键字修饰成员方法
c.静态代码块:使用static修饰代码块
3.静态代码块会在什么时候执行?
静态代码块会随着类的加载而执行,优先于main方法和构造方法的执行
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类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
        String类是引用数据类型
        字符串相当于是一个一个单独的字符拼接起来,其显示效果相当于是char[]字符数组,字符串的底层是用byte[]字节数组来储存而数组最主要的特性就是其在程序运行期间长度是不可以改变的,
       
2.什么情况下会用到Static关键字?
        (1)用来修饰成员变量:使所有本类的对象都共享同一份静态变量的数据。
        (2)用来修饰成员方法:使方法可以通过类名直接调用而不需要创建对象。
        (3)静态代码块:当需要初始化某个类,给静态变量赋值的时候。
3.静态代码块会在什么时候执行?
        在首次使用含代码块的类时,代码块会执行唯一一次
        后面不管使用到这个含有代码块的类都不会在执行
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
  String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
        String s = new String("abc");创建了两个对象,new String在堆内存中,“abc”在堆内存中的字符串常量池中
        String s = "abc"要考虑两种情况1是与String s = new String("abc");在同一个类中,那么String s = "abc"就没有创造对象而是与String s = new String("abc")共用同一个字符串“abc”,
        2是不在一个类中那么它创建了一个对象“abc”存放在堆内存中的字符串常量池中
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
(1)String类是引用数据类型。
(2)因为String类的对象是字符串常量,常量一旦被创建,其内容在程序运行期间就永不可变。
2.什么情况下会用到Static关键字?
(1)用来修饰成员变量:使所有本类的对象都共享同一份静态变量的数据。
(2)用来修饰成员方法:使方法可以通过类名直接调用而不需要创建对象。
(3)静态代码块:当需要初始化某个类,给静态变量赋值的时候。
3.静态代码块会在什么时候执行?
当第一次用到本类时,静态代码块会执行唯一的一次。
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
(1)String s = new String("abc");这句代码创建了3个对象,String s在栈内存中被创建,在堆内存中创建了new String对象,在堆中的字符串常量池中创建了“abc”。
(2)String s = "abc";这句代码创建了2个对象,String s在栈内存中被创建,在堆中的字符串常量池中创建了“abc”。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用类型。
因为String类的对象是字符串常量,常量一旦被创建,其内容在程序运行期间就永不可变
2.什么情况下会用到Static关键字?
用来修饰成员变量:使所有本类的对象都共享同一份静态变量的数据。
用来修饰成员方法:使方法可以通过类名直接调用而不需要创建对象。
静态代码块:当需要初始化某个类,给静态变量赋值的时候。
3.静态代码块会在什么时候执行?
随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
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";创建了几个对象,分别在内存中的哪个区域创建?
答:a.创建了一个对象,存在堆中.
    b.创建了一个对象,存在常量池中.
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型,因为String对象是一个字符串常量,创建之后常量的长度用不可变。


2.什么情况下会用到Static关键字?
(1)类变量:一个类的成员变量数据需要给该类所有成员共享时,用static修饰。
(2)类方法:一个方法需要通过类名直接调用,不想要创建对象时,用static修饰。
(3)静态代码块:在初始化代码块的时候,需要给静态变量赋值,用static修饰。

3.静态代码块会在什么时候执行?
静态代码块:当第一次用到本类时,静态代码块执行唯一的一次。

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


点评

字符串的长度不可变是因为字符串底层是char数组  发表于 2019-3-10 10:25
回复 使用道具 举报 1 0
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String类是引用数据类型;字符串底层是靠字符数组实现的
2.什么情况下会用到Static关键字?
成员变量和成员方法使用static修饰的时候,通过类名直接访问

3.静态代码块会在什么时候执行?
随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
格式
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   创建了一个对象;在内存中的方法区创建
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型。
字符串池在方法区(Method Area)中是一种特殊的存储区域。
当创建一个字符串时,如果字符串已经存在于池中,现有字符串的引用将被退回,而不是创建一个新的对象并返回其引用。
下面的代码将在堆中只会创建一个字符串对象。
如果字符串可变,那么在这些模块中,将会引发严重的安全性问题。
不可变的对象不能被改变,他们可以在多个线程中共享,就不需要使用线程的同步操作。

2.什么情况下会用到Static关键字?
static 关键字,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属
于某个对象的,这种情况下就可以用到static

3.静态代码块会在什么时候执行?
随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");
在运行 new String()时,把文字池即pool中的字符串"abc"复制到堆中,并把这个对象的应用交给s,所以创建了两个String对象,一个在pool 中,一个在堆中。

String s = "abc"
会保存在方法区的字符串常量池中,首先检查字符串常量池中是否存在"abc"对象,
如果存在,直接返回指向"abc"对象的指针,不存在就会在字符串常量池中创建一个"abc",然后返回指针
回复 使用道具 举报
李伟斌

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String是引用数据类型,因为字符串的值在创建后不可变,所以长度也不可变.
2.什么情况下会用到Static关键字?
答:要访问静态使用静态方法或静态成员的时候.
3.静态代码块会在什么时候执行?
答:静态代码块内的成员被实现或调用.
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:a.创建了一个对象,存在堆中.
   b.创建了一个对象,存在常量池中.
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
是引用类型。
因为String类的底层是一个char类型数组,数组在创建后,长度不可变

2.什么情况下会用到Static关键字?
创建静态变量和静态方法的时候

3.静态代码块会在什么时候执行?
会再第一次使用类的时候,并且只会执行一次

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

.String s = new String("abc");创建的两个对象再一个在堆中,一个在字符串常量池中
String s = "abc";创建了一个对象,实在字符串常量区中。
回复 使用道具 举报
吴元陶:

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型。
字符串池在方法区(Method Area)中是一种特殊的存储区域。
当创建一个字符串时,如果字符串已经存在于池中,现有字符串的引用将被退回,而不是创建一个新的对象并返回其引用。
下面的代码将在堆中只会创建一个字符串对象。
如果字符串可变,那么在这些模块中,将会引发严重的安全性问题。
不可变的对象不能被改变,他们可以在多个线程中共享,就不需要使用线程的同步操作。

2.什么情况下会用到Static关键字?
static 关键字,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属
于某个对象的,这种情况下就可以用到static

3.静态代码块会在什么时候执行?
随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");
在运行 new String()时,把文字池即pool中的字符串"abc"复制到堆中,并把这个对象的应用交给s,所以创建了两个String对象,一个在pool 中,一个在堆中。

String s = "abc"
会保存在方法区的字符串常量池中,首先检查字符串常量池中是否存在"abc"对象,
如果存在,直接返回指向"abc"对象的指针,不存在就会在字符串常量池中创建一个"abc",然后返回指针。
回复 使用道具 举报
叶凌青

1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:String类是引用数据类型。字符串最底层是byte数组,而数组在创建的时候长度就是固定的,因此字符串的长度不可变;
2.什么情况下会用到Static关键字?
答:static 关键字,可以修饰变量、方法和代码块。当每个对象都共享同一个变量的值,就可以修饰变量;当想让代码块优先于main方法和构造方法的执行,也可以用static修饰;在使用的过程中,其主要目的还是想在不创建对象的情况
下,去调用方法;
3.静态代码块会在什么时候执行?
答:静态代码块随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc"):创建了两个;new String("abc")创建在堆中,"abc"创建在堆中的常量池。
String s = "abc";创建了一个:在堆中的常量池。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
String是引用数据类型 他是基于char数组之上的一个类型 改变了字符串 那地址也相应的改变了
2.什么情况下会用到Static关键字?
可以不用新建类直接导出类
3.静态代码块会在什么时候执行?
会在导出的时候仅执行一次
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?


String s = new String("abc");创建了三个对象

栈内存:String s
堆内存:new String
堆内存的常量池生成"abc"

栈内存:String s
堆内存常量池:"abc"
回复 使用道具 举报
1.String类是引用数据类型,因为String对象是一个字符串常量,创建之后常量的长度用不可变。
2.(1)类变量:一个类的成员变量数据需要给该类所有成员共享时,用static修饰。
   (2)类方法:一个方法需要通过类名直接调用,不想要创建对象时,用static修饰。
   (3)静态代码块:在初始化代码块的时候,需要给静态变量赋值,用static修饰。
3.静态代码块:当第一次用到本类时,静态代码块执行唯一的一次。
4.String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc")这句代码创建了两个对象,一个是堆内存中的new String对象,一个是堆内存中字符串常量池里的“abc”字符串对象。
String s = "abc"创建了一个对象,在堆内存中字符串常量池里创建了的“abc”字符串对象。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
答:
        引用数据类型;
       原因:字符串底层是char数组,而数组在创建之初长度就是固定的,因此字符串的长度是不可变;
2.什么情况下会用到Static关键字?

        当某一类下的每个对象都有一个相同变量时,则可以使用Static将其从属于对象变成属于类使其成为同一类下所有对象的共享;
3.静态代码块会在什么时候执行?
答:
        在首次使用含代码块的类时,代码块会执行唯一一次
4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
答:
       如果两个不是在同一个类中:
                String s = new String("abc"):创建两个对象;                        
                      “abc”放在方法区常量池中;new String 放在堆中;
                String s = "abc":创建一个对象;
                        "abc"放在方法区常量池中;
        如果两个在同一个类中:
                String s = new String("abc")  先写的话:
                        String s = new String("abc"):创建两个对象;
                        String s = "abc":没有创建对象;
                String s = "abc"  先写的话:
                        String s = new String("abc"):创建一个对象;
                        String s = "abc":创建一个对象;
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变? 引用数据类型   字符串是常量 常量在运行期间不可改变

2.什么情况下会用到Static关键字?当每一个对象都共享一个属性时,这个属性可以用Static关键字修饰。

3.静态代码块会在什么时候执行? 第一次使用类的时候

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建? 两个对象 字符串常量池跟堆中
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
引用数据类型。
字符串池在方法区(Method Area)中是一种特殊的存储区域。
当创建一个字符串时,如果字符串已经存在于池中,现有字符串的引用将被退回,而不是创建一个新的对象并返回其引用。
如果字符串可变,那么在这些模块中,将会引发严重的安全性问题。
不可变的对象不能被改变,他们可以在多个线程中共享,就不需要使用线程的同步操作。

2.什么情况下会用到Static关键字?
static 关键字,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属
于某个对象的,这种情况下就可以用到static。

3.静态代码块会在什么时候执行?
随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
String s = new String("abc");
在运行 new String()时,把文字池即pool中的字符串"abc"复制到堆中,并把这个对象的应用交给s,所以创建了两个String对象,一个在pool 中,一个在堆中。

String s = "abc"
会保存在方法区的字符串常量池中,首先检查字符串常量池中是否存在"abc"对象,
如果存在,直接返回指向"abc"对象的指针,不存在就会在字符串常量池中创建一个"abc",然后返回指针。
回复 使用道具 举报
1.String类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?
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类是基本数据类型还是引用数据类型?为什么字符串的长度不可变?

String是引用数据类型,因为String定义的是一个常量字符串,常量在程序运行期间不可改变。

2.什么情况下会用到Static关键字?
static关键字可以用来修饰成员变量和成员方法,被修饰的成员是属于类的,而不是仅仅属
于某个对象的,这种情况下用到static关键字。

3.静态代码块会在什么时候执行?
在第一次使用到本类时,会执行一次,而且只执行一次,优先于main方法和构造方法的执行。

4.String s = new String("abc");这句代码创建了几个对象?分别在内存中的哪个区域创建?
   String s = "abc";创建了几个对象,分别在内存中的哪个区域创建?
1.String s = new String("abc")创建了2个对象;String s在栈当中创建;new String("abc")在堆内存的常量池生成一个abc,凡是new 出来的东西都在堆当中;
2.String s = "abc"创建了2个对象;String s在栈内存中创建,而在堆内存的常量池生成一个abc。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马