个人java学习笔记0.1

java学习笔记

java中的数据类型

可分为两大类:基本数据类型、引用数据类型

基本数据类型:byte、short、int、long、float、double、char、Boolean

引用数据类型:数组、类、接口…

ps:计算机最小的单位是byte(字节),一个字节是八个二进制位。
计算机中只存在0和1(也就是计算机只认识二进制,别问为什么,哈哈),一位可以表示0或者1。
既然一个字节=八位,一位只能以0或1的形式表示,那么我们这一个字节就可以表示28=256中可能性,也就是可以存256个数字,那么按照什么规则来存呢,按二进制的规则来存(逢二进一),故一个字节也就是八位最大的表数是11111111,但什么定义最小的数咋办呢,00000000就是最小的了?老一辈一想这不行啊,得表示负数,那么就认为规定了及首位(第一位)是用来判别正负的,0表示正数,1表示负数。
那就这么一想岂不是最大为01111111,最小为11111111,有些资料可能说+0和-0然后开始讲补码balabala…可我觉得0和-0这也没啥,哈哈。
问题在哪,按之前的逻辑,-1对应的编码10000001,+1对应的编码00000001,这两哥们一加,居然是10000010,居然不是0,这可出问题了,也就是说不能简单地定义个1表示负0表示正了。
咋办呢,好办,我们用0减一个二进制数得到这个数的相反数看看,0-2(00000010)=11111110,也就是说2(00000010)的相反数是-2(11111110),0-2=-2这是个小学数学的问题,那10000000的相反数呢,用0减发现还是10000000,在这个8位的空间里表示10000000没有对应的正(负)数了,咋整呢,巧了00000000也没有对应的。

我们就人为规定了10000000是-128,那这就好办了,256个数字就可以排好了,-128~127之间(包含0),所有的数字都有对应的编码了。(这鸟东西就叫补码:为了保证两个二进制之和为0)
但为什么补码是按位取反再加一呢?(不想研究的直接记-128=10000000,然后直接0-得到相反数)
这里介绍下原码和反码的概念:

原码:就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值
[+1]原 = 0000 0001
[-1]原 = 1000 0001

反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反

0-一个数的补码=其相反数的补码
(11111111+00000001)- 一个数的补码=其相反数的补码
(11111111-一个数的补码)+00000001 = 其相反数的补码
11111111- 一个数的补码=这个数的反码
即 反码+00000001=补码

ps的有点多了,哈哈实际用处不大,纯粹为了探讨下~
##byte-1字节、short-2字节、int-4字节、long-8字节、char-2字节、Boolean-1位

数据类型转换

Tips:分为隐式(自动)类型和强制类型转化

隐式(自动)类型:一般出现在小的数据类型赋值给大的数据类型

byte a = 2;
int i = a;  //隐式类型转换
double d = 100;   //隐式数据转换,将int转成double,(java中整数默认值为int型)

byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;//错误: 不兼容的类型: 从int转换到byte可能会有损失
byte bb = 10+20;  //结果是30,相当于byte = 30,编译器根本看不到10+20;
byte b4 = b1 + 5;
System.out.println(b4);//错误: 不兼容的类型: 从int转换到byte可能会有损失

强制类型转化:

/*强制数据类型转换:要求是大的给小的数据类型赋值
				如果必须使用强制类型转换,那么就需要满足转换的格式:
					小的数据类型 变量名 = (小的数据类型)大的数据;
			注意:强制类型转换容易损失数据(精度),使用需谨慎。*/
			
int a = (int)4.2;  
//发生强转,double-->>int   丢弃小数位(丢失精度、不是四舍五入的规则)
Tips:+=、*=、++这两类都隐含着强制类型转换
PS:第一次写博客,记录下自己的学习过程,也便于日后复习,恳请大家积极指正,加油!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值