Java对象在初始化时,由成员变量被构造函数初始化,与直接在类体中指定初值在细节上有没有差异?
很不幸我在著名的《Thinking in Java》上找到答案了,与同志们的还是有不小的差距的,也许是我表述问题不是很清楚吧,总之还是谢谢大家的解答……
也就是说效果完全相同,没有任何细节上的差异呗
追答如果不是 基本数据类型 像 char a='b'; Char a=new Char('b');还是有区别的。
前者 直接把 ‘b‘栈里, 后者 是把字符 b放到 堆中的。明显 前者效率要高。
但是 如果不是基本数据类型的话 。两者是没有区别的。都是直接放入堆中
不是不是我的意思是有一个变量a有两种初始化方式,一种是直接在类体中定义就像是
class A {
private int a = 7; //直接在类体中初始化
privete int b;
A() {
b = 7; // 在构造函数中初始化
}
}
我问的是这两种方法有没有细节上的差别。
对于你的回答我表示不是很淡定……
追答class A {
private int a = 7; //直接在类体中初始化
privete int b;
A() {
b = 7; // 在构造函数中初始化
}
}
如果你放在类体中的话 那个b只有当你调用它的时候它才会初始化。。就是说 你不调用b的话 b就不会在内存中存在...只有当你调用b的时候b才会存在....
但是如果你是放在构造函数中的话 当你new这个类的时候这个b就会初始化...就会在内存中存在....
不知道楼主有没有稍微理解一些了.
不调用b的话b不会被默认初始化为0么?
追答会的....数据类型一般都会有默认初始化啊....
但是如果它没被调用 就不会在内存中存在 即使被默认初始化了也没什么意义....
没被调用就不存在,对象创建时他的内存空间不是直接分配好了么?
追答不会啊 只有当对象调用成员变量的时候它才存在的 而且调用完了以后JVM垃圾回收器会马上把调用完了的方法从内存中清除掉......
你想想 如果每当一个对象创建时 它的成员变量就存在于内存中的话 那是会很影响运行的速度的.....
JAVA的构造变量,成员变量?
每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个...
java中的几种基本类型?
算术运算符的操作数必须是...java有八种基本数据类型:整数字节1字节短2字节int4字节长8字节实数浮点4字节双8字节其他类型char字符类型boolean类型Reference类型变量由类的构造函数创建,可用于访问被引用的对象。这些变量在声明时被指定为特定类型,如Employee、Pubby等。一旦声明了变量,就不能更改类型。字符...
什么是构造函数?它的作用和特点我都已了解。。。它具体在哪里出现...
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.4.当定义一个类定义的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略不去Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一...
JAVA:成员变量定义时可以不赋初值,局部变量定义时要赋初值,这句话对...
不对。变量定义时可以不赋值,但是在调用的时候就需要。如果是成员变量的话,系统会给他初始化,赋默认值,比如int为0,boolean类型为flase,String类型为null等。但是如果是方法里面定义的变量,系统不会给他赋值,在调用之前需要明确给他指定一个值。
java中new的用法? new 出的对象或变量,的生存周期是...?在类中和方法...
finalize这个方法是可以让这个已经要死的对象重新活过来的。就是给一个对象一次反悔的机会,但是如果你放弃了那就是真的死了。对象的生存周期就是当这个对象没有被任何引用指向的时候,他就是孤儿了,那他就到了一个关口,如果finalize方法也不复活,那就认为他死了。关键是这个对象有没有没人认领,要...
以程序为例,讲解java中包,类,构造函数,成员变量,成员方法,重载,接口,SU...
实例变量和类变量的类型 初始值 整数 0 浮点类型 0.0 字符类型 ‘\/u0000′布尔类型 boolean false 引用数据类型(譬如数组、接口、类) null 二、方法(类或对象的行为)1、方法 Java中类的行为由类的成员方法来实现。类的成员方法由方法的声明和方法体两部分组成。修饰符,可选,...
关于java编程的问题:一个类调用另一个类中构造方法中所定义的参数。
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值 总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载 构造函数与其他方法的区别 1.构造函数的命名必须和类名完全相同;...
什么叫java中的成员变量?
在Java编程语言中,成员变量是指那些定义在类体内部的变量,通常也被称为属性。这些变量可以分为不同的类别,包括实例变量、类变量和常量,它们的区分主要基于变量的修饰符。让我们通过一个简单的例子来直观理解:在"ch05.sample"包下的Clothes类中,有如下变量:实例变量,如String类型的"id",它们与类...
java语言中构造方法和方法重载在什么时候使用?有什么作用?请详细说明一...
构造方法是在创建对象时使用,用于设定对象初始状态。假设有一个Person类,里面有身高、性别、名字等属性。如果你不写任何构造方法,系统会给你创建一个隐藏的,将属性设置为空的构造方法。如果你设定了构造函数,你就可以在new 这个对象时直接指定这个person对象的身高、性别、名字,不用创建完成后再一个...
java构造函数什么时候被调用执行?
1、构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。在JAVA语言中,构造函数与C++语言中的构造函数相同,JAVA语言中普遍称之为构造方法。2、构造方法的方法名...