java学习--进制,存储,原反补。

一,进制

十进制:由0~9的数字组成,遵循锋十进一。

二进制:由0,1组成,遵循逢二进一。

八进制:(很少使用)由0~7组成,逢八进一。

十六进制: (程序中还是会使用的)由0~9,A~F,组成,遵循逢十六进一。

 十进制转二进制,除2倒取余(余数)

二进制小数转换十进制 乘二取整

二进制转十进制,由1的二进制位权 累加起来

平时的话 计算机中由程序员模式 可以快速转换

二,Java程序中表示莫格数字的进制

~十进制:正常表示

~二进制:在数字的前面加0B或0b

~八进制:在数字的签名加0

十六进制:在数字的前面加0X或0x

三,计算机的存储单位

计算机中最小的存储单位是bit(比特),一个比特是1个二进制位,只能表示0或1。

计算机最基本的存储单位是byte(字节),一个字节是8位。

如果不考虑符号位的问题(不考虑正负数的问题):0~255。

四,符号位以及原码反码补码问题

数字有正负数。在计算机中如何表示一个数字是正数还是负数?

规定这个数的二进制的最高位是符号位,符号位为0是正,符号位为1是负数。

最左边==最高位

1001 1001  == -25

0001 1001 == +25

~正数的:原码反码补码 没有区别,都一样

  • 原码:例如:25的原码00011001

  • 反码:例如:25的反码00011001

  • 补码:例如:25的补码00011001

~负数:例如-25

        原码:把负数的绝对值的十进制转换为二进制后,最高位设置为1,-25的原码

                1001 1001

        反码:在原码的基础上,符号位不变,其余位取反,0变1,1变0,-25的反码

                1110 0110

        补码:早反码的基础上加1,

                1110 0111

四,整数存储

各种整数占用内存宽度

byte :1个字节

short : 2个字节

int : 4个字节

long :8个字节

1个字节可以表示的整数值范围是:-128 ~127

五,char类型的存储

在Java中,若有的JVM都给char类型分配两个字节。而且char类型的2个字节不考虑符号位,全部都是正数。那么2个字节可以表示的范围是0~65535,也就是说,Java中一共可以表示65535个字符。这些字符被搜集在一个Unicde字符集中,每个字符对应一个整数值,这个整数值被称为字符编码。

最早的时候,计算机只能表示128个字符,这些字符搜集在ASCLL码表中,Unicde字符集包含ASCLL表。

常用的字符编码值:

 在程序中表示一个字符

字符本身表示,列如:char aChar = 'a';(最常用)

十进制编码值表示,列如: char aLetter = 97;

十六进制编码值表示,要求\u开头,后面4位十六进制值,列如:char aCode =  '\uoo61';(很少用)

部分特殊字符需要用到第四种方式,转义字符

\ n:换行

\b:退格(Backspce)

\r:回车,结束本行,光标回到首行

\t:tab

\ \:表示斜杠本身

\':表示单引号

\":表示双引号

六,小数存储类型

float 类型>long 类型

float类型和double类型是浮点型,不精确。

应为十进制转二进制,很可能出现截断等情况,二进制可能需要补位等。

double类型除了数据范围比float类型大,精度也比float类型大,即可以表示到小数点后面的位数比float类型多。float类型大约精度是7-8位,double类型大约精度是15-16位

七,Boolean类型的存储

Boolean 类型的值只有两种:true 和 false,虽然Java在程序中不能给Boolean类型的变量赋其他值,但在底层true个false却使用正数表示的。1表示true 0表示false。

Boolean的变量只需要分配1位(1个bit位)就够了。

八,八种数据类型的大小比较顺序

                         < char

byte (1个字节) < short(2个字节)int(4个字节)  < long(8个字节) < float (4个字节)< double(8个字节)

boolean(不参与比较)

九,数据类型的转换问题

自动类型转换

1.当把存储范围小的(占用内存少的)赋值给存储范围大的(占用内存多的)变量时,就可以自动类型提升。

2.当多种数据类型的值在一起混合运算时,它们最终的结果会自动提升为他们中最大的。

3.当byte与byte,short与short,char与char,或者他们3个之间的运算,他们的结果会自动升级位int。(特殊)

4.boolean不参与他们的转换

强制类型转换

~当把存储范围大的(占用内存多的)赋值给存储范围大小(占用内存少的 )变量时,就必须强制类型转换。

注意:强制类型转换可能会出现溢出或损失值,精度。

十,字符串的拼接

在Java中把字符串特殊化了,给字符串提供了一个运算符“+”,作用是拼接。

所有类型的值,一旦与字符串进行“+”,结果就都变成了 字符串。

十一,算术运算符

1.+

·拼接:只要+左右两边又一边出现字符串,就是拼接,结果也是字符串。

·求和:当+左右两边不是字符串的时候,就是求和,稍稍主要的时Byte+Byte,short+short,char+char的类型都是提升问题。

·表示正号:当+作为一元运算符(又称单目运算符)

2,-

~相减

~表示负数:当-作为一元运算符

3,/

·整数/整数,结果仍然是整数,去掉小数部分

·整数。整数,除数不为0,报错算数异常

·小数相除,除数为0 不会报错,得到结果Infinity

·区别:转移是\除法是/,不要看错

负负得正 

4,*

*代表除法,没什么特别的。

 5,%

取余,又称取模。

遵循余数的正负号 与被除数保持一致。

6,++

++称为自增,自增是一元运算符,需要说明谁来自增,需要一个变量。列如:a++,或++a。

如果自增运算是独立的运算,即自增表达式独立成一个语句,那么自增在前在后都一样,自增变量+1.

如果自增运算只能算作语句的一部分时,那么++在前和在后是不同的

~++在前,需要先对自增变量加1 ,然后取自增变量的值参与其他运算

~++在后,先去自增变量的值,先放一边,然后对自增变量加1。

7,--

同理++

十二,比较运算符和关系运算符

 逻辑与:&

true & true 才 为 true

其他为 false

短路与:&&

同上但当&&的左边为false时,右边就不看了,直接结果是false

逻辑或 |

false | false 为 false

其他为True

断路或 ||

有true为true,FF为false。
当||的左边为true时,右边就不看了,直接结果是true。

逻辑异或:^

TF为true,其余都是false。

十三,条件运算符

Java中条件运算符只有1个,又被称为三元运算符。
因为它需要三个表达式或3个值,才能组成一个条件运算符表达式。
    
条件表达式 ? 结果表达式1 : 结果表达式2
        
当条件表达式的结果为true时,整个表达式取 结果表达式1 的值,否则就取 结果表达式2 的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值