基本数据类型 | 包装类型 |
---|---|
byte | java.lang.Byte(父类Number) |
short | java.lang.Short(父类Number) |
int | java.lang.Integer(父类Number) |
long | java.lang.Long(父类Number) |
float | java.lang.Float(父类Number) |
double | java.lang.Double(父类Number) |
boolean | java.lang.Boolean(父类Object) |
char | java.lang.Character(父类Object) |
注意: 8种包装类属于 引用数据类型
方法名 | 作用 |
---|---|
byte byteValue() | 以 byte 形式返回指定的数值 |
abstract double doubleValue() | 以 double 形式返回指定的数值 |
abstract float floatValue() | 以 float 形式返回指定的数值 |
abstract int intValue() | 以 int形式返回指定的数值 |
abstract long longValue() | 以 long形式返回指定的数值 |
short shortValue() | 以 short形式返回指定的数值 |
注意: 这些方法所有的数字包装类的子类都有,这些方法是负责 拆箱
的。
public class IntegerTest02 { public static void main(String[] args) { // 123这个基本数据类型,进行构造方法的包装达到了:基本数据类型向引用数据类型的转换。 // 基本数据类型 -(转换为)->引用数据类型(装箱) Integer i = new Integer(123); // 将引用数据类型--(转换为)-> 基本数据类型 float f = i.floatValue(); System.out.println(f); //123.0 // 将引用数据类型--(转换为)-> 基本数据类型(拆箱) int retValue = i.intValue(); System.out.println(retValue); //123 } }
Integer构造方法名 |
---|
Integer(int value) |
Integer(String s) |
注意:
Character构造方法名 |
---|
Character(char value) |
注意: Float比Integer多一个
Float构造方法名 |
---|
Float(double value) |
eg.
public class IntegerTest03 { public static void main(String[] args) { // Java9之后不建议使用这个构造方法了。出现横线表示已过时。 // 将数字100转换成Integer包装类型(int --> Integer) Integer x = new Integer(100); System.out.println(x); // 将String类型的数字,转换成Integer包装类型。(String --> Integer) Integer y = new Integer("123"); System.out.println(y); // double -->Double Double d = new Double(1.23); System.out.println(d); // String --> Double Double e = new Double("3.14"); System.out.println(e); } }
常量属性 |
---|
MAX_VALUE |
MIN_VALUE |
注意: Byte、Short、Integer、Long、Float、Double都有。
eg.
public class IntegerTest04 { public static void main(String[] args) { // 通过访问包装类的常量,来获取最大值和最小值 System.out.println("int的最大值:" + Integer.MAX_VALUE); System.out.println("int的最小值:" + Integer.MIN_VALUE); System.out.println("byte的最大值:" + Byte.MAX_VALUE); System.out.println("byte的最小值:" + Byte.MIN_VALUE); } }
eg.
public class IntegerTest05 { public static void main(String[] args) { // 900是基本数据类型 // x是包装类型 // 基本数据类型 --(自动转换)--> 包装类型:自动装箱 Integer x = 900; // 等同于:Integer z = new Integer(900); System.out.println(x); // x是包装类型 // y是基本数据类型 // 包装类型 --(自动转换)--> 基本数据类型:自动拆箱 int y = x; System.out.println(y); } }
注意:自动装箱底层实际上还是new对象了。
public class IntegerTest05 { public static void main(String[] args) { // z是一个引用,z是一个变量,z还是保存了一个对象的内存地址。 Integer z = 1000; // 等同于:Integer z = new Integer(1000); // 分析为什么这个没有报错呢? // +两边要求是基本数据类型的数字,z是包装类,不属于基本数据类型,这里会进行自动拆箱。将z转换成基本数据类型 // 在java5之前你这样写肯定编译器报错。 System.out.println(z + 1);//1001 Integer a = 1000; // Integer a = new Integer(1000); a是个引用,保存内存地址指向对象。 Integer b = 1000; // Integer b = new Integer(1000); b是个引用,保存内存地址指向对象。 System.out.println(a == b); //false } }
注意:
+ - * /
等运算的时候才会触发自动拆箱机制public class IntegerTest06 { public static void main(String[] args) { Integer a = 128; Integer b = 128; System.out.println(a == b); //false //原理:x变量中保存的对象的内存地址和y变量中保存的对象的内存地址是一样的。 Integer x = 127; Integer y = 127; // == 永远判断的都是两个对象的内存地址是否相同。 System.out.println(x == y); //true } }
java中为了提高程序的执行效率,将 [-128 ~ 127]
之间所有的包装对象提前创建好, 放到了一个方法区的“整数型常量池
”当中了。
目的是:只要用这个区间的数据不需要再new了,直接从整数型常量池当中取出来。
方法名 | 作用 |
---|---|
static Integer decode(String nm) | 将String转成Integer |
static int compare(int x, int y) | 比较两个数是否相等;相等返回0;前大后小返回1;后大前小返回-1 |
static int signum(int i) | 符号函数;负数返回-1;正数返回1;0返回0 |
static String toBinaryString(int i) | 将i转成二进制 |
static String toHexString(int i) | 将i转成十六进制 |
static String toOctalString(int i ) | 将i转成八进制 |
常用方法 | |
static int parseInt(String s) | 字符串转int |
static Integer valueOf(String s) | 字符串转Integer |
String toString() | Integer转String |
boolean equals(Object obj) | 判断两个Integer是否相等 |
注意: Byte、Short、Long、Float、Double、Boolean照葫芦画瓢,方法差不多相同。
eg.
class IntegerTest{ public static void main(String[] args) { Integer d = Integer.decode("123"); System.out.println(d);//自动拆箱 123 Integer a = 100; Integer b = 100; int res1 = Integer.compare(a, b); System.out.println(res1);//0 res1 = Integer.compare(-a, b); System.out.println(res1);//-1 res1 = Integer.compare(a, -b); System.out.println(res1);//1 System.out.println(a.equals(b));//true int i = Integer.parseInt("123"); System.out.println(i);//123 System.out.println(Integer.signum(-123));//-1 System.out.println(Integer.signum(123));//1 System.out.println(Integer.signum(0));//0 System.out.println(Integer.toBinaryString(10));//1010 System.out.println(Integer.toOctalString(10));//12 System.out.println(Integer.toHexString(10));//a String s = Integer.toString(123); System.out.println(s);//123 Integer int1 = Integer.valueOf("123"); System.out.println(int1);//123 } }
方法名 | 作用 |
---|---|
char charValue() | 将Character转成char |
int compareTo(Character anotherCharacter) | 判断两个Character是否相等;相等返回0;前大后小返回1;后大前小返回-1 |
常用方法 | |
boolean equals(Object obj) | 判断两个Character是否相等 |
String toString() | 将Character转成String |
static boolean isDigit(char ch) | 判断ch是不是数字 |
static boolean isLetter(char ch) | 判断ch是不是字母 |
static boolean isLetterOrDigit(char ch) | 判断ch是不是字母或数字 |
static boolean isLowerCase(char ch) | 判断ch是不是小写字母 |
static boolean isUpperCase(char ch) | 判断ch是不是大写字母 |
static boolean isSpaceChar(char ch) | 判断ch是不是空格 |
static Character valueOf(char c) | 将char转成Character |
eg.
class CharacterTest{ public static void main(String[] args) { Character c = 'a'; char res1 = c.charValue(); System.out.println(res1);//a Character a = 'a'; Character b = 'b'; System.out.println(a.compareTo(b));//-1 System.out.println(a.equals(b));//false System.out.println(Character.isDigit('1'));//true System.out.println(Character.isLetter('a'));//true System.out.println(Character.isLetterOrDigit('1'));//true System.out.println(Character.isLetterOrDigit('a'));//true System.out.println(Character.isLowerCase('a'));//true System.out.println(Character.isUpperCase('A'));//true System.out.println(Character.isSpaceChar(' '));//true System.out.println(c.toString());//"a" System.out.println(Character.valueOf('c'));//c } }