代码块是可以给属性赋初值的,所以才有以下的问题讨论
一、对象可以赋值的位置
①默认初始化
②显示初始化/ ⑤代码块初始化。二者算是同一级别根据代码的先后顺序执行。但我们一般都把②放在⑤前面
③构造器中初始化
④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值
执行的先后顺序:①-②/⑤-③-④
二、代码演示
代码演示之前的一个错误赋值方式:
方法中可以这样赋值:
再补充一个小知识(下面的代码是在类中声明是允许的):
这样也是允许的
我相信对象的默认初始化、显示初始化、构造器中初始化、有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值大家都懂,下面的程序主要是测试:②显示初始化/ ⑤代码块初始化。二者算是同一级别根据代码的先后顺序执行。但我们一般都把②放在⑤前面
public class OrderTest {
public static void main(String[] args) {
Order order = new Order();
System.out.println(order.orderId);
}
}
class Order{
{
orderId=4;
}
int orderId=3;
}
输出结果是3:如果改成下面的也就是把Order类中的代码块和int orderId=3反一下,就会输出4
public class OrderTest {
public static void main(String[] args) {
Order order = new Order();
System.out.println(order.orderId);
}
}
class Order{
int orderId=3;
{
orderId=4;
}
}
所以显示初始化和代码块初始化根据先后顺序来影响赋值。但是我们一般都把代码块初始化放在显示初始化后面。
至此对象属性可以赋值的地方全部结束了