变量和数据类型

变量

在 Java 中,变量分为两种:基本类型的变量和引用类型的变量,变量必须先定义后使用,在定义变量的时候,可以给它赋予初始值,变量可以重新赋值,但是不可以重复声明。

// 基本类型变量,更具体一点是整型变量,只声明,不赋值。
int a;
// 引用变量,更具体一点是字符串变量,声明同时初始化赋值。
String s = "Hello, world!";

基本数据类型

基本数据类型是 CPU 可以直接进行运算的类型。Java 定义了以下几种基本数据类型:

  • 整数类型:byte,short,int,long
  • 浮点数类型:float,double
  • 字符类型:char
  • 布尔类型:boolean

计算机内存的最小存储单元是字节(byte),一个字节就是一个8位二进制数,即 8 个 bit。它的二 进制表示范围从 00000000~11111111,换算成十进制是 0~255,换算成十六进制是 00~ff

一个字节是 1byte,1024 字节是 1K,1024K 是 1M,1024M 是 1G,1024G 是 1T。进率为 1024,即 2 的 10 次方。

不同的数据类型占用的字节数不一样。以下是 Java 基本数据类型占用的字节数:

  • byte: 1 个字节
  • short: 2 个字节
  • int: 4 个字节
  • long: 8 个字节
  • float: 4 个字节
  • double: 8 个字节
  • char: 2 个字节

    浮点型

    浮点类型的数就是小数,因为小数用科学计数法表示的时候,小数点是可以“浮动”的,如1234.5可以表示成12.345x10^2,也可以表示成1.2345x10^3,所以称为浮点数。Java 默认的浮点数类型是 double,如要声明为 float 则需要在浮点数后跟字母 f

浮点数示例:

float f1 = 3.14f;
// 科学计数法表示的 3.14x10^38
float f2 = 3.14e38f;
double d = 1.79e308;
double d2 = -1.79e308;
// 科学计数法表示的 4.9x10^-324
double d3 = 4.9e-324;

布尔类型

Java 中 boolean 类型的官方文档的描述:

布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义

对虚拟机来说不存在 boolean 这个类型,boolean 类型数组的访问与修改共用 byte 类型数组的 baload 和 bastore 指令,单个boolean 类型在编译后会使用 int 来表示。

总结:boolean 在数组情况下为1 个字节,单个 boolean 为4 个字节

布尔类型 boolean 只有 true 和 false 两个值,布尔类型总是关系运算的计算结果:

boolean b1 = true;
boolean b2 = false;
// 计算结果为 true
boolean isGreater = 5 > 3;
int age = 12;
// 计算结果为 false
boolean isAdult = age >= 18;

字符类型

字符类型 char 表示一个字符。Java 的 char 类型除了可表示标准的 ASCII 外,还可以表示一个 Unicode 字符:

char a = 'A';
char zh = '中';

引用类型

除了上述基本类型的变量,剩下的都是引用类型。例如,引用类型最常用的就是 String 字符串, 引用类型的变量类似于 C 语言的指针,它内部存储一个“地址”,指向某个对象在内存的位置,不直接存储变量本身。

String s = "Hello, world!";

常量

定义变量的时候,如果加上 final 修饰符,表示这个变量在进行初始化赋值后就不可再修改,这个变量就变成了常量:

final String name = "liwei";

注意:当变量被 final 修饰时,必须在声明时同时进行初始化赋值,且赋值后不可再修改。

变量的作用范围

在 Java 中,多行语句用 { } 括起来。正确地嵌套使用 { },编译器就能识别出语句块的开始和结束。而在语句块中定义的变量,它有一个作用域,就是从定义处开始,到语句块结束。作用域之外无法引用这些变量:

{
    ...
    int i = 0; // 变量i从这里开始定义
    ...
    {
        ...
        int x = 1; // 变量x从这里开始定义
        ...
        {
            ...
            String s = "hello"; // 变量s从这里开始定义
            ...
        } // 变量s作用域到此结束
        ...
        // 注意,这是一个新的变量s,它和上面的变量同名,
        // 但是因为作用域不同,它们是两个不同的变量:
        String s = "world";
        ...
    } // 变量x和s作用域到此结束
    ...
} // 变量i作用域到此结束

小结

  • Java提供了两种变量类型:基本类型和引用类型
  • 基本类型包括整型,浮点型,布尔型,字符型。
  • 变量可重新赋值,等号是赋值语句,不是数学意义的等号。
  • 常量在初始化后不可重新赋值,使用常量便于理解程序意图。

results matching ""

    No results matching ""