查看完整版本: 請問有像String 的用法嗎?
頁: [1]

ahway9988 發表於 2019-3-10 10:50 PM

請問有像String 的用法嗎?

已知 覆寫物件的toString() 方法可以讓物件在print印出已寫好的訊息:如下
public class T031022 {
    public static void main(String[] args) {
        Test t =new Test();
        System.out.println(t);
    }
}
class Test{
    @Override
    public String toString(){
        return "default output";
    }
}

即印出結果為:default output

但可以讓它像String 一樣,讓t 直接指定為某個字串 嗎? 如下

t="test output";
System.out.println(t);

就跟String 的用法一樣
感謝orz




...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

jackyo04 發表於 2019-3-11 08:26 AM

一般來說都是用String t = "test output";
如果不用String,至少要讓程式知道t是什麼東西,至於為何不用string這點就不太清楚你的需求

ahway9988 發表於 2019-3-11 09:33 AM

jackyo04 發表於 2019-3-11 08:26 AM static/image/common/back.gif
一般來說都是用String t = "test output";
如果不用String,至少要讓程式知道t是什麼東西,至於為何不用str ...

我想看java的自由度有多少,如果物件能夠=字串,那也表示也有可能讓它等於數字,或者說,甚至可以讓某A物件=B物件,如果能在內部先寫好賦值的是物件的那個屬性的話
我是因為想到物件會有toString 所以才會想說還有沒有其它像這樣的用法,toString  是輸出, 那有沒有輸入 這樣的問題  ...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

kwj 發表於 2019-3-11 07:58 PM

本帖最後由 kwj 於 2019-3-11 08:11 PM 編輯

ahway9988 發表於 2019-3-11 09:33 AM static/image/common/back.gif
我想看java的自由度有多少,如果物件能夠=字串,那也表示也有可能讓它等於數字,或者說,甚至可以讓某A物件=B ...
感覺您好像不太了解「強型別」的語言是怎麼回事....。建議您先去了解一下強型別和弱型別的差別,然後再來思考您的這個問題。

首先先幫忙釐清一個問題,您的問題中提到的這段程式碼:public class T031022 {
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println(t);
    }
}

class Test{
    @Override
    public String toString(){
        return "default output";
    }
}這段程式碼之所以能夠正確地印出 default output,是因為 System.out.println() 會隱性地自動呼叫物件的 toString() 函式。其中「隱性地」指的是即使我沒有在上面寫 t.toString(),它也會自動幫我呼叫 t.toString()。但這個特性僅限於 toString() 而已,因為這是 System.out.println() 這個方法裡面自己實作的。

推薦可以參考一下:http://www.codedata.com.tw/book/java-basic-source/ch11-5.htm

回到強型別的問題。如果我有兩個類別 A 和 B,互相之間沒有繼承(extend)或實作(implement)的關係,那麼這兩個類別就不能互相指派。例如下面的程式碼就會有 compile error。
public class A {}
public class B {}

public class Application {
  public static void main(String[] args) {
    A a = new A();
    B b = a; // compile error
    call(a);  // compile error, too
  }

  public static void call (B b) {
    // Do nothing
  }
}但如果 A 繼承了 B,則同樣的程式碼就不會有錯誤。
public class A extends B {}
public class B {}
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

ahway9988 發表於 2019-3-11 10:51 PM

kwj 發表於 2019-3-11 07:58 PM static/image/common/back.gif
感覺您好像不太了解「強型別」的語言是怎麼回事....。建議您先去了解一下強型別和弱型別的差別,然後再來 ...

突然懂了QQ
原來我一直搞錯,以為java 對物件執行會有它的行為,原來只是SyStem.out.println()自己有定義要怎麼處理toString ()方了 orz
繼承部份,還在頭痛中{:33:}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

wacla 發表於 2019-9-17 10:59 PM

本帖最後由 wacla 於 2019-9-17 11:01 PM 編輯

ahway9988 發表於 2019-3-11 09:33 AM static/image/common/back.gif
我想看java的自由度有多少,如果物件能夠=字串,那也表示也有可能讓它等於數字,或者說,甚至可以讓某A物件=B ...
一般來說 , 幾乎大部分的程式語言都是有宣告變數的動作 , 只是會分強弱型別.例如
Java宣告字串變數, 因為是強型別 , 所以必須明確說你現在要加什麼東西.
例如String word="Hello World";代表你這段程式要新增一個字串變數
如果你要自由度高一點的 , 通常會是弱型別語言 , 例如JavaScript , 就會是長下面這樣var word='Hello Word'由編譯器自己去判定處理.

好消息是從Java10有支援使用 var 宣告變數 , 如果你真的想用可以提升JDK版本去試試.
建議是用LTS版的Java11去測試.但說真的,既然都在學強型別的語言,先更熟悉一下語言會更好.
強型別的最大優點就是程式明確 , Debug好排錯 , 這種優點在人多的團隊工作就更明顯....<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

ahway9988 發表於 2019-9-30 06:38 AM

wacla 發表於 2019-9-17 10:59 PM static/image/common/back.gif
一般來說 , 幾乎大部分的程式語言都是有宣告變數的動作 , 只是會分強弱型別.例如
Java宣告字串變數, 因為 ...

謝謝你,我想問的就是這個
原來關鍵字是強弱型別。
頁: [1]