【初心者】Javaのデータ型
はじめに
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
メソッドを使います。
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メソッド
は、数値型の全てのラッパークラスで使用できます(つまり、Byte
、Short
、Integer
、Long
、Float
、Double
の6つ)。
1-2-2. 文字列型から数値型への変換
文字列型から数値型に変換するには、valueOfメソッドを使います。
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. 文字列の長さを取得する
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. ビット演算子の使い方
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を出力
}
}
メモ
個人的な備忘として限定公開にしていましたが、参照するのが面倒なので全体に公開とさせていただきました。
限定公開にした理由が思い出せないのですが、おそらく半端な記述があるように思います。
何か間違いなどあればご指摘をいただけると幸いです。
Author And Source
この問題について(【初心者】Javaのデータ型), 我々は、より多くの情報をここで見つけました https://qiita.com/t-yama-3/items/94ce9082b8c1eafda38f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .