day 2.4基础测试项目(2)

package pracrise1;

public class test2 {

public static void main(String[] args) {
	// TODO Auto-generated method stub

// int a =9999999999;// 会显示溢出,因为已经超出了int 型的最大范围

// byte , short ,char 三种比int 小的整数 ,可以用范围内的值直接赋值,即不超过自身范围的数都可以直接赋值
// byte a =127;
// byte b =128; //byte 最大为127,溢出,报错

// 浮点数的字面值类型是double
// float a =3.0; //显示报错,因为默认类型是double

// 字面值后缀
// int a =9999999999;// 会显示溢出,因为已经超出了int 型的最大范围,但如果还想用99999999这个整数怎么办呢?
//将数字转为long 型,数字后加上后缀 L(一般为大写,小写容易混淆)
// long a =9999999999; //注意,此时的9999999还是int型,所以还是会报错
// long a =9999999999L; //正确方式

// 同理
// float a =3.0; //显示报错,因为默认类型是double
// float a =3.0f; //f 或 F都可
// double a =3 ; //输出为3.0 ,因为3为int型,且没有超出int范围,所以可直接输出
// double a =99999999999d; //此时已超出int范围,所以要加上d,转为double类型,输出结果为99999999999.0

	//进制前缀 

// 0011 为避免误会,在二进制前面加上 0b 即 0b0011 表示二进制
// 076 八进制,在前面加上 0 ,即 0076 表示八进制
// 0863 十六进制 ,在前面加上 0x, 即0x0863 表示十六进制
// /在前面加上 \ u 表示char类型 ,如 \u0000/

	//基本类型转换   Boolean 不参与

// char
// ↓
// byte → short → int → long
// ↓ ↘ ↙ ↓
// float double
// 从小到大 隐式转换 即可直接转换
// eg: byte a =10;
// int b =a;

// 从大到小 显示转换 需要强制转换
// int a =10;
// byte b= a; //报错 cannot convert from int to byte
// byte b =(byte) a; //需要在前面加上(强制转换后的类型)
// System.out.println(b); //10

// 特别的是,char 类型 和byte ,short 等类型进行转换,无论从谁到谁都需要强制转换
// char a =1;
// byte b =a; //报错
// short c =a; //报错
// int b = a; //可以,因为是从小到大,看上方转换关系图
// long b =a;
// System.out.println(b); //1
// double b =a; //也可以
// float b = a; //可以

	//浮点数转换成整数时,小数部分舍弃

// double a =3.11;
// int b =(int ) a;
// System.out.println(b); //输出结果为3

// 运算规则
// 1.计算结果的数据类型,与最大类型一致
// System.out.println(5/2);//结果为2 因为5 和 2 都为int 型,最大类型也为 int 型,小数省略
// System.out.println(5.0/2); //结果为2.5 ,因为5.0 为double 型,所以最大类型为double型,结果也为double型

// 2.byte ,short,char 三种比int小的整数,运算时会先自动转成int型
// byte a =2;
// byte b =3;
// int c =a+b; //不显示报错,因为在运算时,已经转为了int型
// byte d =byte a + byte b ; //错误,因为a和b本身就是byte型,相加后还是int型
// byte d =(byte)(a+b); //正确

// byte a =2;
// short b=4;
// int c =a+b;//不报错,同理

	//3.整数运算溢出

// 整数运算时,相当于一个时钟,最大值为12,当超过12时,又重新开始计算,比如14为2
// 例如 int 的最大值为2147483647 ,当为2147483648时,值为-2147483648,即int 的最小值
// System.out.println(2147483647 +1);
//为避免这种情况,根据运算规则1,将最大类型改为long型,将范围变得更大,可以解决这个问题
// System.out.println(2147483647 +1L); //结果为2147483648
// System.out.println(2147483647+1+2L);//结果为-2147483646 ,因为2147483647+1 的结果仍为int 型,此时已经超出范围,开始新的轮回,再加入2L后才变成long
// System.out.println(2147483647L+1+2);//结果为2147483650,因为 一开始2147483647L+1的运算中,就已经将结果转为long型了

// 4.浮点数计算不精确
// System.out.println(1-0.8); //结果为0.19999999999999996 解决方法后面学

// 5.浮点数的特殊值 Infinity 无穷大 ;NaN not a number 不是一个数
// System.out.println(3/0);//报错分母不能为0,此时为整数,
// System.out.println(3.0/0); //结果为Infinity
// System.out.println(0/0.0);//结果为NaN

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值