它的名字:構造函數、構造方法、初始化方法。
構造條件? 以後我們如何去使用構造器? 你覺得那些對象中那些屬性值是必要的,你就在構造器中提出來(就是你如果想創造對象必須要傳入我所需要的參數)
public class Dog {//這裏就是一個簡單的類、狗的類
String name;
String chi;
public Dog(String name, String chi) {//如果你想創建對象輸入這兩個參數
this.name = name;
this.chi = chi;
}
}
構造器的創建:
1.構造器的名稱與類名一致
2.構造器沒有返回參數
3.當你的類中沒有一個構造器的時候,java虛擬機會自動加入一個空參數的構造器
構造器是在創建完對象後調用
構造器就是一個方法,此方法沒有返回值,並且與類名一致
構造器在創建完對象後 調用,調用完畢後,創建對象就結束
調用流程:
DD f=new DD();
1.先判斷類是否加載了,如果沒有加載,必須先加載
2.創建對象,分配對象的屬性和方法內存
3.調用構造器
4.構造器調用完畢,返回對象給f
構造器重載:
與方法重載是一致的
對象數組:將對象放入數組中規定長度,並且可以通過循環賦值。
import java.util.Scanner;
public class Dog {//這裏就是一個簡單的類、狗的類
String name;
public static void main(String[] args) {
Dog dog[] = new Dog[10];//這裏只是創建對象數組
dog[0] = new Dog();
dog[0].name = "x";
System.out.println(dog[0]);//這裏取出的只是數組地址
Scanner input = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
dog[i] = new Dog();//只要是對象就是他玩出花來他都是要創建對象的
dog[i].name = input.next();
}
System.out.println(dog[1].name);
System.out.println(dog[3].name);
}
}
沒有賦值的對象變量是什麼值?:
null
null 表示變量沒有指向任何內存
實例塊:
每次創建對象 都會執行實例塊, 在構造器之前執行
public class Dog {
{
System.out.println("我是實例塊");
}
}
靜態塊:
在類加載的時候調用的(只要加載類就會調用,無需加載對象他就會加載)
public class Dog {
static {
System.out.println("我是靜態塊");
}
}
1.先加載類,將類的屬性進行內存分配
2.然後執行靜態塊static和賦值(順序執行)
3.加載實例屬性
4.執行實例塊和賦值(順序執行)
5.構造器調用
6.返回創建好的對象內存
this關鍵字:
當前對象
Java允許不同區域的重名,在嵌套區域中重名,是就近原則
訪問對象,只能訪問到屬性和方法
不能在靜態成員中使用
1.是當前對象 this
2.可以用於轉發構造器 this():
只能寫在構造器代碼的第一行上
一個構造器只能寫一句
public class Dog {//構造器轉發代碼不知道用那
String name;
String Dizhi;
int age;
public Dog(String name) {
this(name, "哈哈", 10);//運行到這句 馬上轉發到構造器上 等構造器執行完畢後 在向下執行代碼
}
public Dog(String name, String dizhi) {
this(name, dizhi, 10);
}
public Dog(String name, String dizhi, int age) {
this.name = name;
this.Dizhi = dizhi;
this.age = age;
}
}