常量
- 定义:常量就是在程序的执行过程中其值不发生改变的量。其中分为字面值常量和自定义常量。
字面值常量:有六种
1. 字符串常量
2. 整数常量
3. 小数常量
4. 字符常量
5. 布尔常量
6. 空常量
其中布尔常量只有true和false,空常量为null,字符串常量需要用双引号括起来,字符常量用单引号括起来,整数常量的表现形式有四种(二进制,八进制 ,十进制,十六进制)。
进制
- 定义:人为规定的一种进位方法,任何一种进制,例如X进制,其表现形式为逢X进1。
- 常用的进制有二进制,八进制,十进制和十六进制。
- 不同进制的表现形式
1. 二进制:由0和1组成 以0b开头
2. 八进制:由0~7组成 以0开头
3. 十进制:由0~9组成, 整数默认为十进制
4. 十六进制:由0~9及字母a ~f 组成(字母大小写均可),以0x开头
进制转换
- 任意进制转换成十进制
利用位权展开法进行转换。 - 十进制转换成任意进制
除基取余,只到商为零,余数取反。 - 二进制转换成八进制,十六进制
二进制到八进制:从小数点开始每三位转换成十进制数,不足的补零。
例:10011
可以分为10 011 第一个补零则为 010 011 ,然后将两部分转换成十进制数则为23 - 二进制到十六进制:从小数点开始每四位转换成十进制数,不足的补零。
例: 11011
可以分为两部分1 1011 第一项补零则为0001 1011,然后转换成十进制数 第一项为1 第二项为11,因为十六进制当中10~15 ,用a ~f 来代替,故转换后的结果为: 1b - 八进制和十六进制转换成二进制
利用二进制转换成八进制和十六进制反推便可。
原码反码补码
原码用二进制数表示,用0表示正数,用1表示负数,符号位在二进制数的最高位。其余的用来表示值得大小。
- 正数的原码反码补码相同
- 负数的反码是除符号外每一位取反
- 负数的补码是在其反码末尾加上1
变量
- 定义:在程序执行的过程中,在某个范围内其值可以发生改变的量。
在对变量定义后在可以存放同一类型的常量并重复使用。 - 变量的定义格式
数据类型 变量名 = 变量值
数据类型
-
基本数据类型和引用数据类型
基本数据类型分为三种- 数值型
- 字符型
- 布尔型
其中 数值型分为整数型和浮点型。整数默认是int类型的 , 浮点数默认是 double类型。
整数型
byte 、1(8bit) 、 -128 ~ 127
short 、 2(16bit) 、 -2^15 ~ 2^15 - 1
int 、4(32bit) 、 -2^31 ~ 2^31 - 1
long 、 8(64bit) 、 -2^63 ~ 2^63 - 1
浮点数
float 、 4(32bit) 、 -3.40310^38 ~ 3.40310^38
double 、 8(64bit) 、-1.79810^308 ~ 1.79810^308
(1byte为什么是-128~+127?
因为1byte用8位二进制表示,其中最高位是符号位,其中1 0000000表示-0 无意义,故定义其为-128)
数据类型的转换
- 隐式转换
boolean类型不能转换为其他的数据类型
byte,short,char之间不转换,他们参与运算首先转换为int类型 - 强制转换
格式:目标数据类型 变量名=(目标数据类型)(被转换的数据);
(尽量不要强制类型转换,可能会有精度损失。)
变量相加与常量相加的区别
例 哪句成员有问题
byte b1 = 3;/第一句
byte b2 = 4;/第二句
byte b3 = b1 + b2;/第三句
byte b4 = 3 + 4;/第四句
解: 第三句有问题 ,因为b1,b2已经是变量 存在数据类型,若相加则可能造成精度损失。
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。所以,Java中的字符可以存储一个中文汉字
字符和字符串参与运算
当加号两边任意一个为字符串时,则会将两边连接起来。
例 System.out.println(“hello” + ‘a’ + 1);
System.out.println(‘a’ + 1 + “hello”);
输出结果分别为:
helloa1
98hello