java构造函数初始化的问题
最近正在自学java,在学到java构造器的时候,写到这样一段代码!不是构造函数对参数进行初始化了吗?那输出的age的值应该是10啊!为什么还会出现两个0!新手不太明白!...
最近正在自学java,在学到java构造器的时候,写到这样一段代码!
不是构造函数对参数进行初始化了吗?那输出的age的值应该是10啊!为什么还会出现两个0!新手不太明白!请高手帮忙解答一下!谢谢! 展开
不是构造函数对参数进行初始化了吗?那输出的age的值应该是10啊!为什么还会出现两个0!新手不太明白!请高手帮忙解答一下!谢谢! 展开
13个回答
展开全部
1.首先明白构造函数的定义,如下:
java 构造函数
一般我们讲的“函数”就是“方法”;构造函数=构造方法;构造方法是一种特殊的方法,具有以下特点。(1)构造方法的方法名必须与类名相同。(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。(5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
2.请注意这句话:(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。也就是上面你的构造函数根本就没有传递参数给它,也就是说你在构造函数声明的int age=10,只是相当于函数里的一个变量,超出这个函数就失去作用了,也就是说为默认的int值为0.
3.如果是要初始化成员变量,最好还是构造有参。
知识水平有限,望请采纳!!!呵呵!!!
java 构造函数
一般我们讲的“函数”就是“方法”;构造函数=构造方法;构造方法是一种特殊的方法,具有以下特点。(1)构造方法的方法名必须与类名相同。(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。(5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
2.请注意这句话:(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。也就是上面你的构造函数根本就没有传递参数给它,也就是说你在构造函数声明的int age=10,只是相当于函数里的一个变量,超出这个函数就失去作用了,也就是说为默认的int值为0.
3.如果是要初始化成员变量,最好还是构造有参。
知识水平有限,望请采纳!!!呵呵!!!
展开全部
class TestPerson参考一下:http://tieba.baidu.com/p/2256201700
{
int age; //成员变量 默认值为0
public TestPerson()
{
int age = 10; //age声明在此处,为局部变量
System.out.println("My name is sss");
System.out.println(age); //编译器会默认此处为局部变量的age
System.out.println(this.age);//this在构造函数内,调用了成员变量
}
public static void main(String[] args)
{
TestPerson pl = new TestPerson();
System.out.println(pl.age);//pl对象的age属性,自然指的是成员变量
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出的10是因为那个age为你构造函数的局部变量,this.age是这个类的成员变量,就是你类定义的一个属性,因为你没有为它赋初值java内部会自动赋值为0,而在你main函数中之所以会打印0是因为调用的是p1类的成员变量,自然也应该是没有赋初值的那个age,所以是0!希望对你有帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
3行构造函数外面的age是类的成员变量,6行构造函数内的按格式构造函数的变量,是一个局域变量,8行输出的是6行的那个age;9行输出的是类的成员变量age,而类的成员变量age没有赋初值,默认初值为0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上说的都对,构造函数里的新变量是10,构造结束 就销毁了。第二个输出函数this 关键字指代当前对象的引用,可以指向实例化的成员变量。建议看java核心技术里关于类与对象部分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询