未分類

【Javaのデータ型が分からない】変数定義はintとStringが80%以上です!

こんにちは、オノデラです。

Java案件があふれているので、PHPやrubyを主戦場とするエンジニアもJava案件に携わる機会が多いのではないでしょうか。

そこで、突如、Java案件を命じられるエンジニアのためにJavaで最初に躓く点をお伝えします。

それは、変数定義です。

もし、あなたが開発未経験だったり、データ型定義不要の言語(PHPやrubyなど)でしか開発経験がなかったりした場合、Java開発で最初に躓くのは、変数定義だと思います。

「わざわざデータ型を事前に指定しないといけないの?」

「将来的にその変数に文字を入れるか、数字を入れるか未定だから事前に定義できない」

こんな不満がちらほら浮かんできているのではないでしょうか。

でも、Javaは事前にデータ型を定義する必要があります。

例えば、int a;と宣言した場合、int型は整数リテラル用変数(整数値と思ってください、1、10など)なので、整数しか入れられません。

int a = 10;

これで10が入ります。
でも、

int a = 10.2;

10.2は浮動小数リテラル(小数値と思ってください、1.3や14.5など)なので、int型には代入できません。

このようにJavaの変数代入はけっこう厳しめですし、データ型は10種類以上あるので使うデータ型で悩んでしまうエンジニアもたまに見かけます。

ですが、使うデータ型はだいたい決まっています。

【結論】原則、int型とString型を使う

Java開発で使うデータ型はint型とString型が80%以上です。

ほぼ、この2つで十分です!

もちろん、計算処理の場合はfloatやdoubleなどの浮動小数リテラルを使う場合もありますが、たいていintとStringです。
int型とString型は超優秀!

【整数いれます】int型

整数はint型を使います。整数の計算をするときやfor文で回す時に何かしらのフラグを立てておきたい時などにint型を使います。

int型変数には-2147483648~2147483647までの値を代入できます。
かなり大きな数字まで代入できます。
整数リテラルのデータ型は、他にbyteやshortがありますが、byteは-128~127までの値、shortは-32768~32767までの値まで代入可能。

裏を返せば、その範囲を超えた場合やその範囲未満は代入不可。

byte型の変数に200や400、-130などは代入できません。

大きな計算をする場合は200とか400とかふつうに代入しますが、それができない!
使い勝手が悪いんですね。

shortはbyteより代入可能な数値は多いですが、intと比べると圧倒的に扱える整数値が少ない。

以上から、整数リテラルにはint型を使います。

ただし、ちょっとここで疑問が。

じゃあなぜJavaにはbyteやshortが用意されているのか?

そうです、byteやshortは使えるシーンがなさそうです。

実際のところ、全然使いません、今は。

でも、昔は使っていました。

なぜなら、byteとshortはメモリ消費量が少ないからです。(intと比べて)

つまり、メモリ効率が良いということです。

メモリが貴重だった昔の時代はシステム開発において、メモリ効率が凄く重要でした。

メモリを食いすぎるとシステム動作が遅くなりますからね。

でも今の時代はメモリ価格が下がったため、サーバーはメモリをたくさん積んでいます。

なので、int型を使っても大丈夫です。

【最強のデータ型】String型

‘おはよう’、’サッカー’,’会社’,’あ’ ,’5’などの文字や文字列を使う場合はString型を使います。

String型は本当に優秀ですよ。

厳密に言えば、Stringはデータ型ではなくclassになるのですが、今回は気にせず、データ型としてすすめます。

データ型と認識しても大きな問題はないので。

Stringは文字や文字列が代入できます。

冒頭書いた‘おはよう’、’サッカー’,’会社’,’あ’などのひらがな、カタカナ、漢字などです。

1つのString型変数にマックス1億文字を代入できます。

まぁ入れることはないでしょうけど。(笑)

String型にはさらに’5’や’10.2’なども代入できます。

文字列として数字も代入できるのです。

ですが、あくまで文字列なので、String型の数字では計算はできません。

aとbを足し算しようとしていますが、エラーになります。なぜなら文字列としての数字だから。
(このあたりは経験を積めばなんとなく理解できるようになります。)

これは3が表示されます。

int型なので整数リテラルとして1と2が代入されています。

このようにString型でできないことは数字の計算ぐらい。

ですが、あるメソッドを使えば、String型の数字をint型に変換して、計算ができます。

Integer.parseIntです。

Integer.parseIntを使えば、String型のデータをint型に変換して代入できるので、String型に代入された数字も実は計算できることになります。

aとbの値を数値型に変換、それぞれint型のxとyに代入し、足し算します。3が表示されます。

String型の数字を変換して計算までできちゃうんですね。

文字列や数字の代入、さらにデータ変換すれば計算もできてしまうString型。

つまり、String型=最強になります。

無人島に1つだけデータ型を持って行くとしたら?と聞かれたら、迷わずString型です。

int型とString型を使えば、ほぼ変数定義は大丈夫です。

地味に使うboolean

地味に使う言語としてboolean型はあります。
サクッ解説ですが、booleanはtrueかfalseを入れるデータ型です。

x変数が0 だったら、booleanにfalseを代入します。0以外ならtrue;のままです。
booleanはtrueか、falseの2択で良い場合に使います。

【補足】Charやfloat、doubleも覚えていて損はない

charやfloat、doubleも使う時は来ると思いますが、その時グーグル先生に聞いて、使い方を学べばよいかなぁと思います。

使用頻度は高くありませんが。

Java開発を始める際は変数定義で少し迷うと思うので、迷ったらまずはintかStringを頭に思い浮かべてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です