(1)变量和注释
(2)数据类型
1.变量和注释(重点)
如:
xiaomage 18 ...
1.1 变量的基本概念
当需要在程序中记录单个数据内容时,则需要声明一个变量,变量本质上就是内存空间中的一块存储单元用于存储数据内容,由于该内容可以发生改变,因此得名为"变量"。
由于存储的数据内容大小不同导致所需存储单元的容量不同,在Java语言中使用数据类型加以描述,为了便于下次访问则需要指定一个名字,叫做变量名。
1.2 变量的声明方式
数据类型 变量名 = 初始值; - 其中=初始值可以省略,但分号不可以省略
如:
int age = 18; - 推荐该方式
int age;
1.3 标识符(变量名)的命名规则(笔试题)
(1)必须由字母、数字、下划线以及美元$组成,其中数字不能开头。
如:age、name、size、age2、name2、nianling、taobao等
(2)不能与Java语言中的关键字同名,所谓关键字就是Java语言中用于表示特殊含义的单词
如:int、public、static、class、void等
(3)区分大小写,长度没有限制但不宜过长。
如:name、Name、nAme代表不同的标识符,不推荐使用
(4)尽量做到见名知意,支持中文但不推荐使用。
如:year、name、age、time、hour、minute
1.4 注释
// - 单行注释,从//开始一直到本行末尾都是注释。
/**/ - 多行注释,从/*到*/之间的内容都是注释,但不允许嵌套。
2.数据类型
2.1 基本分类
在Java语言中将数据类型分为以下两大类:
(1)基本数据类型(记住 8个)
byte、short、int、long、float、double、boolean、char
1 2 4 8 4 8 1 2
(2)引用数据类型(了解)
数组、类、接口、枚举、标注
2.2 常见的进制
在日常生活中采用十进制进行数据的描述,逢十进一,权重:10^0、10^1、10^2、...
在计算机底层采用二进制进行数据的描述,逢二进一,权重:2^0、2^1、2^2、...
通常采用二进制的最高位(最左边)代表符号位,0代表非负数,1代表负数。
如:
10^2 10^1 10^0
百 十 个
1 2 3
2.3 进制之间的转换(尽量掌握)
(1)正十进制转换为二进制的方式
a.除二取余法,让十进制整数不断地除以2取出余数,直到商为0时将余数逆序排列。
b.拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重则下面写1否则写0。
如:
45 = 32 + 8 + 4 + 1
128 64 32 16 8 4 2 1
0 0 1 0 1 1 0 1 => 0010 1101
(2)正二进制转换为十进制的方式
a.加权法,让二进制的每个数字乘以当前位的权重,然后再累加起来。
如:
0010 1101 => 0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0
=> 0 + 0 + 32 + 0 + 8 + 4 + 0 + 1
=> 45
练习:
将十进制80和66拆分为二进制:0101 0000 和 0100 0010
将二进制0101 0011和0010 1101转换为十进制:83 和 45
(3)负十进制转换二进制的方式
a.先将十进制的绝对值转换为二进制,然后进行按位取反再加1.
如:
-45 => 将绝对值转为二进制:0010 1101
=> 进行按位取反: 1101 0010
=> 再加1: 1101 0011
-45 + 45 = 0
-45:1101 0011
45:0010 1101 +
-------------------------
1 0000 0000 (假设只能存储8位二进制,此时最高位1会被丢弃,溢出)
扩展:
有余力的同学课下查询原码、反码以及补码的概念。
(4)负二进制转换为十进制的方式
a.先减1再按位取反,然后转换为十进制整数后添加负号.
如:
1101 0011 => 先减1: 1101 0010
=> 按位取反: 0010 1101
=> 转为十进制:45
=> 添加负号: -45
练习:
将整数58、-58、82、-82转换为二进制:
将二进制0010 1101和0111 1101转换为整数(正):
将二进制1010 1101和1101 0011转换为整数(负):
解析:
58 => 0011 1010 -58 => 1100 0110
82 => 0101 0010 -82 => 1010 1110
0010 1101 => 45 0111 1101 => 125
1010 1101 => -83 1101 0011 => -45
2.4 单个字节表示的整数范围(重中之重)
在计算机中单个字节表示8位二进制位,其中最高位代表符号位,因此表示整数范围如下:
非负数:0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
0111 1111 => 0*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
=> 0 + 64 + 32 + 16 + 8 + 4 + 2 + 1
=> 127
负数:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
1000 0000 => 先减1: 0111 1111
=> 按位取反: 1000 0000
=> 转为十进制:128
=> 添加负号: -128
1111 1111 => 先减1: 1111 1110
=> 按位取反: 0000 0001
=> 转为十进制:1
=> 添加负号: -1
综上所述:
单个字节所能表示的整数范围是:-128 ~ 127,也就是-2^7 ~ 2^7-1.
2.5 整数类型
在Java语言中用于描述整数数据的类型有:byte、short、int、long,推荐使用int类型。
其中byte类型在内存空间中占1个字节的大小,表示范围是:-128 ~ 127.
-2^7 ~ 2^7-1.
其中short类型在内存空间中占2个字节的大小,表示范围是:-32768 ~ 32767.
-2^15 ~ 2^15-1.
其中int类型在内存空间中占4个字节的大小,表示范围是: 正负二十一亿之间。
-2^31 ~ 2^31-1.
其中long类型在内存空间中占8个字节的大小,表示范围是:比int类型还大的数.
-2^63 ~ 2^63-1.
在Java程序中若出现直接写出的整数数据叫做 直接量/字面值/常量,如:66,直接量默认为int类型,若希望表达更大的直接量则需要在直接量的后面加l或者L,来表示long类型的直接量,推荐使用L。
扩展:
由于long类型存储的数值范围依然有限,若希望描述更大的数据则使用java.math.BigInteger类型加以描述。
2.6 浮点类型
在Java语言中用于描述小数数据的类型有:float和double,推荐使用double类型。
其中float类型在内存空间中占4个字节,叫做单精度浮点数,通常小数点后有效到7位。
其中double类型在内存空间中占8个字节,叫做双精度浮点数,通常小数点后有效到15位。
在Java程序中若出现直接写出的小数数据叫做 直接量/字面值/常量,如:3.14,直接量默认为double类型,若希望表达float类型的直接量则需要在后面加上f或者F。
扩展:
由于double类型的数据在运算时可能会有误差,若希望实现精确的运算则使用java.math.BigDecimal类型加以描述。
有余力的同学课下查询float类型和double类型的底层二进制结构。