■データ型・文字列クラス
はじめに
いきなりデータ型と聞くとなんだか難しそうに聞こえますよね?
でもデータ型とは単なる 箱(型) の事です。
プログラムでは、値は箱に入れて使います。
例えば、調味料入れ。自宅にありませんか?
塩には塩の調味料入れ。胡椒には胡椒の調味料入れがありますよね。
そんな感じで、プログラムでも値を入れるために箱を準備します。
この章では、javaにはどんな 箱(型) があって、
そこにはどんな 値 が入れれるのかを詳しく学んでいきましょう!
step1: データ型と値の関係性
javaで扱われる データ型 の一覧表です。
種類 | データ型名 | 扱える値・範囲 |
---|---|---|
整数型 | byte | -128 ~ 127 までの整数を取り扱える箱 |
整数型 | short | -32768 ~ 32767 までの整数を取り扱える箱 |
整数型 | int | -2147483648 ~ 2147483647 までの整数を取り扱える箱 |
整数型 | long | -92223372036854775808 ~ 9223372036854775807 までの整数を取り扱える箱 |
浮動小数点型 | float | ± 3.4 × 1039 ~ ± 1.4 × 10 – 45 細かい数字を扱える箱 |
浮動小数点型 | double | ± 1.8 × 10308 ~ ± 3.4 × 10 – 324 さらに細かい数字を扱える箱 |
論理型 | boolean | true ( 真 ) or false ( 偽 ) 真偽を測る箱 |
文字型 | char | ‘あ’ 、 ‘虹’ などの一文字を扱える箱 |
文字列クラス | String | “java”、”勉強”、”Mac” などの複数の文字を扱える箱 |
解説
表を見てわかることがいくつかありますね。
javaでは、 箱 = データ型 に対して入れられる値が決まっています。
データ型は byte
int
boolean
のことで、それぞれ扱える値が決められているんですね。
この表を見て、徐々に関係性を覚えて行きましょう!
型と値の関係性を覚えるコツ
型は、 形容詞的なものに置き換える とイメージが湧きやすいかもしれません!
例えば、 「味覚」 について考えてみると、、、
「 甘味、酸味、塩味、苦味、旨味 」の5つが存在するのは有名なお話ですよね。
この基本の5つの味が 型 であるとするならば以下のように定義できます!
【サンプル: 型】
以下は理解の補助のために用意したもので、
実際に動くコードではありませんが、是非ご参考にしてください!
/* --- 型と変数名は形容詞で考えてみます --- */ あまい sweet = お砂糖; 塩辛い salty = お塩; 酸っぱい sour = お酢; 苦い bitter = カカオ100%; 旨い tasty = 昆布; // ○: 型が一致 sweet = 森○DARS(ミルク); // ✕: 型が不一致 sweet = 特選○大豆醤油;
どうでしょうか?
先程よりしっくり来たのであれば、是非その感覚を維持していきましょう!
Step2: データ型の使い方
Step1では、 データ型(箱) と 値 の説明でしたが、
今度は使い方を学びましょう!
変数
データ型と値を扱うためには、
変数 というものについて触れる必要があるので順を追ってみていきましょう!
以下、プログラミング言語における「変数」の特徴です!
- 変数は、情報の出し入れを行える 入れ物(例: 箱のようなもの)
- 変数の中身は、 書き換え(or 上書き)が可能
- 変数は、 情報を一定期間記憶しておける
- 変数には、 名前を付与 する
上記を踏まえた上で、データ型や値と関連性を持たせ噛み砕いていくと、、、
・「何かの数値や、文字などの値にキーワードを付与して、 一時的に保存しておける」考え方
と紐付けることができます。
まだ難しそうですので、もう少し切り口を変えてみます!
例えば、、、
今までの人生で「 感動したこと 」 ってあると思うのですが、
それってきっと「 思い出として記憶に残っている 」のではないでしょうか?
そしてそれを思い出すときって「 小学生の頃、夏休みに家族と行った旅行 」のように、
「 その内容と一緒に思い出すためのキーワード 」が付随しているのではないでしょうか?
そして上記イメージを変換していくと、、、
- ・データ型(カテゴリ/ジャンル)
- 思い出
- ・変数名(キーワード/タイトル)
- 小学生の頃、夏休みに家族と行った旅行
- ・値(データ型に対応する内容)
- 思い出(記憶)の内容
のような組み合わせで考えることができます。
あ、なんとなく掴めた!
と思えていただければ幸いです!
イメージは大切ですので、
もし上記の例でしっくりこないなーという方は、
変数における特徴から自身でイメージを膨らませてみるといいでしょう!
例題
public class Curriculum { public static void main(String[] args) { //int型を宣言して、「seisu」という変数名をつけて、1234で初期化する。 int seisu = 1234; System.out.println("int型 = 整数 = " + seisu); } }
【実行結果】
int型 = 整数 = 1234
解説
上記の例題にある、int seisu = 1234;
を分解して解説していきます。
- ・変数の宣言
- これから何のデータ型を作るのかの宣言になります。
今回はint
型で宣言しているため、「int型」の「seisu」という変数を扱うよ!
初期値は「12345」だよ!ということになります。 - ・変数名
seisu
はデータ型の名前で、データ型には必ず名前をつける必要があります。
どういう名前をつけるかは自由です。
自由ですが、何を入れてるものなのか分かりやすい名前をつけましょう!
【サンプル: 命名規則 その1】
// 良い例 String fruit = "りんご"; // 悪い例 String vegetables = "牛肉";
悪い例は、明らかに入れ物と値が噛み合っていませんよね?
変数の宣言では、こういった 矛盾や意味の齟齬が発生しないような命名が大切 になります。
【サンプル: 命名規則 その2】
// 良い例 int lineNumber = 123; // 悪い例 String linenumber = "456";
こちらは何が悪いかというと、
変数名で使用されている英単語がすべて小文字であるため、変数名の意味が一瞬分かりづらくなっている点です。
基本は、単語ひとつひとつの意味がわかりやすいように、
2つ目以降の単語は、頭文字を大文字にして記述 していきます。
(※ラクダのコブのようなの見た目から、 キャメルケース と呼ばれる書き方になります。)
- ・初期化
- 変数を宣言した後でその変数に値を格納したい場合(最初から値を格納したい場合)は、
「定義した変数 = 格納したい値
」という書き方で実現できます。 - ・
;
(セミコロン) - これは句点(。)の意味があります。
忘れずに、最後は;
で閉めましょう。
セミコロンが無い場合は、コンパイルエラーが発生します。
(※コンパイルエラーは、 後述のStep4: エラー(コンパイルエラー) で解説します。)
データ型
+ 変数名
+ =
+ 値
という順番で成り立ってることが分かります。
基本的な構造なので、しっかり抑えておきましょう。
System.out.println()について
例題にて System.out.println("int型 = 整数 = " + seisu);
という記述があります。
printlnメソッド などと呼んだりしますが、何を表示させるか指示できるものです。英語の意味そのままですね。
()
の中に表示してもらいたいものをいれます。
注目していただきたい部分は ()
の中に seisu
という記述があることです。
直訳すると、 「seisuを表示する」 となります。
ここで言う seisu とは何か…
int seisu = 1234;
→ seisu = 1234
→ 1234
だから、【実行結果】の時に、int型 = 整数 = 1234(seisu)
となるんですね。
System.out.println()
については、
カリキュラムを進める内に、嫌でも覚えてくるので、心配無用です。
補足
- ・
System.out.print()
- 類似機能として、
System.out.print()
が存在します。
System.out.println()
との違いは、コンソールへの出力時に、出力内容の末尾に 改行文字が入るか入らないか という点です!
(メソッド名のln(エルエヌ)
が line という単語を指し示していて、使用者はそこで判別して使い分けることができます。 - ・改行文字
- Windows:
¥n(円マーク + n)
Mac:\n(バックスラッシュ + n)
文字列中に上記改行文字を入れるなどして、System.out.print()
などで出力すると改行されていることが確認できます。
【サンプル】
System.out.print("ABC\nDEF")
【出力結果】
ABC DEF
Step3: 文字列・Stringクラス ー【String】
javaには複数の文字を代入できる 文字列クラス の String
というものがあります。
(※ String
に関しては、 他のデータ型と違い、 型ではなくクラス になります。)
データ型の char
でも文字を扱えると学びましたが、一文字しか扱えません。
なので複数の文字を扱えるString
の方が圧倒的に使いやすいです。
文字(文字列) を扱う時は、String
クラスを使ってきましょう!
例題
public class Curriculum2 { public static void main(String[] args) { // Stringクラスを宣言して、変数名はmojiで「javaはプログラム言語」で初期化 String moji = "javaはプログラム言語"; System.out.print(moji); } }
【実行結果】
javaはプログラム言語
解説
お気づきの方もいるかと思いますが、使い方はデータ型の使い方と全く同じです。
文字列クラス もStringクラス
+ 変数名
+ =
+ 値
で成り立っています。
一つだけ注意していただきたいのが、"javaはプログラム言語"
の " "
の部分です。
文字をコードに記述する時は、 " "(ダブルクォーテーション)
の間に文字を記述するのがお決まりです。
忘れずに覚えておきましょう!
とはいえ、このあたりもカリキュラムを進めていけば自然に身について行きますのでご安心を。
Step4: エラー(コンパイルエラー)
下記の場合はエラーとなります!型や値には注意しましょう。
エラーになる記述例
// 一文字じゃないのでエラー char c = 'ad'; //「true」か「false」しか入らないのでエラー boolean b = 1234; // 扱える範囲を超えているのでエラー byte by = -500; // 少数点を扱えないので、エラー int i = 3.442;
上記はいずれも「型」と「値」の関係に対するエラーです。
エラーになる場合は、何かしらの 間違い が必ずあります。
データ型・クラスに対して、扱える値は決まっているので注意して記述してきましょう。
提出課題
提出ファイル
curriculumリポジトリに「JavaStudy」というディレクトリを作成して、その中に「1-1」というディレクトリを作成し、そこに課題を作成してください。
ファイル階層は
Windowsなら C:\LetsEngineer\curriculum\JavaStudy\1-1\
Macなら /Users/※ユーザー名※/LetsEngineer/curriculum/JavaStudy/1-1/
になります。
・Task1_1.java (下記コードをコピーしてください)
・Task1_1.class (コンパイル時に生成されます)
-
/** * Task1_1: 課題内容 * * 本課題では、データ型・文字列の使い方を学んでいきましょう。 * 問①から問⑧まであります。 * 指定された型・値・変数名を守って記述してください。 * 問③,⑦については、コメントを入れてください。 * */ public class Task1_1 { public static void main(String[] args) { // ①int型の hogeInt という名前の変数を宣言し、値「50」で初期化 // ②Stringクラスの hogeString という名前の変数を宣言、値「テスト」で初期化 // ③下記の処理について、何をしているのかコメントを記入してください // [ここへ記述] double hogeDouble = 0.2; // ④変数 hogeInt を値「100」で上書き // ⑤変数 hogeString を値「合格」で上書き // ⑥変数 hogeInt の値を表示 // ⑦下記の処理について、何をしているのかコメントを記入してください // [ここへ記述] System.out.println(hogeString); // ⑧変数 hogeDouble の値を表示 } }
- 以下の添付画像のようにコンソールへ出力されるよう課題を実施し提出してください
コンパイルと実行の仕方については下記を確認しましょう。
Hello Worldを出してみる(Windowsの方)
Hello Worldを出してみる(Macの方)
提出方法については、カリキュラムの課題提出方法の通りにお願いします。