❶ java中創建對象時操作符new和後面的構造方法是什麼關系
Java中創建對象,通常會跟一個new的關鍵字,表示生成一個對象。後面的構造方法其實是為了完成對象中變數乎沒的初始化工作。
Java初始化對象遲頃哪可以有很多種,比如new一個對象、或者碼碼通過clone來克隆一個對象。類都提供了一個默認的構造方法,裡面為空,用戶是可以自己編寫構造方法,用來初始化變數。
❷ java 有參構造函數
第一種是set方法賦值。
第二種是有參構造方法賦值。
他們的區別是:當對象被new的時候,
第一種首先進入的是set方法裡面在從set方法裡面進行賦值。
第二種是直接給參數賦值。
❸ java的new構造函數,後面跟一大堆set函數,是什麼語法
其實就是普通的set方法,設游頌歷置一些櫻歲屬性。這里它每一個setXxx方法都返回一個Builder類型神搜的變數,
所以就一直setA(x).setB(y).setC(z)...最後才.build()
就是一個語句。
❹ java構造函數的運行時序
首先假設有如下的一些輔助類,這些類被其他類使用作為靜態變數或非靜態變數:
Java代碼 收藏代碼
1.public class C {
2. public C() {
3. System.out.println("C");
4. }
5.}
6.
7.public class E {
8. public E() {
9. System.out.println("E");
10. }
11.}
12.
13.public class F {
14. public F() {
15. System.out.println("F");
16. }
17.}
18.
19.public class G {
20. public G() {
21. System.out.println("G");
22. }
23.}
24.
25.
26.public class H {
27. public H() {
28. System.out.println("H");
29. }
30.}
1)繼承自Object的類的構造函數的執行順序:
假設有如下的一個類I,I的定義如下:
Java代碼 收藏代碼
1.public class I {
2. public G g = new G();
3. public static E statice0 = new E();
4. static {
5. statice0 = new E();
6. System.out.println("判斷static執行的順序");
7. }
8. public static E statice1;
9. public static F f1;
10. static {
11. System.out.println("測試在static塊中執行的順序1");
12. statice1 = new E();
13. f1 = new F();
14. }
15. static {
16. System.out.println("測試在static塊中執行的順序2");
17. f1 = new F();
18. statice1 = new E();
19. }
20. public static H h = new H();
21.
22. public E e;
23. {
24. System.out.println("aaa");
25. e = new E();
26. }
27.
28. public I(int i) {
29. statice0 = new E();
30. f1 = new F();
31. e = new E();
32. }
33.
34. public static void main(String[] args) {
35. I i = new I(1);
36. }
37.}
執行結果:
E
E
判斷static執行的順序
測試在static塊中執行的順序1
E
F
測試在static塊中執行的順序2
F
E
H
G
aaa
E
F
H
E
從這個結果來可以知道,從Object派生的類將會按照如下的書序執行:
1、靜態變數,如果有靜態塊的話,則按照靜態塊中變數new的順序執行靜態變數構造函數。如果沒有靜態塊的話,則按照聲明的順序執行。
2、非靜態變數,如果有非靜態變數初始化塊的話,則按照new的順序執行構造函數,如果沒有初始化塊則按照聲明的順序執行。
3、執行構造函數,所有的變數按照new的順序執行構造函數。
2)如果是從非Object類結成的類
看如下的類:
Java代碼 收藏代碼
1.public class A {
2. private static E e = new E();
3. private F f = new F();
4.
5. public A() {
6. Syst www.hnne.com em.out.println("A");
7. }
8.}
9.
10.public class B extends A {
11. private static D d = new D();
12. private C c = new C();
13.
14. public B() {
15. System.out.println("B");
16. }
17.
18. public static void main(String[] args) {
19. B b = new B();
20. }
21.}
22.
23.
24.public class C {
25. public static E e = new E();
26. public C() {
27. System.out.println("C");
28. }
29.}
執行B中的main,則會列印出如下的結果:
E
H
G
D
F
A
E
C
B
首先分析各個類的調用情況,在父類A中有一個E的靜態變數,和一個F的非靜態變數,B類繼承自A,B有一個D的靜態變數和C的非靜態變數,D中又有一個H的靜態變數和g的非靜態變數。
從執行得到的結果可以得到如下的結論:
1、首先執行父類中的靜態變數的構造函數,在執行構造函數之前執行靜態變數的類中的靜態變數的構造函數。因此在上例中首先輸出:E
2、執行本類的靜態變數的構造函數,同上,需要執行靜態變數的類中的靜態變數的構造函數。上例中會在執行了A中的E的靜態變數後執行D的靜態變數的構造函數,在此之前需要執行D中的靜態變數H的構造函數,然後執行D中的非靜態變數G的構造函數。列印出:H G D
3、執行父類中的非靜態變數的構造函數。列印出:f
4、執行父類的構造函數。列印出: A
5、執行本類的非靜態變數的構造函數,列印出:E C
6、執行本類中的構造函數,按照new的順序執行構造函數。列印出:B
❺ java構造函數中調用構造函數的問題
不是,因為你初始化(即new)的時候調用的是無參構造函數,所以先調用的是無參構造函數,只不過你在無參構造函數中有調用了有參構造函數(即this(1)),所以當無參構造函數還沒有執行到System.out.println("3
Default!!");時,有參構造函數先執行了System.out.println("3
NotDefault!!");所以在輸出是會出現「3
NotDefault!!」在"3
Default!!"之前的情況.
❻ JAVA的NEW和構造函數
= =!應該說在你這種情況下是先有Button1 在有 Button2。
user從前向後裂蔽好依次construct。
唯一的區別就是,Button1可以肆鉛被user里的其他函數調用並知!而Button2 不可以!
❼ java問題 string str = new String("I doing") 哪個是構造函數 new String("I doing")的作用
new String("I doing")是構造函數。String是一個類,通過new String("I doing")構造函數,可以構造一個String類型的對象,對象初始值為字元串"I doing".
❽ java中,請問一下,在本類中new 一個類,是不是通過構造函數創建的呢 謝謝哦
是的,new一個類,就是創建這個類的一個對象/實例,通過構造方法初始化它
❾ JAVA的構造函數是怎麼寫的。萬分感謝。路過的請不要嘲笑%>_<%
JAVA的構造函數是:SetLocal EnableDelayedExpansion
set classpath=.
for %%c in (lib*.jar) do set classpath=!classpath!;%%c
set classpath=%classpath%;./classes;
java com.ham.server.Server。
1、無參構造方法
無參構造方法又分為隱式無參構造方法和顯示無參構造方法。
隱式無參構造方法
在定義類的時候,如果沒有給類定義一個構造方法,Java編譯器在編譯時會默認提供一個隱式的構造方法,它沒有任何參數,並且有一個空的方法體。例如,Person類中隱含一個無參構造方法,在main方法中可以通過new關鍵字來調用此默認的構造方法,代碼如下:
❿ java中new的用法
new的作用是調用構造函數返回一個對象。在這個例子里相當於。
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader keyin =new BufferedReader(isr);