JAVA基础复习二-常量、进制和数据类型

一、常量的概述和使用

* 1:什么是常量
* 在程序执行的过程中其值不可以发生改变 
* 2:Java中常量的分类
* 字面值常量
* 自定义常量
* 3:字面值常量的分类
* 字符串常量 用双引号括起来的内容
* 整数常量 所有整数
* 小数常量 所有小数
* 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
* 布尔常量 较为特殊,只有true和false
* 空常量     null

二、十进制、二进制、八进制和十六进制

1.十进制是因为人有十根手指头发展而来;
2.二进制是计算机能是别的,莱布尼兹先使用;
3.八进制用3个二进制表示,十六进制用4个二进制表示;
4.八进制和十六进制是因为二进制太长了想缩短一些而发明的进制方式。
5.一个二进制表示一个bit(0或1)
1byte = 8bit;即一个byte用8个二进制表示,一个byte即一个字节
1kb = 1024byte;
1mb = 1024kb...

6.不同进制数据的表现形式
* A:二进制的数据表现形式
* 由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)
* B:八进制的数据表现形式
* 由0,1,…7组成。以0开头
* C:十进制的数据表现形式
* 由0,1,…9组成。整数默认是十进制的 
* D:十六进制的数据表现形式
* 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 

如 0b100 = 4;  1*2^2 + 0*2^1 + 0*2^0 = 4;
    0100 = 64; 1*8^2 + 0*8^1 + 0*8^0 =64;
    100 = 100; 1*10^2 + 0*10^1 + 0*10^0 = 100;
    0x100 = 256;  1*16^2 + 0*16^1 + 0*16^0 =256;

即前面的开头(0b)决定后面数字的基数(2),后面每一位上的数字是系数(1),这个数字从右往左数的位数作为基数的幂(3)。从而获得转换为十进制的结果。
练习: 
    0b1001 = 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 8 + 0 + 0 + 1 = 9;
    02773 = 2*8^3 + 7*8^2 + 7*8^1 + 3*8^0 = 1024 + 448 + 56 + 3 = 1531;
    12345 = 1*10^4 + 2*10^3 + 3*10^2 + 4*10^1 + 5*10^0 = 10000 + 2000 + 300 + 40 + 5 = 1531;
    0xfa69e = 15*16^4 + 10*16^3 + 6*16^2 + 9*16^1 + 14*16^0 = 983040 + 40960 + 1536 + 144 + 14 = 1025694;

总结起来就是:
任意进制到十进制的转换原理
* 系数:就是每一位上的数据。
* 基数:X进制,基数就是X。
* 权:在右边,从0开始编号,对应位上的编号即为该位的权。
* 结果:把系数*基数的权次幂相加即可。 

十进制到任意进制的转换原理
* 除积倒取余 
即10进制转2进制就除以2,倒取余数。。。。。
10进制转8进制就除以8,倒取余数。。。。。

二进制转八进制,把三个二进制放在一起,然后用8421码转就可以了,如110 001 = 61
同理,二进制转16进制,把4个二进制放在,如111011 = 0011 1011 = 3b

三、原码反码补码

* 原码
* 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
* 通过一个字节,也就是8个二进制位表示+7和-7
* 0(符号位) 0000111
* 1(符号位) 0000111
* 反码
* 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
* 补码
* 正数的补码与其原码相同;负数的补码是在其反码的末位加1。 (计算机都是通过补码来进行运算,用原码运算得不出正确答案)。

一个byte即8个二进制最多表示-128 到+127这么多数字。

四、JAVA中的数据类型

Java中数据类型的分类
* 基本数据类型
* 引用数据类型 
基本数据类型分类(4类8种) 
* 整数型
* byte 即一个字节  -128到127
* short 占两个字  -2^15~2^15-1
* int 占四个字节 -2^31~2^31-1
* long 占八个字节 -2^63~2^63-1
* 浮点型
* float 占两个字节 -3.403E38~3.403E38
* double 占四个字节-1.798E308~1.798E308
* 字符型
* char 占两个字节 0~65535
* 布尔型
* boolean   
* boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小。

整数默认类型是int,小数默认类型是double,所以如果是long类型的整数,后面加L区分,如254L;如果是float类型的小数,后面加F区分,如12.3F

Java中的默认转换规则
* 取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算 ()如 byte + int 结果为int(隐式转换)

强制转换:大的加小的要求结果为小的,则需要对大的进行强转
如 byte x = 1; int y = 2;
x = x + (byte)y ;这里就需要对大的int类型的y进行强转。

隐式转换和强制转换,可以通过将大小数据类型转换为二进制之后,进行原理分析。隐式转换是将小的前面补0变成大的,
强制转换是将大的去掉前面变成小的(所以如果大的值不属于小的,强制转换就会出错)。
java编译器有常量优化机制,在编译时可以直接判断常量的值。而对于变量,编译时不知道值,运行时才知道。

char数据类型
A:char c = 97; 0到65535
B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
* 可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节
* 所以,Java中的字符可以存储一个中文汉字
char数据类型其实也是整数类型,只是比较特殊,第一它没有负数,第二在取值范围内,根据不同的码表,
不同的值都有不同的代表的含义。这大概就是它不一样的地方。

五、运算符

%运算符
* 当左边的绝对值小于右边绝对值时,结果是左边
* 当左边的绝对值等于右边或是右边的倍数时,结果是0
* 当左边的绝对值大于右边绝对值时,结果是余数
* %运算符结果的符号只和左边有关系,与右边无关
* 任何一个正整数%2结果不是0就是1可以用来当作切换条件 

++,--运算符的作用
* 自加(++)自减(--)运算
* ++:自加。对原有的数据进行+1
* --:自减。对原有的数据进行-1

* a:单独使用:
* 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
* b:参与运算使用:
* 放在操作数的前面,先自增或者自减,然后再参与运算。
* 放在操作数的后面,先参与运算,再自增或者自减。

赋值运算符有哪些
* a:基本的赋值运算符:=
* 把=右边的数据赋值给左边。

* b:扩展的赋值运算符:+=,-=,*=,/=,%=
* += 把左边和右边做加法,然后赋值给左边。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值