0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java Silver確実合格を目指すカレンダーAdvent Calendar 2024

Day 2

【Java】Javaで使う型について

Last updated at Posted at 2024-12-01

初めに

Javaでは数値や文字列を扱うための型という定義が存在する。これらは別の型から別の型に変換できるものもあれば、変換に一工夫が必要なものもある。

型の種類について

Javaで取り扱う型は以下が存在する。

〇基本データ型(プリミティブ型)
値をそのまま保持するイメージ。

型名 分類 範囲 サイズ
byte 整数 -128~127 8bit
short 整数 −32,768 ~ 32,767 16bit
int 整数 −2,147,483,648 ~ 2,147,483,647 32bit
long 整数 −9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 64bit
float 小数 32bit
double 小数 64bit
char 1文字 16bit
boolean 真偽値 1bit

整数のデフォルトはint型、小数のデフォルトはdouble型である。またlong型では末尾にL、float型では末尾にFをつける。

〇参照型
メモリ上に存在するデータを参照するイメージ。

型名 分類
String 文字列

なおString型はchar[]のようなイメージ。String型でabcの文字列があったとしたら以下のように考えることができる。
image.png

またString型は参照型だが疑似プリミティブ型とも呼ばれる。その理由として不変性がある。

突然だが以下のようなソースの結果はどうなるだろうか?

Main.java
public class Main {
	public static void main(String[] args) {
		String str = "Hello";
		str.replace("H", "A");
		System.out.println(str);
	}
}

replaceメソッドは第一引数の文字を第二引数の文字に置き変えするメソッドである。どのような結果になるか考えてみよう。

解答はこちら
Hello

この場合Aelloにはならない。strは不変なオブジェクトなので、代入しない限りstr自体が変更されることは無い。

StringBuilderクラス

String型は不変だがStringBuilderクラスは可変なクラスである。以下の問題を考えてみよう。

Main.java
public class Main {
	public static void main(String[] args) {
		StringBuilder str = new StringBuilder("Hello");
		str.replace(0,1,"A");
		System.out.println(str);
	}
}
解答はこちら
Aello

この場合StringBuilerクラスは可変なので、replaceメソッドで文字列の書き換えが行われ、strにも反映される。ここで注意なのがreplaceメソッドの使い方。String型とは異なり、第1引数から第2引数までの文字を第3引数の文字に変換する。

まとめ

  • Javaでは基本データ型(プリミティブ型)と参照型が存在する
  • 整数を取り扱う型では取り扱うことができる範囲が異なるので注意
  • String型は不変なオブジェクトなので、代入されない限り値が変わることは無い
  • StringBuilderクラスは可変なので、文字列の書き換えが可能
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?