❶ java中this的用法
一、指自己所在的對象。
比如在一個方法中,調用其他對象的變數或方法時,可以使用那個對象的對象名,比如aa.abc();
而調用自己所在對象的方法或變數時,不知道別人給起了什麼名,所以直接用this.abc()就可以了。
二、看一個小例子中「this」的用法!
/**
* @author feng-neusoft
*
* 本示例為了說明this的三種用法!
*/
package test;
public class ThisTest {
private int i=0;
//第一個構造器:有一個int型形參
ThisTest(int i){
this.i=i+1;//此時this表示引用成員變數i,而非函數參數i
System.out.println("Int constructor i——this.i: "+i+"——"+this.i);
System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));
//從兩個輸出結果充分證明了i和this.i是不一樣的!
}
// 第二個構造器:有一個String型形參
ThisTest(String s){
System.out.println("String constructor: "+s);
}
// 第三個構造器:有一個int型形參和一個String型形參
ThisTest(int i,String s){
this(s);//this調用第二個構造器
//this(i);
/*此處不能用,因為其他任何方法都不能調用構造器,只有構造方法能調用他。
但是必須注意:就算是構造方法調用構造器,也必須為於其第一行,構造方法也只能調
用一個且僅一次構造器!*/
this.i=i++;//this以引用該類的成員變數
System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s);
}
public ThisTest increment(){
this.i++;
return this;//返回的是當前的對象,該對象屬於(ThisTest)
}
public static void main(String[] args){
ThisTest tt0=new ThisTest(10);
ThisTest tt1=new ThisTest("ok");
ThisTest tt2=new ThisTest(20,"ok again!");
System.out.println(tt0.increment().increment().increment().i);
//tt0.increment()返回一個在tt0基礎上i++的ThisTest對象,
//接著又返回在上面返回的對象基礎上i++的ThisTest對象!
}
}
運行結果:
Int constructor i——this.i: 10——11
String constructor: ok
String constructor: ok again!
Int constructor: 21
String constructor: ok again!
14
細節問題注釋已經寫的比較清楚了,總結一下,其實this主要要三種用法:
1、表示對當前對象的引用!
2、表示用類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。
3、用於在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。但是這里必須非常注意:只能引用一個構造方法且必須位於開始!
還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然誇張,但是卻充分說明this不能在static方法中使用!
❷ Java里的this問題
this只Student3這個對象。
public Student3(String name,int age,int classNum){
this.name=name;
this.age=age;
this.classNum=classNum;
}
這裡面因為有兩個name,為了區分,this.name就是Student3的一個屬性,而這個構造方法里的name是傳過來的name。
可以這樣去理解:
public Student3(String name1,int age1,int classNum1){
//這樣就不存在一個name對應參數列表的值和類的屬性值,就不用 this指定了。在這里推薦寫成原文的形式,用this代表Student3這個類,當然也可以寫成Student3.name = name1
name=name1;
age=age1;
classNum=classNum1;
}
當調用new Student3("zhangsan", 10, 1);時,會把Student的name屬性,age屬性,classNum屬性賦成相應值。
❸ 在java中類名.this得到的是什麼
你這個問題應該是問在3g平台下面把,那麼得到的是上下文對象-context。在j2se得到是當前類的一個對象
❹ 關於JAVA中this關鍵字的用法問題
你要知道a1對象裡面的name是a1,a2對象裡面的name是a2,
A a1=new A("a1"); 生成一個a1對象的同時調用構造方法name=a1
a1.func2(); 調用a1對象裡面的func2方法,當前對象為a1
A a2=new A("a2"); 生成一個a2對象的同時調用構造方法name=a2
this.func1(); this表示當前對象,this.func1();也就是當前對象的func1方法。就是a1的func1方法。輸出的當然func1 of a1 is calling
a2.func1(); 指明為a2的func1()
輸出的當然func1 of a2 is calling
❺ Java:關於Java中的this,這里為什麼加不加都一樣呢
this是指的對象本身,通過this可以調用本對象擁有的所有方法和屬性,當然不加this也可版以調用。
一般用this的情權況:
當局部變數與成員變數相同名時,例如 this,x = x;this.x 是個成員變數,而x是個局部變數
在myeclipse下用this可以提示後面的方法或者成員變數
在內部類或匿名內部類中使用this來指向內部類本身
將類本省作為參數傳遞
❻ java中的this語句
java中this有兩種用法:
1、代表當前類
public class Dog{
private String name;
private float age;
public setName(String name){
this.name = name;
}
.......
}
這里的this就代表的當前的這個Dog類。this.name可以理解為dog.name,只是理解,不是等於。
2、在構造函數中的使用
public class Dog{
private String name;
private int age;
//有一個參數的構造函數
public Dog(String name){
this.name = name;
}
public Dog(String name,int age){
this.name = name;
this.age = age;
}
//這個無參構造方法里調用的有兩個參數的構造方法,這個也就是this的第二種用法了!
public Dog(){
this("nihao",20);
}
}
❼ 關於java this.getClass();
Java的每個類都帶有一抄個運行時襲類對象,該Class對象中保存了創建對象所需的所有信息。
可以用.class返回此 Object 的運行時類Class對象,也可以用getClass()獲得。
獲得此對象後可以利用此Class對象的一些反射特性進行操作,
例如:
this.getClass().newInstance(); //用預設構造函數創建一個該類的對象
this.getClass().getInterfaces(); //獲得此類實現的介面信息
this.getClass().getMethods();//獲得此類實現的所有公有方法
Class.forName(" ... JDBC driver class name...."); // Class類的靜態方法forName, 向DiverManager注冊這個JDBC driver類
❽ java的.class和.this是什麼什麼是封閉類為什麼只有封閉類才可以使用.this
你可以這樣理解,.this是指當前運行時實例化的這個特定對象,因為只有封裝的類才能實例化出對象,所以是有封裝類才能使用.this;.class是運行時這個實例化對象的類信息,用於反射
❾ 誰能系統的講解一下JAVA里this的性質和用法
this關鍵字是對一個對象的默認引用。this關鍵字用來表示以後調用當前方法的對象的引版用。
Ø 使用this調用權成員變數,解決成員變數和局部變數的同名沖突
Ø 使用this調用成員方法
Ø 使用this調用重載的構造方法,只能在構造方法中使用,必須是構造方法的第一條語句
❿ Java 單例模式同步鎖this與Class的區別
synchronized(this) 表示的是所有線程需要排隊獲取當前類的實例的鎖;而 synchronized(xxx.class) 表示的是所有線程內需要排隊獲容取當前類的鎖;區別就在於 this 是一個實例,而 xxx.class 是一個整個的 class 信息。