【第一阶段:java基础】第2章:java变量
本系列博客是韩顺平老师java基础课的课程笔记
韩顺平P34-P61
- 1. 变量介绍
- 2. 变量使用细节
- 3. +号的使用
- 4. 数据类型⭐
- 基本数据类型
- 数值型
- 字符型
- 布尔型
- 引用数据类型
- 5. java api 文档
- 6. 常用编码
- 7. 数据类型转换
- 自动类型转换
- 强制类型转换
- 基本数据类型和String类型的转换
1. 变量介绍
- 变量是程序的基本组成单位
- 变量相当于内存中的一个数据存储空间
- 变量的基本要素是:类型,名称,值
2. 变量使用细节
- 变量有不同的类型,每一种类型占用空间大小不同(int:4 double:8)
- 变量必须先声明后使用
- 在区域内,同一个变量在同一类型的值可以不断变化
- 变量在同一个作用域内不能重名
3. +号的使用
- 当左右两边是数值型时,做加法运算
- 当左右两边有一方是字符串时,做拼接运算
- 运算顺序从左到右:例如:“hello”+98+2=hello982
4. 数据类型⭐
基本数据类型
数值型
整数型:
- 1️⃣byte:1字节:当把一个数值复制给byte时,会先判断是否再范围之内(-128~127 ),当把一个变量复制给byte时,会先判断类型
- 2️⃣short:2字节
- 3️⃣int:4字节,默认类型
- 4️⃣long:8字节,声明long型常量必须后加l或者L: long n=4L;
浮点型:
- 5️⃣ float: 4字节,声明float型常量必须后加f或者F: float=0.4F;
- 6️⃣ double: 8字节,默认类型
- 浮点类型的数据有两种表示形式:
- 十进制:0.512=.512
- 科学记数法:5.12e2=512.0 5.12e-2=0.512
- 浮点数使用陷阱💥
- 8.1 / 3 不等于2.7 而是等于2.69999999997 (因为机器以为8.1后面可能是8.100000001)
- 因此,判断两个小数是否相等时,要格外小心,不能直接==,而应该以两个数的差值的绝对值,在某个精读范围内来判断
- 如果是查询得到的小数,或者是直接赋值得到的小数,是可以用==判断的
字符型
7️⃣ char:2字节,存放单个字符
- 字符类型可以直接存放一个数字,会输出数字对应的ascll码字符
- 字符常量只能用单引号,双引号表示的是字符串
- char可以接收转义字符
- char的本质是一个整数,在输出时,是Unicode码对应的字符
- char类型是可以进行运算的(转成其对应的整数再进行运算)
布尔型
8️⃣ boolean:1字节,存放ture/false
- 和c语言不同的是,不可以用0或者非0的整数替代false/true
- 只能是true/false,不可以是null
引用数据类型
- 类(class)
- 接口(interface)
- 数组([ ])
这一部分在后续的课程中会逐个介绍
5. java api 文档
api:应用程序编程接口,java类的组织形式如下图所示:
如何使用java文档(以ArrayList为例)
- 方法一:按照包->类->方法
- 方法二:直接索引
6. 常用编码
- ASCLL: 每个字符由一个字节表示,共128个字符(实际上1个字节可以表示256个字符,但是ASCLL只用了128个),缺点是无法表示所有的字符(比如说中文字符)
- Unicode: 固定大小的编码,字母和汉字同一都是占用两个字符(不会有乱码的问题,但是这样会浪费空间)Unicode 编码兼容ascll码
- utf-8: 大小可变的编码,字母用1个字节表示,汉字用3个字节表示
- GBK: 可以表示汉字,而且范围广,字符用1字节,汉字用2字节
- GB2312: 可以表示汉字,gb2312<gbk
- Big5: 可以存放繁体的中文(台湾,香港)
7. 数据类型转换
自动类型转换
-
精度小的类型自动转化为精度大的类型,数据类型按精度(容量)大小排序如下图所示:
-
细节:
-
- 当有多种类型的数据混合运算时,系统首先自动将所有的数据转换为容量最大的那种数据类型,然后再进行计算
-
- 当把精度大的数据赋值给精度小的数据时会报错
-
- byte , short 和 char 之间不会互相自动转换
- byte , short 和 char 之间不会互相自动转换
-
- byte, short, char 他们三者可以计算,在计算时会首先转换成int类型
- byte, short, char 他们三者可以计算,在计算时会首先转换成int类型
-
- boolean 类型不参与自动转换
-
- 自动提升原则:表达式的结果自动提升为操作数中精度最大的类型
-
强制类型转换
-
是自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但可能会造成精度降低或溢出,格外要注意
-
细节:
-
- 强转符号只针对与最近的操作数有效,往往会使用小括号提升优先级
-
- char类型可以用来保存int的常量值,但是不能保存int的变量值,需要进行强转
- char类型可以用来保存int的常量值,但是不能保存int的变量值,需要进行强转
-
基本数据类型和String类型的转换
-
基本数据类型->String:将基本数据类型的值+“ ” 即可
-
String->基本数据类型:通过基本类型的包装类调用parseXX方法即可(细节:要确保String能够转换成有效的数据,比如可以把“123”转成整数,而不能把“hello”转成整数,否则会抛出异常)
-
获取字符串中的第i个字符
今天大概看了30集课,可谓是十分细致了,对后面刷选择题十分重要。