基本类型
包装类
包装类的抽象父类 Number
相互之间转化
基本数据类型 —>包装类:
调用包装类的构造器
@Test
public void test1(){
int num1 = 10;
// System.out.println(num1.toString());
Integer in1 = new Integer(num1);
System.out.println(in1.toString());
Integer in2 = new Integer("123");
System.out.println(in2.toString());
//报异常
// Integer in3 = new Integer("123abc");
// System.out.println(in3.toString());
Float f1 = new Float(12.3f);
Float f2 = new Float("12.3");
System.out.println(f1);
System.out.println(f2);
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean("TrUe");
System.out.println(b2);
Boolean b3 = new Boolean("true123");
System.out.println(b3);//false
Order order = new Order();
System.out.println(order.isMale);//false
System.out.println(order.isFemale);//null
}
class Order{
boolean isMale;
Boolean isFemale;
}
包装类—>基本数据类型:
调用包装类Xxx的xxxValue()
@Test
public void test2(){
Integer in1 = new Integer(12);
int i1 = in1.intValue();
System.out.println(i1 + 1);
Float f1 = new Float(12.3);
float f2 = f1.floatValue();
System.out.println(f2 + 1);
}
自动装箱 与自动拆箱
- JDK 5.0 新特性:自动装箱 与自动拆箱
@Test
public void test3(){
// int num1 = 10;
// //基本数据类型-->包装类的对象
// method(num1);
//自动装箱:基本数据类型 --->包装类
int num2 = 10;
Integer in1 = num2;//自动装箱
boolean b1 = true;
Boolean b2 = b1;//自动装箱
//自动拆箱:包装类--->基本数据类型
System.out.println(in1.toString());
int num3 = in1;//自动拆箱
}
与String之间的转化
基本数据类型、包装类—>String类型:
方式1:连接运算
String str1 = num1 + “”;
方式2:调用String的valueOf(Xxx xxx)
@Test
public void test5(){
int num1 = 10;
//方式1:连接运算
String str1 = num1 + "";
System.out.println(str1);
//方式2:调用String的valueOf(Xxx xxx)
float f1 = 12.3f;
String str2 = String.valueOf(f1);//"12.3"
Double d1 = new Double(12.4);
String str3 = String.valueOf(d1);
String str4 = String.valueOf(13);
System.out.println(str2);
System.out.println(str3);//"12.4"
System.out.println(str4);
}
String类型 —>基本数据类型、包装类:
方式1:通过包装类的构造器实现
Integer integer = new Integer(“10”);
方式2:调用包装类的parseXxx(String s)
不能强转
强转要有子父类关系才行
错误的情况:
int num1 = (int)str1;
Integer in1 = (Integer)str1;
可能会报NumberFormatException
@Test
public void test5(){
//通过包装类的构造器实现
Integer integer = new Integer("10");
System.out.println(integer+1);
String str1 = "123";
//错误的情况:
// int num1 = (int)str1;
// Integer in1 = (Integer)str1;
//可能会报NumberFormatException
int num2 = Integer.parseInt(str1);
System.out.println(num2 + 1);
String str2 = "true1";
boolean b1 = Boolean.parseBoolean(str2);
System.out.println(b1);
}
总结:
Java将带小数点的String类型值转换成int值
Double.valueOf(str).intValue();
@Test
public void test01(){
String num = "29.00";
int intNum = Double.valueOf(num).intValue();
System.out.println(intNum);
}
new java.text.DecimalFormat(“#0.00”);
@Test
public void test02(){
String str="555.1122";
double num;
java.text.DecimalFormat myformat=new java.text.DecimalFormat("#0.00");
num=Double.parseDouble(str);//装换为double类型
num=Double.parseDouble(myformat.format(num));//保留2为小数
System.out.println(num);
}
需求: 如果是小数,保留两位,非小数,保留整数
/*
* 如果是小数,保留两位,非小数,保留整数
*/
@Test
public void test03() {
double number1=131333.53236313431303231;
double number2=2021;
String s1 = getDoubleString(number1);
String s2 = getDoubleString(number2);
System.out.println(s1);
System.out.println(s2);
}
public static String getDoubleString(double number) {
String numberStr;
if (((int) number * 1000) == (int) (number * 1000)) {
//如果是一个整数
numberStr = String.valueOf((int) number);
} else {
DecimalFormat df = new DecimalFormat("######0.00");
numberStr = df.format(number);
}
return numberStr;
}