1
2

More than 3 years have passed since last update.

【初心者】Javaのデータ型

Last updated at Posted at 2021-09-12

はじめに

Javaのデータ型と演算子についての備忘です。

1. Javaのデータ型

基本データ型ラッパークラス、あわせて関連するメソッドについてまとめておきます。

1-1. データ型一覧

Javaで用意されている基本データ型は次のようになります。
なお、最後のStringだけはデータ型ではなく、クラスオブジェクトとなります。

基本データ型 種類 サイズ 扱える範囲 ラッパークラス
byte (整数型) 1byte -128 ~ 127 Byte
short 短整数型 2byte -32,768 ~ 32,767 Short
int 整数型 4byte -2,147,483,648 ~ 2,147,483,647 Integer
long 長整数型 8byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 Long
float 単精度浮動小数点数型 4byte 有効桁数6桁の実数 Float
double 倍精度浮動小数点数型 8byte 有効桁数14桁の実数 Double
boolean 真偽型 1bit true 又は false Boolean
char 文字型 2byte 1文字 Character
String 文字列型 なし 最大2,147,483,647文字? -

<Stringオブジェクトの最大文字数について>
最大何文字まで格納できるかは、調べてもよく分かりませんでしたが、配列数の上限メモリの上限などに左右されるようです。

<C言語との相違点>
Javaのデータ型は、ほぼ、C言語と同じような構成になっていますが、相違点もあります。
気になったところは、次のとおりです。

C言語におけるlong型は4byteだが、Javaにおけるlong型は8byteである。そのため、Javaでは18桁までの整数を扱うことができる(C言語では9桁...という認識)。
C言語にはunsigned(符号なし整数)があるが、Javaの整数型にはunsignedは用意されていない(ただし、ラッパークラスで符号なし整数も表現できる)。

1-2. ラッパークラスについて

前述の基本データ型は、値のみ(数値リテラル、文字列リテラル)を格納します。
一方、ラッパークラスは、オブジェクト(参照型)としてデータを格納するため、様々なメソッドを使用することができます。
以下、ラッパークラスの使用例として、(個人的に)よく使いそうなメソッドを挙げておきます。

1-2-1. 数値型から文字列型への変換

数値型から文字列型に変換するには、toStringメソッドを使います。

Sample01.java
public class Sample01 {
  public static void main(String[] args) {
    int num = 10;
    String numStr = Integer.toString(num);  // toStringメソッドで文字列に変換

    System.out.println(num + 1);  // numは数値なので加算される
    System.out.println(numStr + 1);  // numStrは文字列なので文字列として結合される
  }
}
ターミナル
$ javac Sample01.java 
$ java Sample01
11
101

toStringメソッドは、数値型の全てのラッパークラスで使用できます(つまり、ByteShortIntegerLongFloatDoubleの6つ)。

1-2-2. 文字列型から数値型への変換

文字列型から数値型に変換するには、valueOfメソッドを使います。

Sample02.java
public class Sample02 {
  public static void main(String[] args) {
    String numStr = "100";
    int num = Integer.valueOf(numStr);  // valueOfメソッドで文字列に変換

    System.out.println(numStr + 1);  // numStrは文字列なので文字列として結合される
    System.out.println(num + 1);  // numは数値なので加算される
  }
}
ターミナル
$ javac Sample02.java
$ java Sample02
1001
101

1-3. Stringオブジェクトについて

これは、ラッパークラスではないですが、必要性の高いものなので挙げておきます。

1-3-1. 文字列の長さを取得する

Sample03.java
public class Sample03 {
  public static void main(String[] args) {
    String str1 = "あいうえお";  // 日本語文字列
    System.out.println(str1.length());  // 5文字

    String str2 = "abcdefg";  // 英語文字列
    System.out.println(str2.length());  // 7文字
  }
}

2. Javaの演算子

2-1. 主な演算子一覧

演算子 説明 種類
+ 加算 算術演算子
- 減算 算術演算子
* 乗算 算術演算子
/ 除算 算術演算子
% 剰余 算術演算子
++ 1加算(インクリメント) 算術演算子(単項)
-- 1減算(デクリメント) 算術演算子(単項)
+= 和の代入 代入演算子
-= 差の代入 代入演算子
*= 積の代入 代入演算子
/= 商の代入 代入演算子
& ビットAND ビット演算子
| ビットOR ビット演算子
^ ビットXOR ビット演算子
~ ビットNOT ビット演算子(単項)
<< ビット左シフト ビット演算子
>> ビット右シフト ビット演算子

2-2. ビット演算子の使い方

Bitop.java
public class Bitop {
  public static void main(String[] args) {
    int n1 = 4;  // 2進数 0100
    int n2 = 5;  // 2進数 0101
    int n;

    n = n1 & n2;  // 0100 and 0101 = 0100
    System.out.println(n);  // 4を出力

    n = n1 | n2;  // 0100 or 0101 = 0101
    System.out.println(n);  // 5を出力

    n = n1 ^ n2;  // 0100 xor 0101 = 0001
    System.out.println(n);  // 1を出力

    n = ~n1;  // ~0100 = 1011
    System.out.println(n);  // -5を出力(0100 の 2の補数)

    n = n1 << 1;  // 0100 を左に1ずらす = 1000
    System.out.println(n);  // 8を出力

    n = n1 >> 2;  // 0100 を右に2ずらす = 0001
    System.out.println(n);  // 1を出力
  }
}

メモ

個人的な備忘として限定公開にしていましたが、参照するのが面倒なので全体に公開とさせていただきました。
限定公開にした理由が思い出せないのですが、おそらく半端な記述があるように思います。
何か間違いなどあればご指摘をいただけると幸いです。

1
2
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
1
2