JavaRush /Java Blog /Random-JA /コーヒーブレイク#190。整数を文字列に変換する方法。Javaの静的および非静的内部クラス

コーヒーブレイク#190。整数を文字列に変換する方法。Javaの静的および非静的内部クラス

Random-JA グループに公開済み

整数を文字列に変換する方法

出典: FreeCodeCamp このチュートリアルでは、整数を文字列に変換するいくつかの方法を説明します。 コーヒーブレイク#190。 整数を文字列に変換する方法。 Java の静的および非静的内部クラス - 1変数をあるデータ型から別のデータ型に変換するために、Java 言語はさまざまなメソッドを使用します。Integer を String に変換する場合、次のいずれかの方法を使用できます。
  • Integer.toString()メソッドを使用します。
  • String.valueOf()メソッドを使用します。
  • String.format()メソッドを使用します。
  • DecimalFormatクラスを使用します。

Integer.toString() を使用して Java で整数を文字列に変換する方法

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
    }
}
この例では、整数のageを作成し、値2を割り当てました。age 変数を文字列に変換するには、それをパラメータとして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になったこと を確認できます。

String.valueOf() を使用して Java で整数を文字列に変換する方法

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

String.format() を使用して Java で整数を文字列に変換する方法

String.format()メソッドは、フォーマット指定子とフォーマットされる変数の 2 つのパラメータを取ります。以下に例を示します。
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

    }
}
この例では、"%d"ageという2 つのパラメーターをString.format()メソッドに渡しました。 「%d」は、フォーマットされる変数が整数であることを示すフォーマット指定子です。 2 番目のパラメータであるage は文字列に変換され、AGE_AS_STRING変数に格納されます。変換前と変換後の変数の型を確認することもできます。
System.out.println(((Object)age).getClass().getSimpleName());
// Integer

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

DecimalFormatを使用してJavaで整数を文字列に変換する方法

DecimalFormatクラスは、Java で 10 進数をフォーマットするために使用されます。さまざまな方法で使用できますが、ここでは整数を文字列に変換するために使用します。以下に例を示します。
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クラスを使用できるようにするために、それをインポートしました
  2. 整数変数ageを作成しました。
  3. 次に、 DFormatという新しいDecimalFormatオブジェクトを作成しました。
  4. オブジェクトのformat()メソッドを使用して、年齢を文字列に変換しました。DFormat.format(age);

結論

この記事では、Java での整数から文字列への変換について説明しました。Integer.toString()String.valueOf()String.format()、およびDecimalFormatクラスの3 つの異なるメソッドを使用したコード例を確認しました。各例では、変換プロセスと、変換前後の変数のデータ型の確認を示します。

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
ここで、アウター クラスには内部クラスInnerがあり、このインナー クラスにはprintXメソッドがあります。そして、周囲の外側のインスタンスから値 x を出力します。このコードは、2 つのアウターインスタンス( outer1external2 ) と 2 つのインナーインスタンス( inner1inner2 ) を作成し、それぞれが異なるアウターインスタンスに関連付けられます。printX がinner1inner2を呼び出すと、対応するアウターインスタンスから値 x を出力します。非静的内部クラスには周囲のインスタンスへの暗黙的な参照があるため、この参照を保存するには追加のメモリが必要です。これは、外側のインスタンスへの暗黙的な参照を持たず、この目的のために追加のメモリを必要としない静的内部クラスよりもメモリ効率が低いことを意味します。一方、静的内部クラスは外部クラスのインスタンス変数やメソッドにアクセスできないため、その機能は制限されています。これらは、外部クラスと密接に関連しており、そのインスタンス変数やメソッドにアクセスする必要のないクラスを定義する場合に便利です。非静的内部クラス (内部クラスまたは内部オブジェクトとも呼ばれます) は、別のクラスと密接に関連し、外部クラスのインスタンス変数およびメソッドにアクセスできるクラスを定義する場合に便利です。

非静的内部クラスの使用

非静的内部クラスを使用する必要がある状況をいくつか示します。
  1. 内部クラスが、静的ではない外部クラスのインスタンス変数またはメソッドにアクセスする必要がある場合。非静的内部クラスには外部クラスの周囲のインスタンスへの暗黙的な参照があるため、非静的インスタンス変数およびメソッドに直接アクセスできます。

  2. 外部クラスの異なるインスタンスに関連付けられた内部クラスの複数のインスタンスを定義する場合。たとえば、Dialogクラスの非静的内部クラスButtonを作成すると、各Buttonインスタンスが別のDialogインスタンスに関連付けられ、 Dialogインスタンスのインスタンス変数とメソッドにアクセスできるようになります。

  3. 外部クラスのコンテキスト内でのみ使用され、独立して使用することを意図していないクラスを定義する場合。非静的内部クラスは外部クラスからのみアクセスできるため、よりカプセル化され、意図しない使用の影響を受けにくくなります。

静的内部クラスの使用

外部クラスのインスタンス変数やメソッドにアクセスする必要がない場合は、静的内部クラスを使用できます。このため、外部クラスの周囲のインスタンスへの暗黙的な参照を持つ必要がありません。これにより、周囲のインスタンスへの暗黙的な参照を持つ非静的内部クラスよりもメモリ効率が高くなります。軌跡 (エッジ) と交点 (ノード) を含むグラフを設計する必要があるとします。Node クラスEdgeクラスは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
        }
    }
}
この例では、アウタークラスにはプライベート インスタンス変数xと静的内部クラスInnerがあります。内部クラスには、周囲の外部インスタンスから値xへのアクセスを試みるprintXメソッドがあります。ただし、静的内部クラスは外部クラスのインスタンス変数またはメソッドにアクセスできないため、このコードはコンパイルされません。静的内部クラスから外部クラスのインスタンス変数またはメソッドにアクセスするには、次の方法があります。
  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メソッドと、Outer型のフィールドを持つ静的内部クラスInner があります。Inner クラスには、Outerインスタンスを取得してそれを外部フィールドに格納するコンストラクターがあります。内部クラスのprintXメソッドは、outer.x表記を使用して外部インスタンスのxフィールドにアクセスできます。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION