一、包装类
作用主要有以下两方面:
-
编码过程中只接收对象的情况,比如List中只能存入对象,不能存入基本数据类型;比如一个方法的参数是Object时,不能传入基本数据类型,但可以传入对应的包装类
-
方便类型之间的转换,比如String和int之间的转换可以通过int的包装类Integer来实现
八大基本数据类型和包装类对应表
基本数据类型 | 包装类 |
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
1、Integer
Integer构造方法如下:
方法 | 返回值 | 功能 |
byteValue() | byte | 以byte类型返回该Integer的值 |
compareTo() | int | 在数字上比较两个Integer对象。如果这两个值相等,则返回0;如果调用对象的数值小于anotherInteger的数值,则返回负值,如果调用对象的数值大于anotherInteger的数值,则返回正值 |
equals(Object IntegerObj) | boolean | 比较此对象与指定的对象是否相等 |
intValue() | int | 以int型返回此Integer对象 |
shortValue() | short | 以short型返回此Integer对象 |
toString() | String | 返回一个表示该Integer值的String对象 |
valueOf(String str) | Integer | 返回保存指定的String值的Integer对象 |
parseInt | int | 返回包含在由str指定的字符串中的数字的等价整数值 |
构造方法一,该方法以一个int型变量作为参数来获取Integer对象
Integer number = new Integer(7)
构造方法二,该方法以一个String型变量作为参数来获取Integer对象
Integer number = new Integer("45")
Integer 类型和基本数据类型之间的转换
public static void main(String[] args) {
int a0 = 1;
Integer a1 = new Integer(a0);
double a2 = a1.doubleValue();
float a3 = a1.floatValue();
int a4 = a1.intValue();
System.out.println("Integer包装类:"+a1);
System.out.println("double类型:"+a2);
System.out.println("float类型:"+a3);
System.out.println("int类型:"+a4);
}
toString方法进行进制转换
public static void main(String[] args) {
String a1 = Integer.toBinaryString(123456789);
//获得该数的二进制表示
String a2 = Integer.toOctalString(123456789);
//获得该数的八进制表示
String a3 = Integer.toString(123456789);
//获得该数的十进制表示
String a4 = Integer.toHexString(123456789);
//获得该数的十六进制表示
System.out.println("“123456789”的二进制表示为:"+a1);
System.out.println("“123456789”的八进制表示为:"+a2);
System.out.println("“123456789”的十进制表示为:"+a3);
System.out.println("“123456789”的十六进制表示为:"+a4);
}
2、Boolean
构造方法一:Boolean(boolean value),该方法创建一个表示value参数的Boolean对象
Boolean b = new Boolean(true)
构造方法二:Boolean(String str),该方法以String变量作为参数创建Boolean对象,如果String参数不为null且在忽略大小写时等于true,则分配一个表示true值的Boolean对象,否则获得一个false值的对象
Boolean bool = new Boolean("ok")
常用方法
方法 | 返回值 | 功能 |
booleanValue() | boolean | 将Boolean对象的值以及对应的boolean值返回 |
equals(Object obj) | boolean | 判断调用该方法的对象与obj是否相等。当且仅当参数不是null时,而且与调用该方法的对象一样都表示同一个boolean的值的Boolean对象时,才返回true |
parseBoolean(String s) | boolean | 将字符串参数解析为boolean值 |
toString() | String | 返回表示该boolean值的String对象 |
valueOf(String s) | boolean | 返回一个用指定的字符串表示值的boolean值 |
常量:
-
TRUE:对应基值true的Boolean对象
-
FALSE:对应基值false的Boolean对象
-
TYPE:基本类型boolean的Class对象
代码:
public static void main(String[] args) {
//创建Boolean对象
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean("ok");
//调用booleanValue()方法将创建的对象重新转换为boolean数据输出
System.out.println("b1:"+b1.booleanValue());
System.out.println("b2:"+b2.booleanValue());
}
3、Byte
构造方法一:Byte(byte value),通过这种方法创建的Byte对象,可表示指定的byte值
byte mybyte = 45;
Byte b = new Byte(mybyte);
构造方法二:Byte(String str),通过这种方法创建的Byte对象,可表示String参数所指示的byte值
常用方法
方法 | 返回值 | 功能 |
byteValue() | byte | 以一个byte值返回Byte对象 |
compareTo(Byte anotherByte) | int | 判在数字上比较两个Byte对象 |
doubleValue() | double | 以一个double值返回此Byte的值 |
intValue() | int | 以一个int值返回此byte的值 |
parseByte(String s) | byte | 将String型参数解析成等价的字节(byte)形式 |
toString() | String | 返回表示此Byte的值的String对象 |
valueOf(String str) | byte | 返回一个保持指定String所给出的值的Byte对象 |
equals(Object obj) | boolean | 将此对象与指定对象比较,如果调用该方法的对象与obj相等,则返回true,佛祖额返回false |
常量
-
MIN_VALUE:byte类型可取的最小值
-
MAX_VALUE:byte类型可取的最大值
-
SIZE:用于以二进制补码形式表示byte值的位数
-
TYPE:表示基本类型byte的Class实例
4、Character
构造方法一
Character(char value)
该类的构造函数必须是一个char类型的数据,通过该构造函数创建的Character类对象包含由char类型参数提供的值。一旦Character类被创建,它包含的数值就不能改变了。
常用方法
方法 | 返回值 | 功能 |
charvalue() | char | 返回此Character对象的值 |
compareTo(Character anotherByte) | int | 根据数字比较两个Character对象,若这两个对象相等则返回0 |
equals(Object obj) | Boolean | 将调用该方法的对象与指定的对象相比较 |
toUpperCase(char ch) | char | 将字符参数转为大写 |
toLowerCase(char ch) | char | 将字符参数转为小写 |
toString() | String | 返回表一个表示指定char值的String对象 |
charValue() | char | 返回此Character对象的值 |
isUpperCase(char ch) | boolean | 判断指定字符是否为大写字符 |
isLowerCase(char ch) | boolean | 判断指定字符是否为小写字符 |
常量
-
CONNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类别“Pc”
-
UNASSIGNED:返回byte型值,表示Unicode规范中的常规类别“Cn”
-
TIYLECASE_LETTER:返回byte型值,表示Unicode规范中的常规类别“Lt”
代码:
public static void main(String[] args) {
//创建Character对象
Character c1 = new Character('A');
Character c2 = new Character('a');
//判断字符的大小写状态
System.out.println("c1是大写字母吗: "+Character.isUpperCase(c1));
System.out.println("c2是小写字母吗: "+Character.isLowerCase(c2));
}
5、Double
构造方法一:Double(double value):基于double参数创建Double对象
构造方法二:Double(String str):构造一个新分配的Double对象,表示用字符串表示的double类型的浮点值
常用方法
方法 | 返回值 | 功能 |
byteValue() | byte | 以byte形式返回Double对象值(通过强制转换) |
compareTo(Double d) | int | 对两个Double对象进行数值比较,如果两个值相等,则返回0;如果调用对象的数值小于d的数值,则返回负值;如果调用对象的数值大于d的值,则返回正值 |
equals(Object obj) | boolean | 将此对象与指定的对象相比较 |
intValue() | int | 以int形式返回double值 |
isNaN() | boolean | 如果此double值是非数字(NaN)值,则返回true;否则返回false |
toString() | String | 返回此Double对象的字符串表示形式 |
valueOf(String str) | Double | 返回保存用参数字符串str表示的double值的Double对象 |
doubleValue() | double | 以double形式返回此Double对象 |
longValue() | long | 以long形式返回此double的值(通过强制转换为long类型) |
常量
-
MAX_EXPONENT:返回int值,表示有限double变量可能具有的最大指数
-
MIN_EXPONENT:返回int值,表示标准化double变量可能具有的最小指数
-
NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值的常量
-
POSITIVE_INFINITY:返回double值,表示保存double类型的正无穷大值的常量
二、处理对象
1、toString()方法
toString()方法是 Object 类里的一个实例方法,所有的 Java 类都是 Object 类的子类,因此所有的 Java对象都具有 toString()方法。不仅如此,所有的 Java 对象都可以和字符串进行连接运算,当Java 对象和字符串进行连接运算时,系统自动调用 Java 对象 toString0方法的返回值和字符串进行连接运算,即下面两行代码的结果也完全相同。
string pStr = p +"";
string pstr= P.tostring()+"";
toString()方法是一个非常特殊的方法,它是一个“自我描述”方法,该方法通常用于实现这样一个功能:当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用以告诉外界该对象具有的状态信息。
Object 类提供的 toString()方法总是返回该对象实现类的“类名十@+hashCode”值,这个返回值并不能真正实现“自我描述”的功能,因此如果用户需要自定义类能实现“自我描述”的功能,就必须重写 Object 类的 toStringO方法。例如下面程序。
class Apple{
private String color;
private double weight;
public Apple(String color,double weight){
this.color = color;
this.weight = weight;
}
public String toString(){
return "Apple[color ="+color+",weight ="+weight+"]";
}
}
public class ToStringTest {
public static void main(String[] args) {
Apple a = new Apple("红色",5.68);
System.out.println(a);
}
}
输出:
Apple[color =红色,weight =5.68]
2、==和 equals 方法
Java 程序中测试两个变量是否相等有两种方式:一种是利用=-运算符,另一种是利用 equals()方法。当使用——来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数据类型严格相同),则只要两个变量的值相等,就将返回 true。
但对于两个引用类型变量,只有它们指向同一个对象时,一判断才会返回 true。—不可用于比较类型上没有父子关系的两个对象。下面程序示范了使用—来判断两种类型变量是否相等的结果。
public class equals {
public static void main(String[] args) {
int it = 65;
float fl = 65.0f;
System.out.println("65和65.0f是否相等?"+(it==fl)); //将输出true
char ch ='A';
System.out.println("65和'A'是否相等?"+(it==ch)); //将输出true
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println("str1和str2是否相等?"+(str1==str2)); //将输出false
System.out.println("str1是否equals str2?"+(str1.equals(str2))); //将输出true
}
}