方法引用java
1. java中方法之間是如何調用的
1.與其他語言不同,Java語言不允許編程人員選擇採用值傳遞還是引用傳遞來傳遞參數。基本數據類型總是採用值傳遞。不能把對象傳遞給方法,而只能傳遞對象的引用。引用本身也是採用值傳遞將引用的拷貝傳遞給方法。當方法收到對象的應用後,他就可以直接操作這個對象。
2.當通過return語句從方法返回信息時,基本數據類型的變數總是以值的形式返回(即返回拷貝),而對象總是以應用的方式返回。
方法調用過程:
1.為調用方法的內存中開辟空間。
2.將實參傳遞給形參。
3.程序流程跳轉到方法里,並執行方法。
4.執行完方法,程序流程跳轉到main方法,帶回返回值如果有的話,為方法開辟的空間被銷毀。
列如:
publicclassTest{
publicstaticvoidmain(Stringargs[]){
inta=10,b=20;
Stringstr1="abc";
Stringstr2="def";
swap(a,b);
swap(str1,str2);
System.out.println(a+"/t"+b);
System.out.println(str1+"/t"+str2);
}
publicstaticvoidswap(inta,intb){
inttemp=a;
a=b;
b=temp;
}
publicstaticvoidswap(Stringstr1,Stringstr2){
Stringtemp=str1;
str1=str2;
str2=temp;
}
}
結果:
1020
abcdef
注意結果中整型和字元串都沒有交換。
2. Java如何調用內部類的方法
在其他類中創建內部類的對象時,必須要使用外部類的實例來創建。比如類B是類A的內部類,則語句A.B=new A.B()將是錯誤的。正確的方法是先創建一個類A的對象,比如A ma=new ma();然後再用這個對象來創建內部類的實例,比如A.B mab=ma.new B();這里要注意後面的語法ma.new B()。也可以把這兩步合為一步,比如A.B mab=new A().new B();注意,這里使用了兩個new運算符,如果只有一個將是錯誤的,比如A.B mab=new A().B();是錯誤的,new A().B()語句JAVA會理解為創建一個無名的引用,然後由這個引用調用類A中的B()函數。如果需要調用的構造函數不是默認的,則可以這樣創建比如A.B mab=new A(2).new B();或者分為兩步A ma=new A(2); A.B mab=ma.new B();
而且我也怕是不是會重新建個棋盤,那就不行了!
這個你可以放心,不會創建兩個棋盤,下面舉例驗證
public class A2 extends JFrame {
public static void main(String[] args) {
A ma=new A(); //可以看到在這里並沒有創建內部類,也就是說內部類中的bbb並沒有輸出
A.A1 ma1=ma.new A1(); //調用內部類的方法,當然內部類如果有帶參數構造函數,則還應在內部類中加上參數。
ma1.f();
}}
class A{
A(){System.out.println("aaa");}
class A1{
A1(){System.out.println("bbb");}
public void f(){System.out.println("kkk");}}
}
3. 在Java中要引用對象的屬性和方法,需要怎麼實現
屬性:第一種就是自己定義一個public的公共屬性,然後調用就行了(不安全),第二種就是創建一個private的私有的屬性,生成公共的set和get方法(封裝),然後調用;
方法:同類中方法為靜態方法可以直接調用,不為靜態方法需要new和不同類中要new出對象,然後調用其方法;
左上角有我頭像,有很多朋友在一起相互交流學習。
4. java中方法調用時的寫法
如果是非靜態的方法1調用非靜態的方法2,那麼
非靜態方法2所在類的實例引用.非靜態方法2
public class Test{
public void getMethod(){
Test t=new Test();
t.getTwoMethod();
}
public void getTwoMethod(){
}
}
如果靜態調用靜態:
public class Test{
public static void main(String[]args){
Hello();
}
public void Hello(){
System.out.println("HELLOWORLD")
}
}
如果是繼承的話:
public class a{
public void jj(){}
}
public class b extends a {
public void hh(){
super.jj();
}
}