类型转换(改)
概述
由于Java是强类型语言,所以进行有些运算的时候,需要用到进制转换。

运算中,不同类型的数据先转换为同一类型,然后再进行运算。
强制转换
(类型)变量名 高到低
byte b = (byte)i;
自动转换
低到高
注意点
-
不能对布尔类型进行转换
-
不能把对象类型转换为不相干的类型
-
转换的时候可能存在内存溢出,或者精度问题!(小数转整数去小数部分)
JDK7新特性
数字之间可以用下划线分割
int money = 10_0000_0000; 输出:1000000000
int money = 10_0000_0000;
int year = 20;
long total = money * year; 会溢出
long total2 = money * ((long)year); 不会溢出
默认是int,转换之前已经存在问题了!
//Java-零基础学习/src/base/Demo04
public class Demo04 {
public static void main(String[] args) {
//强制转换:(类型)变量名
int num1 = 128;
byte num2 = (byte)num1;//内存溢出
System.out.println(num1);
System.out.println(num2);
System.out.println("===================================");
//=======================================
//自动转换:从低到高
double num3 = num1;
System.out.println(num3);
System.out.println("===================================");
//=======================================
//小数转整数:去小数部分
System.out.println((int)23.7);
System.out.println((int)-23.7f);
System.out.println("===================================");
//=======================================
//字符转整数
char c = 'a';
int num4 = c + 1;
System.out.println(num4);
System.out.println((char)num4);
System.out.println("===================================");
//=======================================
//操作比较大的数,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 1_000_000_000;
System.out.println(money);
int year = 20;
int total1 = money * year;
long total2 = money * year;
System.out.println(total1);//总数溢出了
System.out.println(total2);//先计算完再强制转换,因此结果不变
long total3 = money * (long)year;
long total4 = 10_000_000L;//小写l和1容易搞错,因此尽量用大写L
System.out.println(total3);
System.out.println(total4);
}
}

浙公网安备 33010602011771号