⑴ java構造函數中調用構造函數的問題
不是,因為你初始化(即new)的時候調用的是無參構造函數,所以先調用的是無參構造函數,只不過你在無參構造函數中有調用了有參構造函數(即this(1)),所以當無參構造函數還沒有執行到System.out.println("3
Default!!");時,有參構造函數先執行了System.out.println("3
NotDefault!!");所以在輸出是會出現「3
NotDefault!!」在"3
Default!!"之前的情況.
⑵ Java中什麼叫構造函數.
每創建一個類的實例都去初始化它的所有變數是乏味的。如果一個對象在被創建時就完成了所有的初始工作,將是簡單的和簡潔的。因此,Java在類里提供了一個特殊的成員函數,叫做構造函數(Constructor)。
一個構造函數是對象被創建時初始對象的成員函數。它具有和它所在的類完全一樣的名字。一旦定義好一個構造函數,創建對象時就會自動調用它。構造函數沒有返回類型,即使是void類型也沒有。這是因為一個類的構造函數的返回值的類型就是這個類本身。構造函數的任務是初始化一個對象的內部狀態,所以用new操作符創建一個實例後,立刻就會得到一個清楚、可用的對象。
構造方法是一種特殊的方法,具有以下特點。
(1)構造方法的方法名必須與類名相同。
(2)構造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型。
(3)構造方法的主要作用是完成對象的初始化工作,它能夠把定義對象時的參數傳給對象的域。
(4)構造方法不能由編程人員調用,而要系統調用。
(5)一個類可以定義多個構造方法,如果在定義類時沒有定義構造方法,則編譯系統會自動插入一個無參數的默認構造器,這個構造器不執行任何代碼。
(6)構造方法可以重載,以參數的個數,類型,或排列順序區分。
⑶ java 匿名內部類有沒有構造函數
因為匿名內部類沒有類名(至輪弊少是李判明面上沒有),不然為何叫匿名? 構造器是要有類名哪桐改的。 不過有種方式可以起到構造器的作用,但有局限性,那就是「構造代碼塊」
⑷ 關於java構造函數
class
Student{
String
name;
int
age
;
public
Student(String
name
,int
age){
this.name
=
name
;
this.age
=
age
;
//這里的Student()就是構造函數。。它必須與類名一樣而且不能加返回值
}
}
⑸ java的匿名函數怎麼用
Java 應用程序按值傳遞參數(引用類型或基本類型),其實都是傳遞他們的一份拷貝.而不是數據本身.(不是像 C++ 中那樣對原始值進行操作。)
例1:
Java代碼
//在函數中傳遞基本數據類型,
public class Test {
public static void change(int i, int j) {
int temp = i;
i = j;
j = temp;
}
public static void main(String[] args) {
int a = 3;
int b = 4;
change(a, b);
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}
結果為:
a=3
b=4
原因就是 參數中傳遞的是 基本類型 a 和 b 的拷貝,在函數中交換的也是那份拷貝的值 而不是數據本身;
例2:
Java代碼
//傳的是引用數據類型
public class Test {
public static void change(int[] counts) {
counts[0] = 6;
System.out.println(counts[0]);
}
public static void main(String[] args) {
int[] count = { 1, 2, 3, 4, 5 };
change(count);
}
}
在方法中 傳遞引用數據類型int數組,實際上傳遞的是其引用count的拷貝,他們都指向數組對象,在方法中可以改變數組對象的內容。即:對復制的引用所調用的方法更改的是同一個對象。