Java基础知识
2021/2/27 周六
复习内容: Java的变量,基本数据类型,数据类型转化
如有错误,欢迎在评论区指出,非常感谢!
一、变量
Java中用于保存数据的量称为变量 ,变量其实代表一块内存区域
1. 声明变量
(1) 变量必须先声明,才能使用,不能直接使用没有声明的变量
数据类型 变量名; // 声明变量的方法
int a,b,c; // 同时声明多个变量,a,b,c三个变量都是int类型
(2) 变量可以保存数据,只能保存特定(变量)类型的数据,任何一个变量都有数据类型
(3) 在同一个作用域下面,变量不能被重复声明
System.out.println(age); //Error age没有声明过
int age;
age = 19;
age = 18.8; //Error age是int类型 不能保存浮点类型的数据
int age; //Error age不能被重复声明
2. 变量名规则
(1) 变量名由 数字、字母、_(下划线)以及$组成
(2) 不能由数字开头
(3) 不能和Java的关键字冲突
如 byte short int long float duble char boolean void break continue for if else …
(4) 在特定的编码下,可以使用中文变量名,但不建议使用。
建议用英文单词,需要用拼音时一般有2种命名方法:
驼峰式: nianLing 首个单词小写,后面的单词首字母大写
下划线: nian_ling 拼音之间用下划线
3. 变量初始化 让变量保存数据
给变量初始值:变量必须初始化之后,才能进行取值操作(变量必须初始化之后才能使用)
(1)直接初始化
int age = 10; // =其实就赋值,就是把=右边的数据保存到变量中去
(2)间接初始化
int m;
m = 20;
4. 变量的操作
所谓变量,其实就是里面的值可以发生改变的量。
变量的操作有:赋值、取值
赋值: 改变变量中存储的数据
变量 = 数据;
取值: 拿到变量里所存储的数据
System.out.println(变量);
二、Java的基本数据类型
1. Java中的基本数据类型
Java中只有两种数据类型:一种是基本数据类型,另外一种是引用数据类型。
其中,基本数据类型有八种:
整型(整数) byte short int long
浮点型(小数) float double
布尔型 boolean
字符型 char
2. 整数类型
(1) 四个整型 : byte short int long
微观上 体现在每种类型所占的内存大小不一样
宏观上 体现在能够存储的数值的范围不一样
类型 内存大小 能够存储的数值范围
byte 1字节(8个二进制位) [-128,127]
short 2字节(16个二进制位) [-32768,32767]
int 4字节(32个二进制位) [-2^31,2^31 -1]
long 8字节(64个二进制位) [-2^63,2^63 -1]
(2) 1字节有8个二进制位,最高位是符号位,0表示正数,1表示负数
如:byte表示数值范围 1000 0000(-128) 0111 1111(127)
(3) 对于变量而言,只能保存该类型所能够保存数值的范围,超出范围将报错。
在Java程序中,直接给出的整数默认是int类型,所以不能直接写超出int表示范围的整数值
如果需要表示long类型的数值,需要在数值末尾加上l或者L,表示long类型的数值。
3. 浮点类型
(1) 两个浮点型 : float double
浮点型数值表示不精确的数值,与整数存储的方式不一样。
float 单精度浮点类型
- 由32个二进制位 (4字节) 构成:1个符号位 + 8个指数位 + 23个小数位
- 取值范围: ± 3.4e+38
- 精确值: 小数点后精确6-7位 (223的结果有7位)
- 指数范围: -128,127
要把浮点类型的数据换算成 1.xxxxxx * 2n ,保存的只有小数点后的小数位 以及 指数n
double 双精度浮点类型
- 由64个二进制位 (8字节) 构成:1个符号位 + 11个指数位 + 52个小数位
- 取值范围: ± 1.79e+308
- 精确值: 小数点后精确到15-16位 (252有16位)
- 指数范围:-27,27-1
(2) Java中直接给出的浮点数值默认是double类型,如果要表示float的数值需要在末尾加上f或者F
3. 字符型char
char 2个字节 取值范围为 0-65535
表示用单引号引起来的字母或者汉字,如 ‘a’、‘中’、‘9’。
char的不同形式:
- 单引号:‘a’ ‘国’
- unicode编码: ‘\uxxxx’ ‘\u5410’
- 数值: [0,65535]
4. 布尔型boolean
boolean 1个字节 取值范围为 true/false
表示逻辑 真/假
三、数据类型转换
1.直接字面值
整数字面值默认是int类型 , long类型加l/L
浮点字面值默认是double类型 , float类型加f/F
2.自动类型转换(隐式类型转换)
表示范围窄的变量可以自动转换成表示范围宽的数据
byte->short->int->long->float->double
char->int (当char在byte或short的范围内也可以自动转)
(1) 对于 byte short char 类型的变量,可以直接用 数据类型取值范围之内的 整数字面值 进行赋值或者初始化,超出范围将报错。
byte b = 1;
short s = 32767;
(2)对于byte short char 类型的变量,不可以用 int 类型变量进行赋值。
int i = 1;
byte b = i; // Error
编译器只知道i是一个int类型的数据,并不知道i是否在byte表示范围。
(3) 对于byte short char 在进行算术运算时,会自动转换成int类型
byte bx = 1+3;
byte b1 = 1;
byte b2 = 2;
byte b3 = b1+b2; // Error
byte+byte 的结果自动转成int类型了
3.强制类型转换(显式类型转换)
由上文可知,范围宽的数据不能自动转换成表示范围窄的数据,但可以强转:
(目标数据类型)源数据
由于强制类型转换会舍弃一些二进制位,可能导致的情况:
(1) 数据溢出
(2) 精度缺失
举例:
int i = 3354; // 0···0 0···0 00001101 00011010
byte b = (byte)i; // 强转,取后8位二进制位 00011010
// 结果就是b的值变成了26