Java中定义实例变量时指定初始化值顺序
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Java中定义实例变量时指定初始化值顺序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            定義實例變量時指定的初始值、初始化塊中為實例變量指定的初始值、構造器中為實例變量指定的初始值,三者的作用完全類似,都用于對實例變量指定初始值。經過編譯器處理之后,它們對應的賦值語句都被合并到構造器中。在合并過程中,定義變量語句轉換得到的賦值語句、初始化塊里的語句轉換得到的賦值語句,總是位于構造器的所有語句之前;合并后,兩種賦值語句的順序保持它們在源代碼中的順序。
例1:
package com.study.test;
 
class Cat {
?? ?String name;
?? ?int age;
?? ?
?? ?//構造函數
?? ?public Cat(String name,int age){
?? ??? ?System.out.println("執行構造器");
?? ??? ?this.name = name;
?? ??? ?this.age = age;
?? ?}
?? ?
?? ?{
?? ??? ?System.out.println("執行非靜態初始化塊");
?? ??? ?weight = 2.0;
?? ?}
?? ?double weight = 2.3;
?? ?
?? ?public String toString(){
?? ??? ?
?? ??? ?return "Cat[name=" + name + ",age=" + age + ",weight=" + weight + "]";
?? ?}
}
 
 
public class InitTest {
?? ?
?? ?public static void main(String[] args) {
?? ??? ?Cat cat = new Cat("kitty", 2);
?? ??? ?System.out.println(cat);
?? ??? ?
?? ??? ?Cat cat2 = new Cat("Jerfield", 3);
?? ??? ?System.out.println(cat2);
 
?? ?}
 
}
 
輸出為:
執行非靜態初始化塊
執行構造器
Cat[name=kitty,age=2,weight=2.3]
執行非靜態初始化塊
執行構造器
Cat[name=Jerfield,age=3,weight=2.3]
 
 
例2:
package com.study.test;
 
class Cat {
?? ?String name;
?? ?int age;
?? ?
?? ?//構造函數
?? ?public Cat(String name,int age){
?? ??? ?System.out.println("執行構造器");
?? ??? ?this.name = name;
?? ??? ?this.age = age;
?? ?}
?? ?
?? ?
?? ?double weight = 2.3;
?? ?{
?? ??? ?System.out.println("執行非靜態初始化塊");
?? ??? ?weight = 2.0;
?? ?}
?? ?public String toString(){
?? ??? ?
?? ??? ?return "Cat[name=" + name + ",age=" + age + ",weight=" + weight + "]";
?? ?}
}
 
 
public class InitTest {
?? ?
?? ?public static void main(String[] args) {
?? ??? ?Cat cat = new Cat("kitty", 2);
?? ??? ?System.out.println(cat);
?? ??? ?
?? ??? ?Cat cat2 = new Cat("Jerfield", 3);
?? ??? ?System.out.println(cat2);
 
?? ?}
 
}
 
輸出:
執行非靜態初始化塊
執行構造器
Cat[name=kitty,age=2,weight=2.0]
執行非靜態初始化塊
執行構造器
Cat[name=Jerfield,age=3,weight=2.0]
 
 
                            
                        
                        
                        例1:
package com.study.test;
class Cat {
?? ?String name;
?? ?int age;
?? ?
?? ?//構造函數
?? ?public Cat(String name,int age){
?? ??? ?System.out.println("執行構造器");
?? ??? ?this.name = name;
?? ??? ?this.age = age;
?? ?}
?? ?
?? ?{
?? ??? ?System.out.println("執行非靜態初始化塊");
?? ??? ?weight = 2.0;
?? ?}
?? ?double weight = 2.3;
?? ?
?? ?public String toString(){
?? ??? ?
?? ??? ?return "Cat[name=" + name + ",age=" + age + ",weight=" + weight + "]";
?? ?}
}
public class InitTest {
?? ?
?? ?public static void main(String[] args) {
?? ??? ?Cat cat = new Cat("kitty", 2);
?? ??? ?System.out.println(cat);
?? ??? ?
?? ??? ?Cat cat2 = new Cat("Jerfield", 3);
?? ??? ?System.out.println(cat2);
?? ?}
}
輸出為:
執行非靜態初始化塊
執行構造器
Cat[name=kitty,age=2,weight=2.3]
執行非靜態初始化塊
執行構造器
Cat[name=Jerfield,age=3,weight=2.3]
例2:
package com.study.test;
class Cat {
?? ?String name;
?? ?int age;
?? ?
?? ?//構造函數
?? ?public Cat(String name,int age){
?? ??? ?System.out.println("執行構造器");
?? ??? ?this.name = name;
?? ??? ?this.age = age;
?? ?}
?? ?
?? ?
?? ?double weight = 2.3;
?? ?{
?? ??? ?System.out.println("執行非靜態初始化塊");
?? ??? ?weight = 2.0;
?? ?}
?? ?public String toString(){
?? ??? ?
?? ??? ?return "Cat[name=" + name + ",age=" + age + ",weight=" + weight + "]";
?? ?}
}
public class InitTest {
?? ?
?? ?public static void main(String[] args) {
?? ??? ?Cat cat = new Cat("kitty", 2);
?? ??? ?System.out.println(cat);
?? ??? ?
?? ??? ?Cat cat2 = new Cat("Jerfield", 3);
?? ??? ?System.out.println(cat2);
?? ?}
}
輸出:
執行非靜態初始化塊
執行構造器
Cat[name=kitty,age=2,weight=2.0]
執行非靜態初始化塊
執行構造器
Cat[name=Jerfield,age=3,weight=2.0]
總結
以上是生活随笔為你收集整理的Java中定义实例变量时指定初始化值顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: TensorFlow学习笔记(二十八)C
- 下一篇: 分类算法之决策树C4.5算法
