Skip to content

数据类型和变量


变量

(1)使用原则:先声明(定义),后使用

(2)类型:局部变量和全局变量

(3)同一个变量可以在不同的类中出现

(4)变量的三大要素

数据类型

变量名

(5)同一个变量,后续的赋值会覆盖之前的值


数据类型

alt text

基本数据类型

整数类型,存放整数(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


数据类型存储范围

类 型占用存储空间范 围默认值
byte1 个字节-128 ~ 1270
short2 个字节-(2^15) ~ 2^15-1, -32768 ~ 327670
int4 个字节-2^31 ~ 2^31-1,-2147483648 ~ 21474836470
long8 个字节-2^63 ~ 2^63-1,-9223372036854775808 ~ 92233720368547758070L
char2 个字节'\u0000'
float4 个字节-3.403E38 ~ 3.403E380.0f
double8 个字节-1.798E308 ~ 1.798E3080.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 类型

(2)注意小数计算存在的精度问题