程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> test-Java菜鳥求助,謝謝大家

test-Java菜鳥求助,謝謝大家

編輯:編程綜合問答
Java菜鳥求助,謝謝大家

package test;
class Score{
private String name;
private int score;
Score(String name){
this.name=name;
}
Score(int score){
this.score=score;
}
Score(String name,int score){
this.name=name;
this.score=score;
}
public boolean compare(Score s){
return this.score==s.score;
}
}
public class ScoreDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
Score s1=new Score(89);
Score s2=new Score(90);
boolean b=s1.compare(s2);
System.out.println(b);

}

}
裡面的this不懂,能詳細講解一下嗎,謝謝

最佳回答:


/*
*同是菜鳥,這是我看到的資料,感覺挺好的分享給你,望采納!
*/
1. this是指當前對象自己。
當在一個類中要明確指出使用對象自己的的變量或函數時就應該加上this引用。如下面這個例子中:

public class Hello {

String s = "Hello";

public Hello(String s)
{
System.out.println("s = " + s);
System.out.println("1 -> this.s = " + this.s);
this.s = s;
System.out.println("2 -> this.s = " + this.s);
}

public static void main(String[] args) {
Hello x="new" Hello("HelloWorld!");
}
}

運行結果:

s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!

在這個例子中,構造函數Hello中,參數s與類Hello的變量s同名,這時如果直接對s進行操作則是對參數s進行操作。若要對類Hello的成員變量s進行操作就應該用this進行引用。運行結果的第一行就是直接對構造函數中傳遞過來的參數s進行打印結果; 第二行是對成員變量s的打印;第三行是先對成員變量s賦傳過來的參數s值後再打印,所以結果是HelloWorld!

  1. 把this作為參數傳遞 當你要把自己作為參數傳遞給別的對象時,也可以用this。如:

public class A {
public A() {
new B(this).print();
}

public void print() {
System.out.println("Hello from A!");
}
}

public class B {
A a;
public B(A a) {
this.a = a;
}

public void print() {
a.print();
System.out.println("Hello from B!");
}
}

運行結果:
Hello from A!
Hello from B!

在這個例子中,對象A的構造函數中,用new B(this)把對象A自己作為參數傳遞給了對象B的構造函數。

  1. 注意匿名類和內部類中的中的this。 有時候,我們會用到一些內部類和匿名類,如事件處理。當在匿?嘀杏胻his時,這個this則指的是匿名類或內部類本身。這時如果我們要使用外部類的方法和變量的話,則應該加上外部類的類名。如下面這個例子:

public class A {
int i = 1;

public A() {
Thread thread = new Thread() {
public void run() {
for(;;) {
A.this.run();
try {
sleep(1000);
} catch(InterruptedException ie) { }

}
}
}; //注意這裡有;
thread.start();
}

public void run() {
System.out.println("i = " + i);
i++;
}

public static void main(String[] args) throws Exception {
new A();
}

}

在上面這個例子中, thread 是一個匿名類對象,在它的定義中,它的 run 函數裡用到了外部類的 run 函數。這時由於函數同名,直接調用就不行了。這時有兩種辦法,一種就是把外部的 run 函數換一個名字,但這種辦法對於一個開發到中途的應用來說是不可取的。那麼就可以用這個例子中的辦法用外部類的類名加上 this 引用來說明要調用的是外部類的方法 run。

4。在構造函數中,通過this可以調用同一class中別的構造函數,如
public class Flower{
Flower (int petals){}
Flower(String ss){}
Flower(int petals, Sting ss){
//petals++;調用另一個構造函數的語句必須在最起始的位置
this(petals);
//this(ss);會產生錯誤,因為在一個構造函數中只能調用一個構造函數
}
}

值得注意的是:
1:在構造調用另一個構造函數,調用動作必須置於最起始的位置。
2:不能在構造函數以外的任何函數內調用構造函數。
3:在一個構造函數內只能調用一個構造函數。
參考資料: http://blog.ednchina.com/Kaos_linyong/17694/message.aspx

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved