JavaRush /Java Blog /Random-TW /喝咖啡休息#190。如何將整數轉換為字串。Java中的靜態與非靜態內部類

喝咖啡休息#190。如何將整數轉換為字串。Java中的靜態與非靜態內部類

在 Random-TW 群組發布

如何將整數轉換為字串

來源:FreeCodeCamp 本教學將告訴您幾種將整數轉換為字串的方法。 喝咖啡休息#190。 如何將整數轉換為字串。 Java中的靜態與非靜態內部類別 - 1為了將變數從一種資料類型轉換為另一種資料類型,Java 語言使用各種方法。在將 Integer 轉換為 String 的情況下,可以使用下列方法之一:
  • 使用Integer.toString()方法。
  • 使用String.valueOf()方法。
  • 使用String.format()方法。
  • 使用DecimalFormat類別。

如何在 Java 中使用 Integer.toString() 將整數轉換為字串

Integer.toString()方法採用要轉換的整數作為參數。語法範例:
Integer.toString(INTEGER_VARIABLE)
範例程式碼:
class IntToStr {
    public static void main(String[] args) {

        int age = 2;
        String AGE_AS_STRING = Integer.toString(age);

        System.out.println("The child is " + AGE_AS_STRING + " years old");
        // The child is 2 years old
    }
}
在此範例中,我們建立了一個整數年齡並為其分配了值2。要將年齡變數轉換為字串,我們將其作為參數傳遞給Integer.toString() 方法: Integer.toString(age)然後,我們將這個新字串值儲存在名為AGE_AS_STRING的字串變數中。最後,我們將新的字串變數與其他字串組合:"The child is " + AGE_AS_STRING + "years old"現在的問題是:如果我們只是將age變數與這些其他字串連接起來而不進行任何轉換, 會出現錯誤嗎?
class IntToStr {
    public static void main(String[] args) {

        int age = 2;

        System.out.println("The child is " + age + " years old");
        // The child is 2 years old
    }
}
輸出與我們需要將整數轉換為字串的範例相同。但我們如何知道類型轉換是否真正有效呢?為此,我們可以使用getClass()物件來檢查變數的類型。像這樣的東西:
class IntToStr {
    public static void main(String[] args) {

        int age = 2;

        String AGE_AS_STRING = Integer.toString(age);


        System.out.println(((Object)age).getClass().getSimpleName());
        // Integer

        System.out.println(AGE_AS_STRING.getClass().getSimpleName());
        // String
    }
}
現在我們可以驗證一下,age變數在建立時是一個Integer,經過型別轉換後它變成了一個String

如何在 Java 中使用 String.valueOf() 將整數轉換為字串

String.valueOf()方法也將要轉換為字串的變數作為參數。
class IntToStr {
    public static void main(String[] args) {

        int age = 2;

        String AGE_AS_STRING = String.valueOf(age);

        System.out.println("The child is " + AGE_AS_STRING + " years old");
        // The child is 2 years old
    }
}
上面的程式碼與上一節的程式碼類似:
  1. 我們建立了一個名為age的整數。
  2. 我們將整數年齡作為參數傳遞給String.valueOf() 方法: String.valueOf(age)
現在您可以使用getClass()物件檢查類型轉換是否有效:
System.out.println(((Object)age).getClass().getSimpleName());
// Integer

System.out.println(AGE_AS_STRING.getClass().getSimpleName());
// String

如何在 Java 中使用 String.format() 將整數轉換為字串

String.format()方法採用兩個參數:格式說明符和要格式化的變數。這是一個例子:
class IntToStr {
    public static void main(String[] args) {

        int age = 2;

        String AGE_AS_STRING = String.format("%d", age);

        System.out.println("The child is " + AGE_AS_STRING + " years old");
        // The child is 2 years old

    }
}
在此範例中,我們向String.format()方法傳遞了兩個參數: “%d”age「%d」是格式說明符,指示正在格式化的變數是整數。 第二個參數age將會轉換為字串並儲存在AGE_AS_STRING變數中。您也可以檢查轉換前後變數的類型:
System.out.println(((Object)age).getClass().getSimpleName());
// Integer

System.out.println(AGE_AS_STRING.getClass().getSimpleName());
// String

如何在 Java 中使用 DecimalFormat 將整數轉換為字串

DecimalFormat類別用於在 Java 中格式化十進制數。它可以以多種不同的方式使用,但現在我們將使用它將整數轉換為字串。這是一個例子:
import java.text.DecimalFormat;

class IntToStr {
    public static void main(String[] args) {

        int age = 2;

        DecimalFormat DFormat = new DecimalFormat("#");


        String AGE_AS_STRING = DFormat.format(age);

        System.out.println("The child is " + AGE_AS_STRING + " years old");
        // The child is 2 years old


        System.out.println(((Object)age).getClass().getSimpleName());
        // Integer

        System.out.println(AGE_AS_STRING.getClass().getSimpleName());
        // String

    }
}
我們來看看這段程式碼:
  1. 為了能夠在特定範例中使用DecimalFormat類,我們導入了它: import java.text.DecimalFormat;
  2. 我們創建了一個整數變數age
  3. 然後我們建立了一個名為DFormat的新DecimalFormat物件。
  4. 使用物件的format()方法,我們將年齡轉換為字串:DFormat.format(age);

結論

在本文中,我們討論了在 Java 中將整數轉換為字串。您看到了使用三種不同方法的程式碼範例:Integer.toString()String.valueOf()String.format()DecimalFormat class 。每個範例都顯示了轉換過程以及轉換前後變數的資料類型檢查。

Java中的靜態與非靜態內部類

來源:Medium 透過本文,您將了解 Java 中靜態內部類別和非靜態內部類別之間的差異。 在 Java 中,非靜態內部類別(也稱為內部類別或內部物件)具有外部類別的封閉實例的隱式參考。這意味著它們可以存取外部類別的實例變數和方法,並且可用於建立與外部類別的不同實例關聯的內部類別的多個實例。我們看下面的程式碼:
class Outer {
    private int x;
 class Inner {
        public void printX() {
            System.out.println(x);
        }
    }
}
Outer outer1 = new Outer();
outer1.x = 5;
Outer.Inner inner1 = outer1.new Inner();
inner1.printX(); // prints 5
Outer outer2 = new Outer();
outer2.x = 10;
Outer.Inner inner2 = outer2.new Inner();
inner2.printX(); // prints 10
這裡, Outer 類別有一個內部類別Inner,它有一個printX方法。反過來,它從周圍的Outer實例中列印值 x 。程式碼建立兩個外部實例(outer1outer2)和兩個內部實例(inner1inner2 ),每個實例與不同的外部實例關聯。當printX呼叫inner1inner2時,它會列印對應Outer實例中的值x 。由於非靜態內部類別具有對周圍實例的隱式引用,因此它們需要額外的記憶體來儲存此引用。這意味著它們的記憶體效率低於靜態內部類,靜態內部類別沒有對封閉實例的隱式引用,並且為此不需要額外的記憶體。另一方面,靜態內部類別無法存取外部類別實例變數或方法,因此它們的功能受到限制。當您想要定義一個與外部類別密切相關且不需要存取其實例變數或方法的類別時,它們非常有用。當您想要定義一個與另一個類別密切相關並且可以存取外部類別的實例變數和方法的類別時,非靜態內部類別(也稱為內部類別或內部物件)非常有用。

使用非靜態內部類別

以下是您可能想要使用非靜態內部類別的幾種情況:
  1. 當內部類別需要存取外部類別非static的實例變數或方法。由於非靜態內部類別具有外部類別周圍實例的隱式引用,因此它們可以直接存取非靜態實例變數和方法。

  2. 當您想要定義與外部類別的不同實例關聯的內部類別的多個實例時。例如,您可能想要為Dialog類別建立一個非靜態內部類別Button,其中每個Button實例都與另一個Dialog實例關聯,並且可以存取Dialog實例的實例變數和方法。

  3. 當您想要定義一個僅在外部類別的上下文中使用且不打算獨立使用的類別。非靜態內部類別只能從外部類別訪問,因此它們的封裝性更強,不易被意外使用。

使用靜態內部類別

如果我們不需要存取外部類別的任何實例變數或方法,則可以使用靜態內部類,因此它們不需要對外部類別的周圍實例有隱式參考。這使得它們比非靜態內部類別具有更高的記憶體效率,非靜態內部類別具有對周圍實例的隱式參考。假設我們需要設計一個包含軌跡(邊)和交點(節點)的圖。NodeEdge類別與Graph類別密切相關,並且僅在Graph物件的上下文中使用。將它們定義為靜態內部類別可以清楚地表明它們是Graph類別的一部分,並且不打算獨立使用。
public class Graph {

    Map <String, Node> nodeMap;

    public Graph () {
        nodeMap = new HashMap<>();
    }

    static class Node {
        String name;
        List <Edge> edgeList;

        public Node(String name) {
            this.name = name;
            edgeList = new ArrayList();
        }
    }

    static class Edge {
        Node source;
        Node Destination;
        String type;

        public Edge(Node source, Node destination, String type) {
            this.Destination = destination;
            this.source = source;
            this.type = type;
        }
    }

}
靜態內部類別不能存取外部類別的實例變數或方法下面透過一個例子來說明靜態內部類別不能存取外部類別的實例變數或方法:
class Outer {
    private int x;
static class Inner {
        public void printX() {
            System.out.println(x);  // compilation error: cannot access x
        }
    }
}
在此範例中,Outer類別有一個私有實例變數x和一個靜態內部類別Inner內部類別有一個printX方法,該方法嘗試從周圍的外部實例存取值x。但是,此程式碼將無法編譯,因為靜態內部類別無法存取外部類別實例變數或方法。若要從靜態內部類別存取外部類別的實例變數或方法,您可以:
  1. 建立靜態實例變數或方法。這將允許內部類別使用外部類別名稱(例如Outer.x)來引用它們。

  2. 將外部類別的實例傳遞給內部類別並將其儲存在欄位中。然後內部類別可以透過該欄位存取外部類別的實例變數或方法。

下面的範例展示如何執行此操作:
class Outer {
    private int x;
public void setX(int x) {
        this.x = x;
    }
    static class Inner {
        Outer outer;
        public Inner(Outer outer) {
            this.outer = outer;
        }
        public void printX() {
            System.out.println(outer.x);
        }
    }
}
Outer outer = new Outer();
outer.setX(5);
Outer.Inner inner = new Outer.Inner(outer);
inner.printX();  // prints 5
在此範例中, Outer 類別具有一個用於設定x值的非靜態setX方法,以及一個靜態內部類別Inner,其欄位external類型為Outer。Inner 類別有一個建構函數,它接受一個Outer實例並將其儲存在外層欄位中。然後,內部類別的printX方法可以使用external.x notation存取外部實例的x字段。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION