JAVA_DAY03知识重点整理(数据类型和运算符)

1.int是java中的默认数值,当把一个数赋值给byte或者short时,系统会检测数值大小,符合规范,系统会把这个数当作byte或者short处理,当把一个数赋值给long类型时,系统还是会把这个数作为int类型,不过在这里进行了自动转换,当把一个超出int范围内的值付给long类型时,需要在这个数之后加上L(而不是l,因为L会更好读,不与1混淆)表明这是一个long类型数据
2.0开头的数字在java中表示八进制数据,0x则表示16进制数据,0b表示二进制数据,二进制数据的最高位是符号位,0为正数,1为负数,负数在计算机中是以补码存储的
3.int的占4个字节,长度为32位(一个字节8位),因此一个java中默认的负数的符号位就是32位,一个long类型的数据,他的符号位就是64位
4,源码到补码的换算就是先使用源码,符号位不变,其余所有位取反得到反码,反码加一得到补码
    例:
        原码:1 0 0 0 0 0 0 0 0 0 0 0 .... 1
        反码:1 1 1 1 1 1 1 1 1 1 1 1 .... 0 (原码除符号位取反)
        补码:1 1 1 1 1 1 1 1 1 1 1 1 .... 1 (在反码的基础上加一,得到补码)
    由此可见,当作强制类型转换时,完全有可能把一个正数截取成一个负数
5.正数的原反补相同
6.java中的char类型是用Unicode作为编码形式的(任何数据类型在计算机底层都是以二进制数据来进行存储的,包括视频,图片,音乐等,等到使用它们时,再把二进制数据提取出来,采用相对的编码表进行解码就可以使用了),因此,char完全可以看作是一个占两个字节的数字,并可以与其他类型进行计算
    例:
        char zhong = '风'
        int charValue = zhong
        char c = 97
7.java中的浮点型采用的是科学计数法来表示的,因此保存相对精度较高的数据是可能会产生偏差(double类型相对比float类型精度更高,但就算是double也会产生精度偏差),因此,如果想要精确的保存一个浮点数,要使用BigDecimal类
8.java中浮点数会被默认当作double来对待,如果想使用float来对待,要在浮点数后加f或者F
9.java支持使用科学记数法来表示一个浮点数,例如:5.12E2(表示5.12二次方),51200是一个int类型数据,但是512E2就会被当作浮点数来对待
10.关于强制转换类型的一个经典错误:
        short s = 5
        s = s - 2             这段代码编译是不能通过的,因为s是short类型,而2是int类型,short类型在于int做运算时会被提升为int类型,之后,不能在赋值给short类型的s了
11.String类型的直接量,在编译的时候就会保存在常量池
12.位运算:&当两个数的位都为1时才为1,否则为0,|当两个数有一边为1则为1,~单目运算(只作用一个数)将全部位取反(包括符号位),^当两个数位相同时返回0不同返回1,<<左移,后面用0补,>>右移前面用符号位补,>>>无符号右移前面用0补
13.可以看出,正数<<n位就是这个数乘以2的n次方,右移就是除以2的n次方(只针对于正数)
14.赋值运算符的作用
    例:
        byte b = 5
        b = b + 3    (错的,编译不通过,3是int,在做运算时结果提升为int类型,所以不可以再赋值给byte类型的b)
        b += 3       (对的,因为底层机制)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值