常量的概述和使用
什么是常量
在程序执行的过程中其值不可以发生改变。
Java中常量的分类
- 字面值常量
- 自定义常量
字面值常量的分类
class Demo1_Constant { |
进制运算
不同进制数据的表现形式
二进制:由0,1组成。以0b(b可以大写也可以小写)开头。(JDK1.7版本以后可以表示二进制)
八进制:由0,1-7组成。以0开头。
十进制:由0,1-9组成。整数默认是十进制的。
十六进制:由0,1-9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
class Demo1_Scale { |
任意进制到十进制的转换
系数 * 基数的权次幂相加即可。
任意(十)进制12345转换为十进制:
12345 = 10000 + 2000 + 300 + 40 + 5 |
系数:就是每一位上的数据。
基数:X进制,基数就是X。
权:在右边,从0开始编号,对应位上的编号即为该位的权。
十进制到任意进制的转换
除积倒取余数。
十进制12345转换为任意(十)进制:
12345 ÷ 10 = 1234 ...... 5 |
快速的进制转换法
8421码
8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。
在这种编码方式中,每一位二进制代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
通过8421码的方式进行二进制到十进制的转换
二进制11001100转换为十进制:
1 1 1 1 1 1 1 1 |
二进制到八进制的简易方式
二进制111100转换为八进制:
111 100 |
二进制到十六进制的简易方式
二进制111100转换为十六进制:
11 1100 |
任意进制到二进制的简易方式
十进制60快速转换法转换为二进制:
1 1 1 1 1 1 1 1 |
原码反码补码
原码:二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
注意:
- 运算通常以补码的形式进行计算,如+7加-7。
- 反码的作用是,通过反码求出补码。
数据类型的分类和概述
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.408E38 |
double | 八个字节 | -1.798E308到1.798E308 |
字符型
数据类型 | 占用空间 | 取值范围 |
---|---|---|
char | 两个字节 | 0到65535 |
布尔型
数据类型 | 占用空间 | 取值范围 |
---|---|---|
boolean | Java中没有明确指定大小 |
定义不同数据类型的变量
class Demo1_DataType { |
注意:
- 整数默认的数据类型是int类型。
- 如果long类型后面加L进行标识,最好加大L。
- 小数默认的数据类型是double类型。
数据类型转换
隐式转换
int x = 3; |
强制转换
int x = 3; |
强制转换超出范围
byte b = (byte)(126 + 4); //超出范围,强制转换得到的可能不是想要的结果 |
变量相加和常量相加的区别
//面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由 |
long与float的取值范围
进行混合运算的时候,byte、short、char不会相互转换,都会自动提升为int类型。其他类型进行混合运算,都是小的数据类型提升为大的。byte、short、char -> int -> long -> float -> double。
float f = 12.3f; |
算数运算符
%运算符
- 当左边的绝对值小于右边绝对值时,结果是左边。
- 当左边的绝对值等于右边或是右边的倍数时,结果是0。
- 当左边的绝对值大于右边绝对值时,结果是余数。
- %运算符结果的符号只和左边有关系,与右边无关。
- 任何一个正整数%2结果不是0就是1,可以用来当作切换条件。
++和--
b++相当于b = b + 1,为什么b++不会报错而b = b + 1会报错呢?
byte b = 10; |
原因:++是运算符,需要返回一个结果。所以b++的底层操作会加一个强制转换,即b = (byte)(b + 1)。
赋值运算符
short s = 1; |