二 Java 语言基本数值封装类
Java
语言中基本数据类型和复合数据类型(数组和类)有严格的区分。
复合类型都是面向对象的,都继承Object,而基本数据类型都不是对象,为了使其具备对象的属性,Java
语言提供了装类。此外,封装类也提供了一些有用的数值转换和计算的方法。
byte, short, int, long,
float, double 的封装类是 Byte, Short,
Integer, Long, Float, Double.
因为 Java 语言提供了 auto boxing 的
特性,使得基本类型和封装类之间可以无缝切换,如:
Integer i = new
Integer(100);
Integer j =
100;
需要注意的是, 这种转换是在编译时进行的, 上面两个语句的字节码其实是一样的。 Integer
Integer 封装了 int
类型, 可以用下面三种方式构造:
Integer i1 = new
Integer("100"); // 字符串中只要有一个不能解析的字符就抛出 NumberFormatException
Integer i2 = new
Integer(100); Integer i3 =
100; // 运用 auto boxing 编译时转换成第一个构造方法
6个输出基本数据类型的对象方法(即非静态方法):
byte byteValue()
short shortValue()
int intValue()
long longValue()
float floatValue()
double doubleValue()
1个对象比较方法:
int compareTo(Integer anotherInteger)
重载了 3 个Object 方法:
boolean equals(Object obj)
int hashCode()
String toString()
8个继承Object的方法:
clone, finalize, getClass, notify, notifyAll,
wait, wait, wait
此外,就是用于数值转换和计算的37个类方法(即静态方法):
4个字符串转 int
static int parseInt(String s)
static int parseInt(String s, int
radix) //
可以指定字符串的(任意)进制, 如: Integer.parseInt("Y1X", 26+10);
static int parseUnsignedInt(String
s) static int parseUnsignedInt(String s, int radix)
3个 Integer 构造器(类似 Integer 构造方法):
static Integer valueOf(int i)
static Integer valueOf(String s)
static Integer valueOf(String s, int radix)
5个 int 转字符串的方法,:
static String toString(int i)
static String toString(int i, int radix)
static String toBinaryString(int i)
static String toOctalString(int i)
static String toHexString(int i)
3个无符号字符串:(在某些场合比较实用)
static long toUnsignedLong(int x)
static String toUnsignedString(int i)
static String toUnsignedString(int i, int radix)
7个很简单的数据计算方法:
static int sum(int a, int
b) static int max(int a, int b)
static int min(int a, int b)
static int compare(int x, int y)
static int compareUnsigned(int x, int y)
static int divideUnsigned(int dividend, int
divisor) //三个数都按无符号数处理
static int
remainderUnsigned(int dividend, int divisor) // 求无符号余数
9个位操作方法:
static int reverse(int
i) // 按位倒过来
static int reverseBytes(int
i) // 按字节倒过来
static int bitCount(int
i) // 非零位数
static int numberOfLeadingZeros(int
i) // 开头0的位数
static int numberOfTrailingZeros(int
i) // 结尾0的位数
static int lowestOneBit(int
i) static int highestOneBit(int i)
static int rotateLeft(int i,
int distance) // 向左移位
static int rotateRight(int i, int
distance) // 向右移位
又1个转换字符串为基本类型的方法,可以读取不同进制标识:
int de =
Integer.decode("0x100"); // 0x 表示16进制
System.out.println(de); //
结果:256
de =
Integer.decode("#100"); // # 也标识16进制
System.out.println(de); //
结果也是 256
de =
Integer.decode("010"); // 0 开头表示8进制,没错就是阿拉伯数字0,
剧情很狗血 System.out.println(de); // 结果是 8
de =
Integer.decode("10"); //
用于反衬上述狗血剧情 System.out.println(de); // 结果是 10
如果你的系统属性是数字类型:这里有3个方法,封装了 System.getProperty() 方法:
static Integer getInteger(String
nm) // 相当于:
Integer.parseInt(System.getProperty(nm));
static Integer getInteger(String nm, int
val)
static Integer getInteger(String nm, Integer
val)
个人认为这个三个方法晦涩,没用, 多余。
数字的符号: 返回值:1表示正,-1表示负
static int signum(int i)
返回数字的哈希代码:
static int hashCode(int value)
最后,5个静态常量:
System.out.println(Integer.BYTES); // 4
System.out.println(Integer.SIZE); // 32
System.out.println(Integer.MAX_VALUE); // 2147483647
System.out.println(Integer.MIN_VALUE); // -2147483648
System.out.println(Integer.TYPE); // int
Long:
Long的类接口几乎和Integer一样:
对象方法:
byte byteValue()
short shortValue()
int intValue()
long longValue()
float floatValue()
double doubleValue()
int compareTo(Long anotherLong)
boolean equals(Object obj)
int hashCode()
String toString()
类方法:
static long max(long a, long b)
static long min(long a, long b)
static long sum(long a, long b)
static int compare(long x, long y)
static int compareUnsigned(long x, long y)
static long divideUnsigned(long dividend, long
divisor)
static long
remainderUnsigned(long dividend, long
divisor)
static long parseLong(String s)
static long parseLong(String s, int radix)
static long parseUnsignedLong(String s)
static long parseUnsignedLong(String s, int
radix)
static String toBinaryString(long i)
static String toHexString(long i)
static String toOctalString(long i)
static String toString(long i)
static String toString(long i, int radix)
static String toUnsignedString(long i)
static String toUnsignedString(long i, int
radix)
static Long valueOf(long l)
static Long valueOf(String s)
static Long valueOf(String s, int radix)
static long reverse(long i)
static long reverseBytes(long i)
static int bitCount(long i)
static int numberOfLeadingZeros(long i)
static int numberOfTrailingZeros(long i)
static long highestOneBit(long i)
static long lowestOneBit(long i)
static long rotateLeft(long i, int
distance)
static long rotateRight(long i, int
distance)
static Long decode(String nm)
static Long getLong(String nm)
static Long getLong(String nm, long val)
static Long getLong(String nm, Long val)
static int hashCode(long value)
static int signum(long i)
5个静态属性同 Integer
Float
12个对象方法:
byte byteValue()
short shortValue()
int intValue()
long longValue()
float floatValue()
double doubleValue()
int compareTo(Float anotherFloat)
boolean isInfinite()
boolean isNaN()
int hashCode()
boolean equals(Object obj)
String toString()
17个类方法:
static float max(float a, float b)
static float min(float a, float b)
static float sum(float a, float b)
static Float valueOf(float f)
static Float valueOf(String s)
static float parseFloat(String s)
static String toHexString(float f)
static String toString(float f)
static int compare(float f1, float f2)
static float intBitsToFloat(int bits)
static int floatToIntBits(float value)
static int floatToRawIntBits(float value)
static int hashCode(float value)
static boolean isFinite(float f)
static boolean isInfinite(float v)
static boolean isNaN(float v)
11 个静态属性:
static int BYTES
static int SIZE
static Class TYPE
static float MAX_VALUE
static float MIN_VALUE
static int MAX_EXPONENT // 最大指数
static int MIN_EXPONENT // 最小指数
static float MIN_NORMAL //正的最小值
static float NaN
static float NEGATIVE_INFINITY //最小负值
static float POSITIVE_INFINITY // 最大正值