Excel不相邻列如何打印在一起-英雄云拓展知识分享
155
2023-10-25
【摘要】 本书摘自《JAVA服务端研发知识图谱》一书中第1章,第4节,由何为、迟文恒 编著。
1.4.3 初始化
对象的初始化是通过构造器实现的,构造器就是与类名相同并且没有返回值的那个方法。 如果一个类没有明确地编写构造器,那么编译器会默认生成一个构造器。构造器可以有多个,每 个构造器的参数列表不同。下面针对Student类编写它的构造器。
public Student(int age,String name){
this.age = age;
this.name =name;
public Student()
this.age=0;
this.name="todo";
}
如果只写上面带参数的构造器,那么之前编写的代码无法正确编译,因为默认的构造器没 有自动生成,而之前的代码都是通过默认构造器创建的对象,所以必须添加无参数的构造器。 添加Student的构造器后,可以修改School类的 addStudent方法为:
public void addStudent(int age,String name){
Student student = new Student(age,name);
addStudent(student);
/*Student student =new Student();
student.setAge(age);
student.setName(name);*/
//addStudent(student)
这种调用构造器创建对象的方法会使代码更简洁,同时也保证程序的健壮,否则对象中的 字段没有正确初始化,会在不可知的地方发生问题。同时也注意到,之前的代码用/*、*/和//框 起来了,/*和*/可以使其中间的代码失效,//可以使它后面的代码失效。通常用它们注释无用代 码或者添加说明性文字。
除了构造器的方式,也有其他的方法初始化字段的值,例如直接在声明字段的时候赋值, 或者通过初始化代码块来进行赋值。下面演示这两种写法。
public class Student {
private int age=18;
private String name ="todo";
public Student(){
//this.age=0;
//this.name="todo";
public static void main(String[] args){
Student student =new Student();
/student.setAge(12);
//student.setName("xiaoming");
System.out.println("student age ="+student getAge();
System.out.println("student name ="+student.getName());;
运行结果如下:
student age =18
student name =todo
以上截取了部分 Student 类修改后的写法,由输出可见字段被设置了初始值。下面添加初始 化块,再执行main 方法观察字段值最后的输出结果。
public class Student {
private int age=18;
private String name ="todo";
{
age=20;
name ="Construct";
运行结果如下:
student age=20
student name = Construct
最后的输出结果是初始化块中赋值的结果,这里涉及了一个初始化顺序的问题,最后赋值 的结果才会被打印出来,所以可知初始化块的执行时间晚于变量声明时赋值的时间。
在目前已经介绍的内容中,初始化顺序先是变量声明时的赋值,然后是初始化块,最后是 构造器。对于一个普通的类,这个顺序是一定的,但是当引入静态和继承之后,会在这个顺序 的基础上插入其他步骤。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~