Java入門

Android開発のためのJava入門 第7回「変数と型」

 

Android Studio 4.1.1 に対応しました!

ここまでの記事はこちら
 

今回のテーマは「変数と型」についてです。

「変数と型」はどのプログラミング言語においても欠かすことができないプログラミングの基礎です。

新しいことがたくさん出てくるかもしれませんが、一度に全て理解できなくても大丈夫です。
気軽に進めていきましょう

 


 

変数とは?

前回 textView.setText("こんにちは"); というコードを書きました。

前回は TextView が1つだけしかありませんでしたが、以下のように TextView が5つあると考えてみましょう。(実際にはこのようなコードになることはないと思いますが、あくまで例えとしてお考えください。)

textView1.setText("こんにちは");
textView2.setText("こんにちは");
textView3.setText("こんにちは");
textView4.setText("こんにちは");
textView5.setText("こんにちは");

 

実際にコードを書くとなると「こんにちは」を5回も書くことになります。

もし途中で「こんにちは」から「Hello」に変えたくなったら5箇所全てを書き換えないといけません。

コピペや検索・置換すれば何とかなると思いますが、見落とす可能性もありますし、何よりとても面倒ですよね。
 

このように

  • 何度も同じ文字列や数値を使う
  • あとで変更を加える可能性がある

ものは「変数」として値を定義・維持しておくことができます。
 
 
 

変数と型の書き方

まずはこのコードをみてください。

String message =  "こんにちは";

 

このコードは4つのパーツからできていています。


文章にしてみると String 型の変数 message に「こんにちは」を代入するという意味になります。
 

「???」という文章かもしれませんが、大丈夫です!
順番に一つずつ見ていきましょう
 
 

;(セミコロン)について

もうお気づきかもしれませんが、コードを 1 行書いたら最後に ;(セミコロン) をつけます。

クラスやメソッドの定義、これから学習していく if 文やループなどは {} で囲みますが、それ以外のコードは基本的に「1 行書いたら ;(セミコロン)をつける」と意識しておいてください。
 
 

1. 型

型の種類

型とは、変数の値が

  • 文字なのか、数字なのか
  • 数字ならば整数なのか、小数なのか
  • 何桁ぐらいの数字になるのか

など、変数の形式を表すものです。
 
 

型は

  1. 基本型
  2. 参照型

に分けることができます。

ここからは型の例を紹介していきますが、現時点で覚える必要は一切ありません!
「こんな種類があるんだな」と目を通すぐらいで進めてください。
 
 

① 基本型

基本型は8種類あります。

booleantrue / false
byte1バイトの整数 -128 ~ 127
char2バイトの文字 0 ~ 65535(Unicode)
short2バイトの整数 -32768 ~ 32767
int4バイトの整数 -2147483648 ~ 2147483647
long8バイトの整数 -9223372036854775808 ~ 9223372036854775807
float4バイトの浮動小数点
double8バイトの浮動小数点

 

byte / short / int / long はどれも整数ですが、使用できる数値の大きさが異なります。float / double も同じです。

8種類の中でよく使うのは boolean / int / float 型です。
 
 

② 参照型

参照型は「クラス型・配列型・インターフェース型」に分けられます。

ここではクラス型を簡単に見てみましょう。

基本型は

boolean type = true;
int number = 3;

とするだけですが、クラス型はそのクラス内にある変数やメソッドを使うことができるという特徴があります。(この講座の完全版ではクラスについてさらに詳しく紹介していきます。)
 
 

前回 TextView クラスの setText メソッドを使いましたね。

textView.setText("こんにちは");

これと同じようにクラス型で定義した変数には、それぞれのクラスにあるメソッドを使うことができます。
 

例えば String クラスには文字列を大文字にする toUpperCase メソッドがあります。

Android Studio で以下のようにコードを書いてみました。

char 型と String 型で、どちらも値が a の変数を用意しています。

String 型の変数 s は toUpperCase メソッドを使って大文字 A を表示することができますが、基本型の変数 c はエラーになっています。

このように、クラス型を使うことでそのクラス内のメソッドを使うことができます。

ラッパークラスについて

基本型にはクラス型のようにメソッドがありませんが、代わりにラッパークラスというものが用意されています。
ラッパークラスには色々なメソッドがあり、例えば char 型のラッパークラスである Character クラスを使えば、同じように char 型の文字を大文字にすることができます。
講座の完全版では「8. ラッパークラスと型の変換」で紹介しています。

 

型は、もちろん自分で用意したクラスを使うこともあります。

この講座の始めにロボットを動かす Robot クラスの例を紹介しました。


 

Robot クラス内で Head クラスを使う時は


のように Head クラス型の変数を用意します。(new Head() という書き方については今後紹介していきます。)
 
 
 

型の決め方

型は「変数にどんな形式の値を入れるのか」で決めます。

例えば値が 1, 2, 3… などの整数の場合は int や long 型を使用します。

int number = 1;

3.14 のような小数点の場合は float や double 型です。

float pi = 3.14f;

 

一つ注意点は「変数には指定した型以外の値を入れることはできない」ということです。

例えば int 型で用意した変数に 3.14 を入れたり、boolean 型の変数に文字列を入れることはできません。

これはコードを書いているうちに自然と身に付きますし、Android Studio では型と異なる値を指定すると赤い波線をつけてくれるので安心です
 
 
 

Android 開発での型

前回の「Hello World を書き換える」で、すでに型を使用していたことにお気づきでしょうか?

ここでは TextView クラス型で textView という名前の変数を定義しています。
 

Android 開発では

  • TextView
  • ImageView
  • Button
  • LinearLayout

などの要素もクラス型として記述していきます。
 
 

現時点では全ての型の種類を覚える必要は一切ありません。

コードを書きながら徐々に覚えておけばいいので「型は変数がどんな形式の値なのかを表す」ということだけ頭に入れておいてくださいね。
 
 

2. 変数名

次は変数名についてです。

基本的にどんな名前も付けることができますが、適当につければ良いわけではなく「しっかりと意味をもたせる」ことが大切です。

ここからは変数名に使える文字・書き方のルールを紹介します。
 
 

使うことができる文字

変数名に使うことができる文字は

  1. 半角英数字
  2. _(アンダースコア)
  3. $(ドルマーク)

です。文字数に制限はありません。

日本語を使うこともできますが「どうしても日本語を使ってほしい」などの指示がない限りは英語で書きます。
 
 

5つの注意点

注意点1


型が異なっていたとしても、同じ変数名を使うことはできません。変数名は重複しないように注意してください。
 
 

注意点2


半角英字は大文字と小文字が区別されます。name と Name は別の変数になります。
 
 

注意点3


変数の先頭に数字をつけることはできません。
 
 

注意点4


使うことができる記号は _(アンダースコア)と $ だけです。スペース(空白)を入れることもできません。
 
 

注意点5

すでに Java で予約されているキーワード(予約語)を変数名に使うことはできません。
 

予約語一覧

abstractcontinuefornewswitch
assertdefaultifpackagesynchronized
booleandogotoprivatethis
breakdoubleimplementsprotectedthrow
byteelseimportpublicthrows
caseenuminstanceofreturntransient
catchextendsintshorttry
charfinalinterfacestaticvoid
classfinallylongstrictfpvolatile
constfloatnativesuperwhile
_ (underscore)

 
これらに加えて true, false, null も使うことができません。

【参考】Java SE 15 公式ドキュメント:https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html
 
 

変数名の悪い例

ここからは私が実際に見たことがある、あまり良くない変数名を紹介します。

これらの変数名が何を意味しているか分かるでしょうか?

String name1;
String name2;
int yubin;

 

答えは「名字」「名前」「郵便番号」です。

yubin は分からなくもないですが、name1, name2 はフルネームなのかニックネームなのかも判断できないですし、分かりにくいですよね。

このように変数が何を意味しているのか分かりにくい名前は使うべきではありません。
 

この例の場合は

  • lastName
  • firstName
  • zipcode

とするのが理想的です。

変数名を見ただけで、何を意味しているかが簡単に判断できますね。

自分一人で開発していたとしても、今後他の人が修正を加えたり、複数人で作業することも考えられます。

変数名を考えるときは自分以外の人がコードを見たときに分かりやすい名前にすることを意識してみてください。
 
 

3. 代入

算数では = は イコール(等しい)という意味で使われますが、プログラミングでは「変数に値を代入する」と表現します。
 

この「代入」のイメージが分かりにくく、プログラミングが嫌だなと思ってしまう方がいます。

私もプログラミングを始めた当時は「変数に値を代入する」という言葉がしっくりきませんでした。
 

多くの教材では「代入」や「データを箱に入れる」という表現をしていますが

  • 変数 message を「こんにちは」にする
  • 変数 message は「こんにちは」

とイコールに近いイメージで私は考えています。

不正確だという人もいるかもしれませんが、あくまでイメージなので理解しやすい方で考えてみてください
 
 

4. 値


値の書き方は基本型と参照型によって異なります。
 

基本型


 

ポイント①


String 型の文字列は ""(ダブルクォーテーション)で囲みますが、char 型は ''(シングルクォーテーション)で囲みます。
 

補足
char 型の値は文字か文字コードで書くことができますが、実際の値は文字コード(0~65535)で保持されています。

char c1 = 'あ';
char c2 = 12354;

この場合どちらの値も平仮名の「あ」を表しています。
 
 

ポイント②


long / float / double 型はそれぞれの値の最後に L / F / D をつけます。
 

小文字で書くこともできますが、long 型の L は数字の 1 と間違いやすいので大文字で書くようにしましょう。

 
 

ポイント③


先ほど型の種類 ①基本型で byte / short / int / long は使用できる数値の大きさが異なると紹介しました。

Android Studio では使用できる範囲を超えた場合に赤い波線でエラーを表示してくれるので安心です。

実際にコードを書く場合は int 型を使うことが多いです。
 
 
 

参照型

ここでもクラス型を例にみていきましょう。

クラス型の場合は

と書きます。引数がある場合は new クラス名(引数) と書きます。
 

先ほど少し紹介したロボットの Head クラス

Head head = new Head();

もこの書き方でしたね。

Java ではこれをオブジェクト(インスタンス)を作成するといいます。

オブジェクトやクラス型の具体的な使い方については、この講座の後半で紹介していきます。
 
 

例外

String 型はよく使われるので

String name = new String("名前");

と書く必要はなく

String name  = "名前";

でオブジェクトを作成できるようになっています。
 

TextView などの要素も findViewById メソッドでオブジェクトを作成することができます。

TextView textView = findViewById(R.id.textView);

 
 

復習

一番始めに紹介したコードをもう一度見てみましょう。

「こんにちは」は文字列なので ""(ダブルクォーテーション)で囲んで、型は String にしています。

「こんにちは」は画面に表示するメッセージなので、変数名は message としました。
 

ここまでは1行で書いてきましたが2行に分けて書くこともできます。

String message;
message = "こんにちは";

 
 

実際に使ってみる

それでは Android Studio の Sample プロジェクトにもどって

textView.setText("こんにちは");

の「こんにちは」を変数にしてみましょう。
 

9・10行目のようにコードを追加・変更してください。

 

変数を使うときは変数名 message を書くだけです。
 

アプリを実行してみてください。前回と同じように「こんにちは」と表示されれば成功です!


 
 

まとめ

新しいことがたくさん出てきたかもしれませんが

  • 変数は文字列や数値などの値を定義・維持しておくもの
  • 変数名は誰が見ても分かりやすくすること

の2点と

「型・変数名・代入・値」の4つのパーツで成り立っていることを覚えておいてください。

 

型の種類は実際にコードを書きながら覚えていきましょう
 
 
 

この講座の続きは完全版でお読みいただけます。

 

この講座の完全版について


 

私はこれまでにオンライン講座と書籍に35万円以上使ってプログラミングを勉強してきました。

しかし、講座や書籍でプログラミングの基礎を学んでも

  • それを使って何ができるのか
  • いつ役立つのか
  • 次に何をすれば良いのか

と分からないことばかりでした。
 

特に Android アプリ開発(Java)には苦労しました。
 

Android 開発には Java を学ぶ必要があると知って Java の入門書を買いましたが、文字と数字を出力するばかりで Android 開発との関係性がわからず、途中で読むのを辞めてしまいました。
 

次に Android Studio を使ったアプリ開発の本を数冊か買いましたが、今度は Java の解説が少なくて、説明も専門用語ばかりであまり読む気がしなかったことを覚えています。
 

この経験から、これからプログラミングを始めようという方に

  • 「プログラミングって楽しい!」
  • 「もっと勉強してみたい!」
  • 「もっとアプリを開発してみたい!」

と思っていただける入門講座を作れないかとずっと考えていました。
 
 

約2年かかってようやく完成したのが「Android 開発のための Java 入門講座」です!

 
 

 

講座では Java の基礎を学びながら、簡単なアプリを開発していきます。

Android 開発に興味がある方、Java に一度挫折してしまったという方はぜひご参加お待ちしています
 

 
 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

guest
0 Comments
Inline Feedbacks
View all comments
0
この記事にコメントするx