Javaシルバーの勉強をしていて、Javaの基本的なデータ型の操作で詰まったので、ここで解決していきたいと思います。
問題を解いていたら本当に正解率が悪かった。。
なのでまとめて見ようと思います。
Javaの基本的なデータ型の操作
ラッパークラス
Javaの型には参照型と基本型があるのですが、基本型では主に数値を用いた計算や数値や文字を格納する働きがあります。
しかし、Javaでは格納した値を操作するやり方がありません。
そんな時に使うのがラッパークラスです。
ラッパークラスをつかうことで、基本型をオブジェクトとして扱うことができるようになり、操作をすることができます。
基本型 | ラッパークラス |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
上記に挙げられている型の基本型は、計算を行ったりすることができません。
しかし、それらをラッパークラスにすることで、文字列の最後の文字を消したり、演算子を用いて計算をさせることができます。
ではそのオブジェクトの作成方法を見ていきましょう。
オブジェクトの生成のやり方
Integerクラスでは、主に2通りのやり方があります。
今回はnewメソッドを使ってintをIntegerにするやり方と、StringをIntegerにするやり方を説明します。
new Integer(int num);
こうして、newでオブジェクトを生成して、その引数に値を入れてあげることで、int型がIntegerになりました。
同じ要領で、StringをIntegerに変換します。
new Integer(String str);
次に、値の取得について説明します。
値の取得
Integer型の場合
そして、生成したオブジェクトに値を入れていきます。やり方は2種類あり、先程のnew
で生成したオブジェクトを代入するやり方か、valueOf();
で値を入れていくやり方です。
まず最初に、オブジェクトを代入させるやり方でやっていきます。
Integer 変数名 = new Integer(String str);
はじめにラッパークラスで変数を宣言して、その後に=でオブジェクトを宣言しているコードを直接宣言して置くことで代入させます。
2つ目のやり方の、valueOf
の引数の値に基本型の変数をいれてあげることで代入させます。
やり方としては、
Integer 変数名 = Integer.valueof(引数);
このようにします。
先程は、Integer型の説明をしましたが、次はBoolean型の説明をしていきます。
Boolean型の場合
Bootleanの場合、Trueかfalseしか入りませんが、これは大文字小文字関係ありません。
・TRUE
・true
のように書いてもコンパイルエラーにはなりません。
なので、
public class JavaApp2 {
public static void main(String[] args) {
String strBool = "true";
String strBool2= "TRUE";
Boolean bool1 = Boolean.valueOf(strBool);
Boolean bool2 = Boolean.valueOf(strBool2);
System.out.println("bool1の値を文字列として出力:" +bool1.toString());
System.out.println("bool2の値を文字列として出力:" +bool2.toString());
}
}
このように、小文字、大文字にして書いても問題なく出力されます。
結構そこはゆるくしてくれるんですね。
まぁ厳しくする意味もないですが。
ちなみに、trueのところをTRUEEEEEEEEEEE
にしても動きます。面白いですよねwww
ただ、IntegerもBooleanもこんな書き方をしていたら非常に面倒くさいですよね。
なので、次にそれを省略できる書き方を紹介します。
オートボクシング機能
このように
Integer i = Integer.valueOf(16);
とすることで、変数iに対して16という値を入れることができましたが、こんな直感的でないやり方でやりたくないですよね。普通の編集宣言みたいにやっていきたいですよね。
それを可能にしてくれるのがオートボクシングと呼ばれるものです。
これをすることで、先程のコードを修正してみると
Integer i = 16;
となります。
詳しく解説すると、先程のように宣言することで本来ラッパークラスの記述をするべきところを、自動的に変換してくれるので省略することができます。
こうすることで、省略していくことが可能です。
ただ、プリミティブ型は便利ですが計算ができるということは、計算ができてしまうのが欠点です。僕みたいなアホがいじってバグを作ってしまうので。。。
なので、必要に応じて計算ができないようにラッパークラスから、基本形に戻せるようにしたい場合にそれができる便利なものがあるので、それを紹介します。
アンボクシング
先程言った、ラッパークラスを基本形に戻してやるやり方を紹介します。
やり方としては、
Integer型の変数をもう一度int型の変数の中に格納するように宣言するだけです。試しに、アッパークラスのInteger型の変数iをint型のsampleIに入れてみたいと思います。
class Main{
public static void main(String args[]){
Integer i = 16;
int sampleI = i;
System.out.println(sampleI);
}
}
このようにすることをアンボクシングといいます。
これ場合めっちゃ使い道ありそう。