ラッパークラス – エンジニアの入り口 https://eng-entrance.com 「エンジニアの入り口」は、プログラミング入門やエンジニアリング入門の知識が満載の初心者のための勉強サイトです。プログラミングやサーバ、ネットワークの基礎知識や勉強方法を習得できます。 Thu, 02 Mar 2017 04:44:40 +0000 ja hourly 1 https://wordpress.org/?v=5.2.19 Javaで文字列を数値へ変換する方法!【ラッパークラスver】 https://eng-entrance.com/java-wrapper-stringtonum https://eng-entrance.com/java-wrapper-stringtonum#respond Mon, 12 Sep 2016 00:54:54 +0000 http://eng-entrance.com/?p=2595 Javaで文字列を数値に変換したいときはどうするか?

文字列として入力された値を変換して使いたいというときなど、そこまで頻繁ではないが、Javaでプログラムを組んでいると必要なことがあるだろう。

このページでは、ラッパークラスを用いて文字列を数値に変換する方法をお伝えしよう。

文字列から数値への変換

「文字列として入力された2つの値を使って計算処理をしたい」といった場合など、文字列から数値に変換する必要が出てくる。

文字列はStringクラスで扱うが、Stringクラスには文字列を数値に変換する機能は用意されていない。

Javaでは、数値はその大きさで扱う型が違っている。また、数値を扱う型は通常基本型だが、基本型には格納された値を操作する機能が用意されていないので、各基本型に対応したラッパークラスで文字列から数値へ変換する処理を行う。

各クラスの変換メソッドは以下の通りだ。

Byte型

Byte型オブジェクト.parseByte(String s)

戻り値の型

public static byte

内容

文字列の引数を符号付き 10 進数の整数型として返す。文字列にある文字はすべて、10 進数である必要がある。 ただし、1 番目の文字だけは、負の値を表すためにマイナス記号であってもかまわない。その場合、結果として得られる整数値が返される。

パラメータ:

s - byte型の範囲(精度)の大きさの文字列

戻り値:

10 進数の引数で表される整数値

Short型

Short型オブジェクト.parseShort(String s)

戻り値の型

public static short 

内容

文字列の引数を符号付き 10 進数の整数型として返す。文字列にある文字はすべて、10 進数である必要がある。 ただし、1 番目の文字だけは、負の値を表すためにマイナス記号であってもかまわない。その場合、結果として得られる整数値が返される。

パラメータ:

s - short型の範囲(精度)の大きさの文字列

戻り値:

10 進数の引数で表される整数値

Integer型

Integer型オブジェクト.parseInt(String s)

戻り値の型

public static int

内容

文字列の引数を符号付き 10 進数の整数型として返す。文字列にある文字はすべて、10 進数である必要がある。 ただし、1 番目の文字だけは、負の値を表すためにマイナス記号であってもかまわない。その場合、結果として得られる整数値が返される。

パラメータ:

s - int型の範囲(精度)の大きさの文字列

 

戻り値:

10 進数の引数で表される整数値

Long型

Long型オブジェクト.parseLong(String s)

戻り値の型

public static long

内容

文字列の引数を符号付き 10 進数の整数型として返す。文字列にある文字はすべて、10 進数である必要がある。 ただし、1 番目の文字だけは、負の値を表すためにマイナス記号であってもかまわない。その場合、結果として得られる整数値が返される。

L または l を型指定子として文字列の末尾に付けることは、Java プログラム言語のソースコードの場合とは違って許されない。ただし、基数が 22 よりも大きい桁の数字には、L またはl が現われます。

パラメータ:

s - long型の範囲(精度)の大きさの文字列

戻り値:

10 進数の引数で表される整数値

Float型

Float型オブジェクト.parseFloat(String s)

戻り値の型

public static float 

内容

Float クラスの valueOf メソッドを実行した場合と同様に、指定された String が表す値に初期化された新しい float 値を返す。

パラメータ:

s -解析される文字列

戻り値:

文字列引数で表される float 値

Double型

Double型オブジェクト.parseDouble(String s)

戻り値の型

public static double

内容

Double クラスの valueOf メソッドを実行した場合と同様に、指定された String が表す値に初期化された新しい double 値を返す。

パラメータ:

s -解析される文字列

戻り値:

文字列引数で表される double 値

各ラッパークラスともに、引数で渡された文字列が結果の型の範囲内でない場合、エラー(NumberFormatException )が発生し処理が終了してしまう。文字列にどのような型の範囲の値が入るか意識してクラスを選ぶようにしよう。

サンプルコード

public class JavaApp4 {
    public static void main(String[] args) {
        String priceStr = "12,345";//[1]
        String priceStr1 = priceStr.replaceAll(",", "");//[2]

        int price = Integer.parseInt(priceStr1);//[3]
        
        System.out.println(priceStr + "を数値に変換した値 : " + price);//[4]
    }
}  

実行結果

12,345を数値に変換した値 : 12345

サンプルコードの説明

  • [1] String型の変数priceStrを「12,345」で初期化。
  • [2] priceStrの区切り文字「,」をStringクラスのreplaceAllメソッドを使用して取り除き、変数priceStr1へ代入。
  • [3] 変数priceStr1を、IntegerクラスのparseIntメソッドを使用してint型の整数に変換し、変数priceへ代入。
  • [4] 変数priceの値を表示。

まとめ

このページではJavaで文字列を数値に変換して使用する方法をお伝えした。

「数値→文字列」は少ないだろうが、「文字列から数値」は頻繁にあるはずだ。参考にしていただきたい。

ラッパークラスの詳細については下記ページを参考にしてほしい。

]]>
https://eng-entrance.com/java-wrapper-stringtonum/feed 0
Javaで数値を文字列へ変換する方法!【ラッパークラスver】 https://eng-entrance.com/java-wrapper-numtostring https://eng-entrance.com/java-wrapper-numtostring#respond Mon, 12 Sep 2016 00:30:58 +0000 http://eng-entrance.com/?p=2590 Javaで「数値を文字列に変換して扱いたい」というときが、時々ある。

ラーパークラスを使えば、数値から文字列へ変換することができる。このページではサンプルコードも用いて、変換方法をご紹介しよう。

数値から文字列への変換

Javaで数値を扱う型は、byte,shot,int,long,float,doubleの基本型だ。値の格納や単純な演算処理は基本型でも問題なく行える。

しかし、「小数点を扱う場合に、小数点以下の桁数を知りたい」といった場合には、どうしても数値を文字列として扱う必要が出てくる。基本型には値を操作する機能(メソッド)は用意されていないので、そのままでは数値は文字列としては扱えない。

そのための手段は二つ用意されている。

  • 1つはStringクラスのvalueOfメソッドを使う方法
  • もう1つは数値の基本型のラッパークラスを利用してオブジェクトを生成し、用意された機能を使う方法だ

ここではラッパークラスを使った方法を説明していく。

ラッパークラスでの変換

数値を扱う基本型のラッパークラスはByte,Shot,Integer,long,Float,Doubleとなる。

Integerクラスはint型のラッパークラスだ。それ以外は最初が大文字に代わっているだけなのでわかりやすいだろう。

これらのクラスはすべてjava.langパッケージに存在している独立したクラスだがすべてNumberクラスを親にもつクラスとなっている。そのため同じ名前の同じ働きをするメソッドをもっており、数値を文字列にするtoStringメソッドも各クラスにそれぞれ存在する。

Integer型

toString()

戻り値の型

public static String

内容

この Integer の値を表す String オブジェクトを返す。

値は、符号付きの 10 進数表現に変換され、文字列として返される。

整数値が toString(int) メソッドの引数として指定された場合と同じ結果となる。

・オーバーライド:

親クラス の親クラスであるObjectの toStringメソッド

・戻り値:

このオブジェクトの 10 進数 による文字列表現

toString(int i)

戻り値の型

public String

内容

指定された整数を表す String オブジェクトを返す。

引数は、符号付き 10 進数表現に変換されてから文字列として返される。

 

・パラメータ:

i - 変換される整数

・戻り値:

10 進数 の引数の文字列表現

 

StringクラスのvalueOfメソッドを使う方法、ラッパークラスのtoStringメソッドを使う方法、いずれもintをStringに型変換する。

しかし、引数で渡す値にNull値(何もないことを表す特別な値)が入った場合には、StringクラスのvalueOfメソッドでは「null」という文字列が返される。ラッパークラスのtoStringメソッドではエラー(NullPointerException)が発生し、途中で処理が終了してしまう。

処理速度にはほとんど差がないと考えてよいだろう。 

サンプルコード

それではサンプルコードを見てみよう。

public class JavaApp3 {
    public static void main(String[] args) {
        double d = 123.456789;//[1]
        Double dNum = Double.valueOf(d);//[2]
        String str = dNum.toString();//[3]
        System.out.println("dNumを文字列にした値 :" + str);//[4]
        int index = str.indexOf('.');//[5]
        System.out.println("小数点のある位置 :" + index);//[6]
        String str1 = str.substring(index + 1); //[7]
        System.out.println("小数点以下の値を取得 :" + str1);
        System.out.println("文字数を取得 :" + str1.length());//[8]
    }
}

実行結果

dNumを文字列にした値 :123.456789
小数点のある位置 :3
小数点以下の値を取得 :456789
文字数を取得 :6

サンプルコードの説明

  • [1] double型の変数dを「456789」で初期化。
  • [2] valueOfを使用してDouble型dNumのオブジェクトを生成し初期化。
  • [3] 変数dNumを、toStringメソッドを使用して文字列に変更し、変数strへ代入。
  • [4] 変数strの値を表示。
  • [5] StringクラスのindexOfメソッドを使用して小数点の位置を取得し変数indexへ代入。
  • [6] 変数indexの値を表示する。
  • [7] substringメソッドを使用して小数点の位置以下の文字を取得し、変数str1へ代入。
  • [8] str1の文字数(=小数点以下の桁数)を取得し、値を表示。

まとめ

このページではラッパークラスを用いて数値を文字列に変換する方法についてお伝えしてきた。

それほど多く利用するものでもないだろうが、特殊条件下で使いたいニーズが出てくることはあるはずだ。こういうものがあるというのは知っておこう。

ラッパークラスの詳細については下記ページを参考にしてほしい。

]]>
https://eng-entrance.com/java-wrapper-numtostring/feed 0
【Javaラッパークラス】オートボクシングとアンボクシングとは? https://eng-entrance.com/java-wrapper-boxing https://eng-entrance.com/java-wrapper-boxing#comments Sat, 10 Sep 2016 03:57:05 +0000 http://eng-entrance.com/?p=2547 このページではJavaのオートボクシングとアンボクシングについてお伝えしよう。

オートボクシングもアンボクシングもラッパークラスに関する用語だ。

オートボクシングとアンボクシング

オートボクシング、アンボクシングはJava5.0から提供された機能だ。

オートボクシングとは?

コンストラクタやメソッドなどを使わずに基本データ型の値を対応するラッパークラス内に格納するのがオートボクシングだ。

アンボクシングとは?

逆にラッパークラス内に格納された値を取り出して基本データ型として扱うのがアンボクシングである。

下記ページでお伝えした、Integer型でのサンプルコードをオートボクシング利用の記述に変更してみよう。

サンプルコード

それではサンプルコードを見てみよう。

public class JavaApp1 {

    public static void main(String[] args) {

        int num = 1000;
        String strNum = "2000";
        
        Integer iNum1 = num;//[1]
        Integer iNum2 = Integer.valueOf(strNum);
        
        System.out.println("iNum1の値:" + iNum1.toString());
        System.out.println("iNum2の値:" +iNum2.toString());
        
        System.out.println("iNum1の値とiNum2の値が等しいか:" +iNum1.equals(iNum2));
        
        int i = iNum1;//[2]
        System.out.println("iの値:" + i );
    
    }
}

実行結果

iNum1の値:1000
iNum2の値:2000
iNum1の値とiNum2の値が等しいか:false
iの値:1000

サンプルコードの説明

  • [1] new演算子を使用せず、Integer型変数を代入してInteger型オブジェクトiNum1を生成。 → オートボクシング
  • [2]Integerクラスのメソッドを使うことなくint型へ値を代入。→ アンボクシング

オブジェクトの生成を意識せずに記述できるので簡単ではある。ただ自動的に変換されているということは理解しておく必要がある。

また、ラッパークラスは参照型のため、nullが入る可能性がある。nullが入ったラッパークラスオブジェクトをアンボクシング機能にて基本型へ変換すると、プログラムを実行した際にエラー(NullPointerException)が発生するので注意してほしい。

まとめ

このページではオートボクシングとアンボクシングした。ラッパークラスの詳細については下記ページを参考にしてほしい。

]]>
https://eng-entrance.com/java-wrapper-boxing/feed 1
【ラッパークラスの基本】オブジェクトの作成と値の設定・値の取得方法! https://eng-entrance.com/java-wrapper-base https://eng-entrance.com/java-wrapper-base#comments Sat, 10 Sep 2016 00:08:09 +0000 http://eng-entrance.com/?p=2539 ラッパークラスを使うと、基本データ型の値をラップ(=包み込む)してオブジェクトとして利用できるようになる。

このページではラッパークラスによるオブジェクトの作成や値の設定・取得といった基本的な使い方をまとめてご紹介した。

ラッパークラスをはじめて使うという方は参考にしてほしい。

オブジェクトの作成と値の設定・取得

オブジェクトの生成と値の設定・取得を、int型のラッパークラスであるIntegerクラスを例に見ていこう。

オブジェクトの生成

基本データ型の値に対して様々な操作を行うには、まず基本データ型の値を持つラッパークラスのオブジェクトを生成する必要がある。

Integerクラスでは次のように二通りの方法がある。

new Integer(int num )

new Integer(String str )

※オブジェクトの生成はnew演算子を使う。どのような型を引数として渡せるかは使いたいクラスのAPIで「コンストラクタの概要」を見ると記載してあるので参考にしてほしい。

値の設定

値の設定には、生成したオブジェクトを代入する方法と、IntegerクラスのvalueOfメソッドを利用する方法がある。

Integer intNum = Integerオブジェクト

Integer intNum = Integer .valueOf(int num)

Integer intNum = Integer .valueOf (String str)

値の取得

値の取得はラッパークラスのメソッドを使用して行う。例としてInteger型変数の値を int型として返すintValue()メソッドを見てみよう。

書き方はこうだ。

Integer型変数.intValue();

サンプルコード

サンプルコードは次の通りだ。

public class JavaApp1 {
    public static void main(String[] args) {
        int num = 1000;
        String strNum = "2000";
        
        Integer iNum1 = new Integer(num);//[1]
        Integer iNum2 = Integer.valueOf(strNum);//[2]
        
        System.out.println("iNum1の値:" + iNum1.toString());//[3]
        System.out.println("iNum2の値:" +iNum2.toString());//[4]
        
        System.out.println("iNum1の値とiNum2の値が等しいか:" +iNum1.equals(iNum2));//[5]
        
        int i = iNum1.intValue();//[6]
        System.out.println("iの値:" + i );//[7]
    
    }
}

実行結果

iNum1の値:1000
iNum2の値:2000
iNum1の値とiNum2の値が等しいか:false

iの値:1000サンプルコードの説明

  • [1] 1000で初期化されたint型の変数numを引数に渡してInteger型オブジェクトiNum1を生成。
  • [2] 文字列”2000”で初期化されたString型の変数strNumを引数に渡してIntegerクラスのValueOfメソッドにてInteger型オブジェクトiNum2を生成。
  • [3] 変数iNum1の値を表示。
  • [4] 変数iNum2の値を表示。
  • [5] 変数iNum1とiNum2の値が等しいかどうかの比較をIntegerクラスのequalsメソッドを利用して行い結果を表示。
  • [6]Integer型のオブジェクトiNum1の値を取得し、int型変数iへ代入。
  • [7]変数iの値を表示。

Boolean型の場合

Boolean型の場合、文字列からValueOfメソッドを使用してオブジェクトを生成する際、大文字、小文字に関係なくオブジェクトが生成される。

”true” ”false”以外の文字列だった場合、エラーは発生せずすべてfalseのBooleanオブジェクトが生成される。

サンプルコードで確認しよう。

サンプルコード

public class JavaApp2 {
    public static void main(String[] args) {
        boolean bool = true;
        String strBool = "TRUE";
	String strBool2= "TRUUUUUE";
        
        Boolean bool1 = new Boolean(bool);//[1]
        Boolean bool2 = Boolean.valueOf(strBool);//[2]   
     	Boolean bool3 = Boolean.valueOf(strBool2);//[3]
        System.out.println("bool1の値を文字列として出力:" + bool1.toString());//[4]
        System.out.println("bool2の値を文字列として出力:" +bool2.toString());//[5]
        
        System.out.println("bool1とbool2が等しいか:" +bool1.equals(bool2));//[6]   
	System.out.println("bool3:" +bool3.toString());//[7]
    }
}

実行結果

bool1の値を文字列として出力:true
bool2の値を文字列として出力:true
bool1とbool2が等しいか:true
bool3:false

サンプルコードの説明

  • [1] trueで初期化されたboolean型の変数boolを引数に渡してBoolean型オブジェクトbool1を生成。
  • [2] 文字列”TRUE”で初期化されたString型の変数strBoolを引数に渡してBooleanクラスのValueOfメソッドを利用してBoolean型オブジェクトbool2を生成。※BooleanクラスのValueOfメソッドを使用する際、大文字、小文字は気にせず代入してよい。”TrUe”でも”True”でもtrueとしてオブジェクトが生成される。
  • [3] 文字列” TRUUUUUE”で初期化されたString型の変数strBool2を引数に渡してBooleanクラスのValueOfメソッドを利用してBoolean型オブジェクトbool3を生成。
  • [4] 変数bool1の値を表示。
  • [5] 変数bool2の値を表示。
  • [6] 変数bool1とbool2の値が等しいかどうかの比較をBooleanクラスのequalsメソッドを利用して行い結果を表示。
  • [7] 変数bool3の値を表示。

まとめ

このページではJavaラッパークラスの基本をお伝えした。オブジェクトの作成と値の設定・値の取得方法は概ね理解できただろうか? ぜひ参考にしてほしい。

ラッパークラスの詳細については下記ページも参考に。

]]>
https://eng-entrance.com/java-wrapper-base/feed 1
ラッパークラスの種類 https://eng-entrance.com/java-wrapper-type https://eng-entrance.com/java-wrapper-type#respond Fri, 09 Sep 2016 23:46:00 +0000 http://eng-entrance.com/?p=2541 このページではラッパークラスの種類をご紹介しよう。

基本的には基本データ型の先頭文字を大文字にしたものがラッパークラスの名前となっている。

ラッパークラスの種類

各基本型に対応するラッパークラスの一覧はこうだ。

基本型

ラッパークラス

boolean

Boolean

char

Character

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

int型のラッパークラスはIntegerクラス、boolean型のラッパークラスはBooleanクラスというように、基本的には基本データ型の先頭文字を大文字にしたものがラッパークラスの名前となっている。

しかし、char型とint型だけは異なるので注意しよう。

一覧で紹介したように、各ラッパークラスはjava.langパッケージに含まれるそれぞれ独立したクラスである。しかしBooleanクラスとCharacterクラスを除いたクラスは全て数値を扱うクラスで、java.lang.Numberを親として持っている。

そのため、内部のメソッドには名前も同じ、処理の内容もほとんど同じというものがいくつかあるので覚えておくといいだろう。

次のページで使い方をご説明している。

]]>
https://eng-entrance.com/java-wrapper-type/feed 0