java类型转换
1.由于java是强类型语言,所以进行有些运算的时候需要类型转换
低-------------------------------------------------------------------高
byte,short,char,->int ->long -> float -> double
2.运算中,不同类型的数据先转化为同一类型,然后运算。
3.强制类型转换
import java.nio.charset.CharsetEncoder;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
int i =128; // byte b = i; 会报错,所以需要强制转换
//强制转换 (类型)变量名 高到低
//强制转换 (类型)变量名 高到低
byte b =(byte)i;// 所以要在i前面加强制转换符号(byte)
// 内存溢出
System.out.println(i); //会出现-128是因为byte的范围是-128至127 内存溢出
//自动转换 (类型)变量名 低到高
//int i = 128;
double c =i;
System.out.println(c); //由低到高就会自动转换
/*
注意点
1.不能对布尔值转换;
2.不能把对象类型转换为不相干的类型;
3.再把高容量转换为低容量的时候,强制转换;
4.转换的时候可能出现内存溢出,或者精度问题;
*/
System.out.println("======================================");
System.out.println((int) 45.2); // 45 double
System.out.println((int) -45.87f); // -45 f 浮点数 精度缺少
System.out.println("======================================");
char a = 'e';
int d = a+2;
System.out.println(d); // 103 g
System.out.println((char)d);
System.out.println("======================================");
//操作比较大的数的时候,注意溢出的问题;
//数字之间可以用下划线表示
int money = 10_0000_0000;
int year = 4;
int total = money*year;
long total2 = money*year;
System.out.println("总金额"+total); // -294967296 ,计算的时候内存溢出;
System.out.println(total2); // 默认是int,转换前已经存在问题了;
//所以需要在计算前转换
long total3 = ((long) money)*year; //先把一个数转换为long类型;
System.out.println("总金额"+total3);
}
}
4.自动类型转换
//自动转换 (类型)变量名 低到高
double c =i;
System.out.println(c);