1、自动类型转换
自动类型转换是指容量小的数据类型自动向容量大的数据类型转换。可以将整型常量直接赋值给byte,chort,char等类型,不需要强制转换,只要不超过其表数范围即可。
int,long类型转换为float,double类型可能会有精度损失。
测试自动类型转换:
int a =333;
long a1 =a;
double a2 =a1;
// a=a1; a1为long类型容量比int大所以出错
//long a3 =3.23; float double全都比long类型容量大
float f=232321L;
//特例
byte a4=123;//注意不能超过byte表示范围
强制类型转换:
又称为造型,用于显示的转换一个数值的类型,在有可能丢失信息的情况下进行的类型转换通过造型来完成,但可能造成精度降低或溢出。
语法格式:(type)var
测试强制类型转换:
double p=3.14;
int np =(int)p;//值为3
char s ='c';
int s1 =s+1;
System.out.println(np);
System.out.println(s1);
System.out.println((char)s1);
常见错误:
当操作的数较大时,留意是否溢出。
注意一些字母小写时与数字相像,尽量避免使用。
测试:
int m = 1000000000;
int month =12;
int z =m*month;
System.out.println(z);
//返回z为负值,超过了int的范围
long z1 =m*month;
System.out.println(z1);
//返回z为负值,默认为int类型,超过了int的范围
long z2 =(long)m*month;
System.out.println(z2);
//先将一个因子变成long,整个表达式发生提升,全部用long计算
小小补充,关于scanner的使用:
相关代码:
Scanner sc =new Scanner(System.in);//记得导包,注意大小写
System.out.println("请输入姓名");
String name =sc.nextLine();
System.out.println("请输入专业");
String z =sc.nextLine();
System.out.println("请输入班级");
int g =sc.nextInt();
System.out.println("############");
System.out.println(name);
System.out.println(g);
System.out.println(z);