❶ java对类中的成员变量进行初始化有哪些方法
直接赋值, 构造参数赋值 ,static 代码块内部初始化。
❷ Java类变量的初始化是在( )阶段。 A. 该类实例化对象 B. 该类加载 C. 该类首次调用 D. 该类对象销毁
选B :
类变量也就是静态变量,在类创建(加载)的时候初始化,所有实例共用同样的静态变量,如果在一个地方改变了静态变量的值,在其他地方看到的就是被改变之后的值。
调用时通过类本身调用,不用实例化对象就可以使用。
这和实例变量是不同的,实例变量只在该实例有效,修改了对其他实例没影响,实例化变量要实例化出对象才可以使用。
❸ 昆明Java培训:为什么Java中的局部变量必须要初始化
现在假如你是java语言的开发者,你已经将对象保存在了堆内存中,而将局部变量保存在了栈内存中,你会怎么做呢?Java中的变量分为类变量,成员变量和局部变量,分别位于JVM的方法区、堆内存和栈内存中。 ❹ java中成员或类变量自动初始化是什么意思
成员变量相当于你的名字,出生就有,如果你父母来不及取,默认是宝宝。局部变量相当于你在公司或者学校的外号,进公司或学校才有,出了公司和学校就没了,而如果没有人给你取外号,那么你就没有外号,没有默认值。 ❺ Java 变量的初始化疑惑,请各位大侠详细解释下,越底层越好。谢谢!
变量分成员变量和局部变量 ❻ java中构造方法可以初始化类变量吗
可以。 ❼ JAVA里初始化是什么意思 初始化就是给变量一个初始值。 例如: 声明一个变量:String aa = "abc";int cc =0;其中abc和0就是初始化的值,最后值不一定是abc或者 0加入你覆盖了aa的值如下: aa = "def" ; cc=1;那最后aa变量的值就是def,cc变量就是1了,初始化的目的是为了让变量有值,防止使用时出现异常。 作用 1、遇到new,getstatic,putstatic,或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这四条指令单最常见的Java代码场景是: 使用new关键字实例化对象的时候,读取或设置一个类的静态字段(被final修饰,已在变异期把结果放入常量池的静态字段除外)的时候,以及调用一个类的静态方法的时候。 2、使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先出法其初始化。 3、当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先出法其父类的初始化。 4、当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类。 ❽ JAVA中的变量为什么要初始化呢
为了给变量分配空间。不分配空间无法对变量操作。 ❾ Java类属性初始化是什么 1.我们都知道java是面向对象的语言, 那么类就好比是一个模板, 比如Student类, 这个类其实是一个模板, 是一个规范. 然后我们执行下面这行代码 Student xiaoMing = new Student(); 就相当于我们用Student这个模板去生成了一个对象, 这个对象叫xiaoMing. 如果Student这个类有一个属性private int age;当我们只是做上面new对象的动作时候, xiaoMing的age并没有被赋值, 只是初始化成了0 (数值类型的属性初始化都是0, String则是null, 例如有个字符串类型的属性name就会是null) 然后xiaoMing.setAge(10); 那么这个时候xiaoMing的age属性才变成10, 所以类属性初始化指的就是在new对象的时候对各个属性赋予一个初始化的值. 2.为什么要用构造方法进行属性初始化: 这个并不是强制的, 构造方法分成无参构造和带参构造, 用构造方法对属性进行初始化只是单纯的为了方便而已. ❿ java中怎么给变量初始化 不同的变量初始化方法不同。 变量包括: 类的属性,或者叫值域 方法里的局部变量 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。 对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性 对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一
类变量和成员变量都可以在类首次加载和类初始化时,给出默认值,但是局部变量就必须要在使用前赋值。
事实上,就有这样的语言,比如C++。
当然,C++不强制必须初始化,不代表就不用初始化,实际上,C++开发者也都是建议对局部变量初始化,以防止出现野指针这类事情。
其实,不管是局部变量还是成员变量,都是必须要初始化的,那为什么成员变量会自动初始化?其实正是因为成员变量属于对象,而对象是保存在堆中的,所以jvm就在初始化类的时候把成员变量初始化呢,而如果我们在调用方法的时候,还要jvm去将局部变量也进行初始化,是不是对会影响到性能呢?因此,直接强制局部变量必须要初始化反而更好。
成员变量在类存在的时候就已经初始化了,局部变量只有该方法被调用的时候才初始化。局部变量一定要赋初值,否则报错,成员变量如果不赋初值,系统默认给。
成员变量是在类范围内定义的变量,也就是类的属性。局部变量是在方法内定义的变量。
成员变量分:实例属性(不用static修饰),类属性(用static修饰)
局部变量分:形参(方法签名中定义的变量),方法局部变量(方法内定义的变量),代码块局部变量(代码块如for
while等内部的变量)。
类属性从类被创建到类被销毁,与类的生存范围相同。
实例属性从类的实例创建开始到实例被销毁,与该实例生存范围相同。
成员变量时无需显示初始化的,系统在创建该类或实例的时候会进行默认初始化。
而局部变量中除形参外,都必须初始化。
您可以使用最终方法,构造函数或实例初始化块来初始化类的实例变量。
(7)java类变量的初始化扩展阅读:
在java中全局变量不需要初始化,局部变量必须初始化。
int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。
在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。
次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一
来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少
一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在
catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他
们,如果不知道要出事化成什么值好,就用上面的默认值吧!
其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。