chapter3
为什么需要变量
变量三要素 (类型 名称 值)
int a = 1; // 定义一个变量,类型 int 名称 a,值 1
变量的基本原理:
计算机->人 内存->大脑
变化的值
声明 赋值 int a; a = 60;
也可以一步到位
变量使用注意事项
- 表示内存中的存储区域(不同的变量,类型不同,占用的空间大小不同)比如int 4个字节,double 8个字节。
- 该区域有自己的名称和数据类型
- 先声明后使用
- 变量在同一类型中变化
- 变量在同一个作用域不能重名
- 变量三要素
程序中 +号的使用
- 左右是数值,加法运算
- 一方是字符串,做拼接运算
运算从左到右
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6E8GgUUX-1652493284119)(image-20220410131141590.png)]
数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mr4i5mvu-1652493284122)(image-20220410131502482.png)]
java数据类型分为两种,基本数据类型和引用数据类型
整数类型
byte n1 = 10; n1 –> `10` 空间大小为 1 字节
short n2 = 10; n2 –> `10` 空间大小为 2 字节
int n3 = 10; n3 --> 10 空间大小为 4 字节
long n4 ...... 8
使用细节
- Java 有固定的范围和字段,不受操作系统的影响
- Java 的整形常量默认为int型,声明long后面需要加上“L”
- java 常声明为 int ,只要够用,不要声明为 long
- bit 是最小的存储单位 byte 3 和 short 3
byte 3;
0000 0011
short 3;
0000 0000 0000 0011
浮点类型
类型 | 占用空间 | 范围 |
---|---|---|
float | 4字节 | … |
double | 8字节 | … |
- 浮点数=符号位+指数位+尾数位
- 浮点数全都是近似
使用细节
-
不受os影响
-
Java 浮点型常量为double型,如果要声明为float,后面要加上F
-
浮点型变量有两种表示形式
十进制 1.1 .23(小数点要保存)
科学计数法 5.12e2, 5.12E-2
-
通常推荐使用double类型,因为比float更加精确
-
浮点数使用陷阱 2.7 8.1/3 计算机存储数据时有精度损失,当我们对运算结果是小数的进行相等判断的时候要小心,直接赋值得到的相等,就一定是相等
Java API 使用
-
API
-
Java 类的组织形式[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ixryDlww-1652493284123)(image-20220410140324773.png)]
-
举例说明如何使用 ArrayList 有哪些类
包->类->方法
直接搜索
字符类型
- 基本介绍:表示单个字符,字符类型是char,两个字节,可以放汉字,多字符用String
- 案例 ctrl+shift+D 复制到下一行 快捷键 删除当前行的快捷键 ctrl+shift+k
字符类型细节
- 字符常量用‘’括起来,不能用双引号括起来
- Java中允许使用转义字符
- 在java中,char的本质是一个整数,输出时,是unicode编码 类型转换用(int) 而不是 int()
- 可以给char赋整数,会输出字符,char可以参加运算,相当于一个整数
- 字符类型本质讨论
- 字符型存储到计算机中,需要找到对应的码值找出来,存储二进制
- 字符和码值的对应关系是通过字符表码表决定好的
- 字符编码表 [sublime 测试]
- ASCII 一个字节表示 128个字符,只用了非负数,美国制定的一套编码规则,对英语字符与二进制之间的关系,做了统一制定,被称为ASCII码
- unicode 编码 字母和汉字统一都是占用两个字节,但是非常浪费空间,使用unicode不会出现乱码问题
- utf-8 在unicode 上优化,字母使用1个字节,汉字使用3个字节。可以使用1-6个字节表示一个符号
- gbk 字母用一个字节 汉字两个字节
- gb2312 < gbk
- big5 可以存储繁体字
- 字符编码表 [sublime 测试]
布尔类型
- 基本介绍
- boolean类型,只有true和false
- 占一个字节
- 逻辑运算
- 使用细节
- 不可以用0或非0代替true或者false
基本数据类型转化
-
自动类型转换
- 当进行赋值或者运算的时候,精度小的类型自动转换成精度大的数据类型,这就是自动类型转换。低精度向高精度转换不会出现问题[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bvWJd17f-1652493284126)(image-20220410144924287.png)]
-
自动类型转换注意和细节
- 有多种类型混合运算时,会将所有先转换成容量最大的数据类型
- 把精度大的赋值给进度小的数据类型的时候,就会报错
- (byte, short) 和 char 不会相互转换
- byte,short, char三者可以计算,计算时首先转换为int类型(相同类型计算也会变成int)
- boolean 不参与转换
- 自动提升原则
-
强制数据转换
- 细节
- 从大精度到小精度
- 强制类型转换只对最近的有效,小括号提升优先级
- char类型可以保存int的常量值,但是不能保存int的变量值
- byte和short在运算的时候,当作int类型处理
- 细节
-
基本数据类型和String类型的转换
- 基本类型变String “” + 基本数据类型
- String转基本数据类型 调用parseXX方法就可以了
- 确保字符串能够转换,例如转成一个整数
- 异常处理
- 字符串转成字符 含义时取出字符串的第一个字符 charAt() 方法
-
Homework
- 加号后面可以换行
本章小结
- 为什么需要变量
- 三要素
- 简单示意图
- 变量的介绍
- 使用的基本步骤
- 快速入门
- 变量使用的注意事项
- 空间大小
- 区域名称
- 先声明后使用
- 数据的值可以在一个范围内变化
- 变量在同一个作用域不能重名
- 程序中加号的使用
- 两边都是数
- 有一边是字符串
- 数据类型
- 基本数据类型 8 大
- 引用数据类型
- API使用
- 如何管理JDK中的类
- char
- 字符编码
- 布尔数据类型
- 基本数据类型转换
- 自动类型转换
- 强制类型转换 注意精度降低或者溢出
- 强转细节
- 基本数据类型和String类型的转换
- “” + 基本数据类型
- parseXX
- 确保能转换
- 基本数据类型转换