数据类型和变量
变量
(1)使用原则:先声明(定义),后使用
(2)类型:局部变量和全局变量
(3)同一个变量可以在不同的类中出现
(4)变量的三大要素
数据类型
变量名
值
(5)同一个变量,后续的赋值会覆盖之前的值
数据类型

基本数据类型
整数类型,存放整数(byte[1], short[2], int[4], long[8])
浮点(小数)类型(float[4], double[8])
字符型(char[2]),存放单个字符 'a'
布尔型(boolean[1]),存放 true 或 false
引用数据类型
类(class)
数组([ ])
接口(interface)
注意事项
(1)除了字符型(char)是一个字符占用两个字节和多一个byte(1 个字节)数据类型以外,其余数据类型和字节大小和 C 语言一样
(2)布尔类型的命名稍有不同:boolean
数据类型存储范围
| 类 型 | 占用存储空间 | 范 围 | 默认值 |
|---|---|---|---|
| byte | 1 个字节 | -128 ~ 127 | 0 |
| short | 2 个字节 | -(2^15) ~ 2^15-1, -32768 ~ 32767 | 0 |
| int | 4 个字节 | -2^31 ~ 2^31-1,-2147483648 ~ 2147483647 | 0 |
| long | 8 个字节 | -2^63 ~ 2^63-1,-9223372036854775808 ~ 9223372036854775807 | 0L |
| char | 2 个字节 | '\u0000' | |
| float | 4 个字节 | -3.403E38 ~ 3.403E38 | 0.0f |
| double | 8 个字节 | -1.798E308 ~ 1.798E308 | 0.0d |
| String(注意大写)是一个类 | null |
整型
byte、short、int、ong
1. Java 的整型常量(具体值)默认为 int 型
2. 声明long型常量须加 'l' 或 'L'表示这个数据是 long 类型
浮点类型
float、double
面试考点
1. 浮点数的构成?
符号位+指数位+尾数位
2. Java小数默认是 double 类型,声明 float 变量需要在小数后面加上 f
例如:
float a= 1.1f,表示 1.1 是 float 类型
3. 区别 double 和 float
问题:同一个变量值使用不同的类型,输出其值,结果不同
(1)float 是单精度类型,会舍弃一些尾数,是一个近似值
(2)double 是一个双精度类型,精度更高
(3)推荐默认使用 double 类型
4. 科学计数法的使用
使用方法:数据 e / E(一个正(负)整数:表示乘于 10 的几次方
举例
(1)
float a = 1.1e1f,输出:11.0(2)
float a= 1.1e-1f,输出:0.11
字符类型
char:一个字符占用 2 个字节,可以存放汉字
1. 字符存储原理
(1)在 Java 中,char 的本质是一个整数,在输出时,是unicode 码中对应的字符
(2)字符型存储到计算机中,需要将字符对应的码值(整数)找出来
举例
存储:'a': 'a' ---> 码值 97 ---> 二进制 ---> 存储
读取:二进制 ---> 97 ---> 'a' ---> 显示
2. 使用细节
(1)使用单引号引起来,不可以用双引号,双引号表示一个字符串
(2)转义字符可以作为一个特殊的字符串常量
(3)可以直接给 char 赋一个整数,然后输出时,就会按照对应的 unicode 字符输出
(4)char 类型是可以运算的,因为 char 的本质是一个整数,因为每个字符都有对应有 unicode 码
代码示例
java
public class hello{
public static void main(String[] args){
char c5 = 'b' + 1; // 98+1 ==> 99
System.out.println((int)c5); // 99
System.out.println(c5); // 99->对应的字符->编码表 ASCII(规定好的) => c
}
}布尔类型(boolean)
注意:在 Java 中不可以用 0 或者 1 表示真假,只能用 true 和 false
⭐ 小数精度问题
问题:判断两个小数是否相等
经典错误:判断如下代码 a = b
java
double a = 2.7
double b = 8.1 / 3很显然 a ≠ b,为什么?
(1)实际上 b 的值并不是 2.7 ,由于精度问题,计算机会认为是 8.100000(等多个 0) / 3
(2) 即
b:2.6999999999999997
⭐ 判断小数相等
思路:采用差值的绝对值小于(<)某个精度,可以认为是规定的方法
代码示例
java
public class Main {
public static void main(String[] args) {
double num11 = 2.7;
double num12 = 8.1 / 3;
if (Math.abs(num11 - num12) < 0.000001) {
System.out.println("差值非常小,达到规定精度差值范围,认为相等...");
}
}
}⚠️ 注意事项
(1)声明小数变量时需要指定类型,如果不声明数据的类型,由于默认数据类型,可能会导致报错
举例
(1)一个小的数据类型当然可以赋值给大的数据类型(
double a= 1.1f) (2)一个大的数据类型不可以赋值给小的数据类型(
float a= 1.1),这样==会报错,因为默认是 double 类型
