ほとんどの場合、Java で数値を扱うときに使用します。 プリミティブデータ型 。しかし、Java はさまざまな数値も提供します ラッパー 抽象クラスの下のサブクラス に存在する数 java.lang パッケージ。主にあります 六 これらのサブクラスは、数値を扱うときに頻繁に使用されるいくつかの便利なメソッドを定義します。

これらのクラスは、プリミティブ データ型を対応するオブジェクトに「ラップ」します。多くの場合、ラッピングはコンパイラによって行われます。オブジェクトが予期される場所でプリミティブを使用すると、コンパイラはそのプリミティブをラッパー クラスにボックス化します。同様に、プリミティブが予期されるときに Number オブジェクトを使用すると、コンパイラーはオブジェクトをボックスから取り出します。これは、オートボックス化およびアンボックス化とも呼ばれます。
なぜプリミティブ データではなく Number クラス オブジェクトを使用するのでしょうか?
- データ型の上限と下限を提供する MIN_VALUE や MAX_VALUE などの数値クラスによって定義された定数は、非常に役立ちます。
- Number クラス オブジェクトは、オブジェクトを期待するメソッドの引数として使用できます (数値のコレクションを操作するときによく使用されます)。
- クラス メソッドは、値を他のプリミティブ型との間で変換したり、文字列との間で変換したり、数値体系 (10 進数、8 進数、16 進数、2 進数) 間の変換に使用できます。
Number のすべてのサブクラスに共通のメソッド:
Java正規表現
Syntax : byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue() Parameters : ---- Returns : the numeric value represented by this object after conversion to specified type
//Java program to demonstrate xxxValue() method public class Test { public static void main(String[] args) { // Creating a Double Class object with value '6.9685' Double d = new Double('6.9685'); // Converting this Double(Number) object to // different primitive data types byte b = d.byteValue(); short s = d.shortValue(); int i = d.intValue(); long l = d.longValue(); float f = d.floatValue(); double d1 = d.doubleValue(); System.out.println('value of d after converting it to byte : ' + b); System.out.println('value of d after converting it to short : ' + s); System.out.println('value of d after converting it to int : ' + i); System.out.println('value of d after converting it to long : ' + l); System.out.println('value of d after converting it to float : ' + f); System.out.println('value of d after converting it to double : ' + d1); } }
出力:
value of d after converting it to byte : 6 value of d after converting it to short : 6 value of d after converting it to int : 6 value of d after converting it to long : 6 value of d after converting it to float : 6.9685 value of d after converting it to double : 6.9685
注記 : 変換中に精度が失われる可能性があります。たとえば、Double オブジェクトから int データ型に変換する際に小数部分 ('.9685') が省略されていることがわかります。
Syntax : public int compareTo( NumberSubClass referenceName ) Parameters : referenceName - any NumberSubClass type value Returns : the value 0 if the Number is equal to the argument. the value 1 if the Number is less than the argument. the value -1 if the Number is greater than the argument.
//Java program to demonstrate compareTo() method public class Test { public static void main(String[] args) { // creating an Integer Class object with value '10' Integer i = new Integer('10'); // comparing value of i System.out.println(i.compareTo(7)); System.out.println(i.compareTo(11)); System.out.println(i.compareTo(10)); } }
出力:
1 -1 0
Syntax : public boolean equals(Object obj) Parameters : obj - any object Returns : The method returns true if the argument is not null and is an object of the same type and with the same numeric value otherwise false.
//Java program to demonstrate equals() method public class Test { public static void main(String[] args) { // creating a Short Class object with value '15' Short s = new Short('15'); // creating a Short Class object with value '10' Short x = 10; // creating an Integer Class object with value '15' Integer y = 15; // creating another Short Class object with value '15' Short z = 15; //comparing s with other objects System.out.println(s.equals(x)); System.out.println(s.equals(y)); System.out.println(s.equals(z)); } }
出力:
Androidでブロックされた番号を確認する方法
false false true
Syntax : static int parseInt(String s int radix) Parameters : s - any String representation of decimal radix - any radix value Returns : the integer value represented by the argument in decimal. Throws : NumberFormatException : if the string does not contain a parsable integer.
//Java program to demonstrate Integer.parseInt() method public class Test { public static void main(String[] args) { // parsing different strings int z = Integer.parseInt('654'8); int a = Integer.parseInt('-FF' 16); long l = Long.parseLong('2158611234'10); System.out.println(z); System.out.println(a); System.out.println(l); // run-time NumberFormatException will occur here // 'Geeks' is not a parsable string int x = Integer.parseInt('Geeks'8); // run-time NumberFormatException will occur here // (for octal(8)allowed digits are [0-7]) int y = Integer.parseInt('99'8); } }
出力:
428 -255 2158611234 Exception in thread 'main' java.lang.NumberFormatException: For input string: 'Geeks' at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at Test.main(Test.java:17)
文字列Javaを比較する
Syntax : static int parseInt(String s) Parameters : s - any String representation of decimal Returns : the integer value represented by the argument in decimal. Throws : NumberFormatException : if the string does not contain a parsable integer.
//Java program to demonstrate Integer.parseInt() method public class Test { public static void main(String[] args) { // parsing different strings int z = Integer.parseInt('654'); long l = Long.parseLong('2158611234'); System.out.println(z); System.out.println(l); // run-time NumberFormatException will occur here // 'Geeks' is not a parsable string int x = Integer.parseInt('Geeks'); // run-time NumberFormatException will occur here // (for decimal(10)allowed digits are [0-9]) int a = Integer.parseInt('-FF'); } }
出力:
654 2158611234 Exception in thread 'main' java.lang.NumberFormatException: For input string: 'Geeks' at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at Test.main(Test.java:15)
Syntax : String toString() String toString(int i) Parameters : String toString() - no parameter String toString(int i) - i: any integer value Returns : String toString() - returns a String object representing the value of the Number object on which it is invoked. String toString(int i) - returns a decimal String object representing the specified integer(i)Java
//Java program to demonstrate Integer.toString() //and Integer.toString(int i) method public class Test { public static void main(String[] args) { // demonstrating toString() method Integer x = 12; System.out.println(x.toString()); // demonstrating toString(int i) method System.out.println(Integer.toString(12)); System.out.println(Integer.toBinaryString(152)); System.out.println(Integer.toHexString(152)); System.out.println(Integer.toOctalString(152)); } }
出力:
12 12 10011000 98 230
Syntax : Integer valueOf(int i) Integer valueOf(String s) Integer valueOf(String s int radix) Parameters : i - any integer value s - any String representation of decimal radix - any radix value Returns : valueOf(int i) : an Integer object holding the valuerepresented by the int argument. valueOf(String s) : an Integer object holding value represented by the string argument. valueOf(String s int radix) : an Integer object holding the value represented by the string argument with base radix. Throws : valueOf(String s) - NumberFormatException : if the string does not contain a parsable integer. valueOf(String s int radix) - NumberFormatException : if the string does not contain a parsable integer.
// Java program to demonstrate valueOf() method public class Test { public static void main(String[] args) { // demonstrating valueOf(int i) method System.out.println('Demonstrating valueOf(int i) method'); Integer i =Integer.valueOf(50); Double d = Double.valueOf(9.36); System.out.println(i); System.out.println(d); // demonstrating valueOf(String s) method System.out.println('Demonstrating valueOf(String s) method'); Integer n = Integer.valueOf('333'); Integer m = Integer.valueOf('-255'); System.out.println(n); System.out.println(m); // demonstrating valueOf(String sint radix) method System.out.println('Demonstrating (String sint radix) method'); Integer y = Integer.valueOf('333'8); Integer x = Integer.valueOf('-255'16); Long l = Long.valueOf('51688245'16); System.out.println(y); System.out.println(x); System.out.println(l); // run-time NumberFormatException will occur in below cases Integer a = Integer.valueOf('Geeks'); Integer b = Integer.valueOf('Geeks'16); } }
出力:
スパークチュートリアル
Demonstrating valueOf(int i) method 50 9.36 Demonstrating valueOf(String s) method 333 -255 Demonstrating (String sint radix) method 219 -597 1365803589 Exception in thread 'main' java.lang.NumberFormatException: For input string: 'Geeks' at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.valueOf(Integer.java:766) at Test.main(Test.java:28)
練習問題:
指定された Java コードの出力は何ですか?
public class Test { public static void main(String[] args) { Integer i = Integer.parseInt('Kona' 27); System.out.println(i); } }
オプション:
A) NumberFormatException at run-time B) NumberFormatException at compile-time C) 411787
答え :
C) 411787
説明 :
基数は 27 なので、文字列リテラルで使用できる文字は [0-9][A-Q] (10 から 26 まで) です。したがって、その値は次のように計算されます。
=> a*(27^0) + n*(27^1) + o*(27^2) + k*(27^3)
=> 10*1 + 23*27 + 24*27*27 + 20*27*27*27
=> 10 + 621 + 17496 + 393660
=> 411787