Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Javaにおける文字列の不変性 | 文字列
Java入門

Javaにおける文字列の不変性

メニューを表示するにはスワイプしてください

すでにご存知の通り、Stringは顧客名、商品名、メッセージなどのテキストを格納します。しかし、JavaにおいてStringが特別なのは、**イミュータブル(不変)**であることです。

イミュータビリティとは、一度Stringオブジェクトが生成されると、その内容が変更できないことを意味します。文字列を変更するように見える操作は、実際には新しいStringオブジェクトを裏で作成しています。

Main.java

Main.java

123456789101112131415
package com.example; public class Main { public static void main(String[] args) { int stock = 20; String drink = "Espresso"; stock = 15; drink = "Cappuccino"; System.out.println(stock); // 15 System.out.println(drink); // Cappuccino } }

両方の変数が再代入されたにもかかわらず、内部的には異なる動作をします。intの場合、変数は値自体を直接格納しており、再代入は単純にその値を置き換えます。しかし、String参照型であり、変数はメモリ上のStringオブジェクトを指すアドレスを格納します。"Cappuccino"が代入されると、Javaは"Espresso"を変更せず、新しいStringオブジェクトを作成し、drinkがそれを指すようにします。元の"Espresso"オブジェクトは変更されません。

ステップごとの動作

String drink = "Espresso";

JavaはStringオブジェクト"Espresso"を作成し、drinkがそれを指します。

drink = "Cappuccino";

Javaは新しいStringオブジェクト"Cappuccino"を作成し、drinkは新しいオブジェクトを指します。"Espresso"はそのまま残ります。

question mark

Javaにおいて、Stringがイミュータブルであるとはどういう意味ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

Javaにおける文字列の不変性

すでにご存知の通り、Stringは顧客名、商品名、メッセージなどのテキストを格納します。しかし、JavaにおいてStringが特別なのは、**イミュータブル(不変)**であることです。

イミュータビリティとは、一度Stringオブジェクトが生成されると、その内容が変更できないことを意味します。文字列を変更するように見える操作は、実際には新しいStringオブジェクトを裏で作成しています。

Main.java

Main.java

123456789101112131415
package com.example; public class Main { public static void main(String[] args) { int stock = 20; String drink = "Espresso"; stock = 15; drink = "Cappuccino"; System.out.println(stock); // 15 System.out.println(drink); // Cappuccino } }

両方の変数が再代入されたにもかかわらず、内部的には異なる動作をします。intの場合、変数は値自体を直接格納しており、再代入は単純にその値を置き換えます。しかし、String参照型であり、変数はメモリ上のStringオブジェクトを指すアドレスを格納します。"Cappuccino"が代入されると、Javaは"Espresso"を変更せず、新しいStringオブジェクトを作成し、drinkがそれを指すようにします。元の"Espresso"オブジェクトは変更されません。

ステップごとの動作

String drink = "Espresso";

JavaはStringオブジェクト"Espresso"を作成し、drinkがそれを指します。

drink = "Cappuccino";

Javaは新しいStringオブジェクト"Cappuccino"を作成し、drinkは新しいオブジェクトを指します。"Espresso"はそのまま残ります。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  1
some-alt