java 基本类型 不赋值_关于Java基本数据类型那些小细节(变量声明、类型转换、赋值等)...

走过路过不要错过,快来看一看,瞧一瞧了,买不了吃亏买不了上当,满满干货。hhhhh~

一、变量声明

整数型默认int

浮点型默认double

1、声明float类型

float f11 = 1; //赋值整数不会报错,可加f可不加,会自动转换成带精度的数//float f12 = 1.0;//赋值小数会报错,要加上f后缀

float f13 = 1.0f;

注意:当进行两个数(整数/浮点数)进行比较,float类型的变量值带f后缀时,有两种情况。(这个细节很容易忽视,就好比字符串比较时,经常会习惯性用==操作符)

(一)被比较的数为带精度的整数,例:1.0等。

此时,被比较数不需要加f后缀,也能正确得到比较结果。如下图所示:

20201205164724296m5pdvx80jfeewjz_1.png

(二)被比较的数为纯小数,例:1.8等。

此时,被比较数需要加f后缀,才能正确得到比较结果。如下图所示:

被比较数不加f后缀时:

20201205164724296m5pdvx80jfeewjz_3.png

被比较数加f后缀时:

20201205164724296m5pdvx80jfeewjz_4.png

2、声明double类型

//声明double类型时,可加d后缀可不加,会自动转换为带精度的数

double d11 = 1;double d12 = 1.0;double d13 = 1.0d;

注意:当进行两个数(整数/浮点数)进行比较时,与纯小数比较时,也有两种情况。(这个情况主要还是和精度有关,一般不容易犯错,但也要注意)

(一)被比较的数为不带后缀的纯小数,例:1.8等

因为浮点数默认double,不带后缀的纯小数都默认转换为double了,所以能得到正确的比较结果。如下图所示:

20201205164724296m5pdvx80jfeewjz_0.png

(二)被比较的数为带后缀f的纯小数,例:1.8f等

因为double比float精度高,所以不能得到正确的比较结果。如下图所示:

20201205164724296m5pdvx80jfeewjz_5.png

3、声明long类型

//声明long类型//long l11 = 444444444444444;//报错,要加上l后缀

long l12 = 444444444444444l;

4、局部变量声明时没有初始化就使用,会报错(有点跳戏了,不过和变量声明还是有一丝丝关系啦~~~)

inta;int b = 0;int c = 0, d = 0;//System.out.println(a);//未初始化就使用会报错(局部变量)

System.out.println(b); //初始化使用不会报错(局部变量)

二、类型转换与赋值

向上自动转换

向下强制转换

备注: byte的类型的范围是 -128 ~ 127 ( -2^(8-1)  ~  2^(8-1) -1 )

1、赋值问题

举例:byte赋值

//直接赋值超出范围报错,如下//byte exampleB1 = 128;

2、强制转换数据溢出情况

举例: int转byte

int exampleB2 = 129; //129往前移两位得-127

System.out.println((byte)exampleB2); //-127

int exampleB3 = -129; //-129往前移一位得127

System.out.println((byte)exampleB3); //127

int exampleB4 = 256; //256往前移(256-127=129)位,即0

System.out.println((byte)exampleB4); //0

分析:

想象这个范围是在数轴上一直连续的区间

20201205164724296m5pdvx80jfeewjz_6.png

以中间这个区间为起始区间,当int = 129时,超出了区间(129-127 = 2)位,在对应的连续区间里的位置是第二位,第一位是-128,第二位是-127,所以此时强制转换打印的值是-127,而不是129

20201205164724296m5pdvx80jfeewjz_2.png

以中间这个区间为起始区间,当int = -129时,超出了区间(-128 - (-129) = 1)位,在对应的连续区间里的位置是第一位,数一位,第一位是127,所以此时强制转换打印的值是127,而不是129

20201205164724296m5pdvx80jfeewjz_7.png

记得点赞,么么哒~~~(づ ̄ 3 ̄)づ,爱您!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值