国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

(Thinking in Java)第13章 字符串

feng409 / 2241人閱讀

摘要:四上的操作看五格式化輸出運用和語言很相似和是等價的喲類格式化說明符轉換六正則表達式網上教程學七掃描輸入新增了類。

一、不可變String

String類型的對象是不可變的,所有的改變實際上都是創建了一個新的String對象,另外當String作為傳入參數的時候,其實實際上傳入的是這個引用的一個拷貝,這個方法結束了之后這個傳入的引用也就消失了,原來的那個String不會受到方法內的影響而改變。

package tij.string;

public class Test {
    String s = "field";
    Object o = "123";
    void change(String change_s) {
        System.out.println(this.s == change_s);
        System.out.println(this.s.hashCode() + "---" + change_s.hashCode());
        change_s = "change";
        System.out.println(this.s == change_s);
        System.out.println(this.s.hashCode() + "---" + change_s.hashCode());
    }

    public static void main(String[] args) {
        Test t = new Test();

        t.change(t.s);
        System.out.println(t.s);

        System.out.println("--------");

        t.change(t.o);
        System.out.println(t.o);

    }

    void change(Object o) {
        o = 123;
        System.out.println(this.o == o);
        System.out.println(this.s.hashCode() + "---" + o.hashCode());
    }
}

這個例子是我自己想的,在接收string參數的change方法(就叫暫時就change1啦)里,傳入的的確是t.s,在未對change_s進行操作的時候,傳入的change_s與t.s也的確完全相同,但是當改變了傳入參數change_s后,可以發現t.s并沒有改變。這就證實了,傳入的其實并不是t.s這個引用本身,而傳入的其實是這個引用的拷貝,為了對比,我還加入了傳入參數為object類型的change方法,對比可以發現,在接收Object方法的change中,傳入的就是引用本身。
另外還發現= =,change方法存在重寫,但是string是Object的子類,當傳遞string或string的子類的時候,優先調用傳遞參數是String的,沒有的話再去調用傳遞參數是object的方法。就是跟誰更親調用誰。

這句話說的挺好。

二、重載“+”與StringBuilder

String是不可變對象,但是String對象可以適用“+”這個運算符,由于String的不可變性,當String類型對象會變化的時候,推薦適用StringBuilder

三、無意識的遞歸

有時候你不小心就會用遞歸了,比如ArrayList類型對象的toString方法就會遍歷一圈,只不過你以為沒有遍歷而已。如果你真的想打印這個對象的地址,請用他父類Object的toString方法。

四、String上的操作

看API

五、格式化輸出 1.運用printf()
System.out.printf("%d",x);

和C語言很相似

2.System.out.format()
public class Test {
    public static void main(String[] args) {
        int x = 5;
        double y = 5.332542;
        System.out.printf("%d  %f", x, y);
        System.out.format("%d  %f", x, y);
    }
}

format和printf是等價的喲

3.Formatter類

import java.io.PrintStream;
import java.util.Formatter;

public class Test {

    public static void main(String[] args) {
        PrintStream outAlias = System.out;
        Turtle tommy = new Turtle("Tommy", new Formatter(outAlias));
        Turtle terry = new Turtle("Terry", new Formatter(outAlias));
        tommy.move(0, 0);
        terry.move(4, 0);
    }
}

class Turtle {
    private String name;
    private Formatter f;

    public Turtle(String name, Formatter f) {
        this.name = name;
        this.f = f;
    }

    public void move(int x, int y) {
        f.format("%s The Turetle is ad (%d,%d)
", name, x, y);
    }
}

4.格式化說明符

import java.io.PrintStream;
import java.util.Formatter;

public class Test {

    public static void main(String[] args) {
        Receipt receipt = new Receipt();
        receipt.printTitle();
        receipt.print("Princess Peas", 3, 5.1);
    }
}

class Receipt {
    private double total = 0;
    private Formatter f = new Formatter(System.out);

    public void printTitle() {
        f.format("0123456789012345678901234567890
");
        f.format("%-15s %5s %10s
", "Item", "Qty", "Price");
        f.format("%-15s %5s %10s
", "----", "---", "-----");
    }

    public void print(String name, int qty, double price) {
        f.format("%-15.15s %5d %10.2f
", name, qty, price);
        total += price;
    }

}
5.Formatter轉換


6.String.format

public class Test {

    public static void main(String[] args) {
        int x = 3;
        double y = 5.1231315;
        String result = String.format("[%d %.2f]", x, y);
        System.out.println(result);
    }
}
六、正則表達式

網上教程學

七、掃描輸入

Java SE5新增了Scanner類。
看書

八、StringTokenizer

廢棄

end

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67578.html

相關文章

  • Thinking in Java11 持有對象

    摘要:迭代器解決了這個問題。刪除后于是我們可以寫一個方法,接受一個類型,然后讓他調用方法,這就不需要考慮這個是個還是了,也就是說,可以將遍歷容器的操作與序列底層的結構分離,迭代器統一了對容器類的訪問方式。十二和兩種遍歷的方法,與迭代器方法。 一、泛型和類型安全的容器 package tij.hoding; import java.util.ArrayList; public class ...

    v1 評論0 收藏0
  • Thinking in Java14 類型信息

    摘要:通過運行時類型信息,程序能夠使用基類的指針或引用來檢查這些指針或引用所指的對象的實際派生類型。編程應該盡量面向接口編程,應該對類型信息盡量的少了解二對象看書,書上寫得好靜態語句塊在這個類被加載的時候運行。 一、為什么需要RTTI Run-Time Type Information。通過運行時類型信息,程序能夠使用基類的指針或引用來檢查這些指針或引用所指的對象的實際派生類型。編程應該盡量...

    tomorrowwu 評論0 收藏0
  • Thinking in Java10 內部類

    摘要:內部類中也可以取得這個外部類對象引用。創建成員內部類對象的時候需要外部類對象。另外在方法中的內部類不能加等權限修飾符,只能加和修飾符。可以在接口內部定義內部類,而且他們即使沒有修飾,也會自動變成的。 Thinking in Java撈干貨,寫筆記 一、成員內部類 1.最基本使用 public class Demo { class Contents{ privat...

    Brenner 評論0 收藏0
  • Thinking in Java9 接口

    摘要:但如果導出類還有抽象方法,那這個類還應該加上聲明為抽象類。并且接口具有繼承的一系列特點,如向上轉型等等。接口中的方法是自動是的。 Thinking in Java 好書全是干貨 一、抽象類和抽象方法 抽象方法:這種方法只有聲明而沒有方法體,下面是抽象方法生命所采用的語法 abstract void f(); 包含抽象方法的類叫做抽象類,如果一個類包含一個或多個抽象方法,該類必須被限定為...

    CoorChice 評論0 收藏0
  • Thinking in Java12 通過異常處理錯誤

    摘要:異常處理程序拋出的異常必須在異常處理程序中得到處理。終止與恢復異常處理有兩種模型,支持終止模型,一旦異常被拋出,表明錯誤無法挽回,無法退回來繼續執行之前出錯的代碼。對于異常來說,最重要的部分就是類名。 一、概念 使用異常能降低處理錯誤代碼的復雜程度,并且將錯誤在一個地方進行處理,于是將描述在正常行為過程中做過什么事的代碼和出了問題怎么辦的代碼相分離 二、基本異常 異常情形指的是當前環境...

    miguel.jiang 評論0 收藏0

發表評論

0條評論

feng409

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<