02 变量和数据类型

384 阅读6分钟

01 变量的基本概念

  • 当需要在程序中记录单个数据内容时,声明一个变量即可,声明变量的本质是在内存中申请一个存储单元,由于存储单元中的数据内容可以改变,故取名为“变量”
  • 由于存放的数据内容不一样,在内存中所分配的存储单元大小就不一样,因此在Java中引入数据类型的概念,同时为了下次可以访问变量,还需要给变量指定一个变量名,用于记录变量所对应的存储单元。

02 变量的声明和使用

变量的声明方式 数据类型 变量名=初始值; (初始值可以省略,但是;不能省略)

示例代码:

public class VarTest{
	public static void main(String[] args){
		int age=23;
		System.out.println("age="+age);
	}

}

变量的注意事项:

  1. 变量在使用之前必须先声明
  2. 变量在使用之前也必须初始化
  3. 变量不能被重复声明

03 标识符命名规则

  • 由数字、字母、下划线以及$等组成,其中不能以数字开头

  • 不能使用Java语言中的关键字,关键字指的是Java语言中用来表示特殊含义的单词

  • 区分大小写,长度没有限制但不宜太长

  • 命名尽量做到见名知意,支持中文但不推荐使用

  • 标识符可以发给类/方法/变量/属性/包起名字

Java中常见关键字有

04 变量输入输出案例实现

要求:提示用户从键盘输入自己的姓名和年龄信息并打印发给出来

实现代码

import java.util.Scanner;
public class VarIOTest{
    public static void main(String[] args){
        String name;
        int age;
        System.out.println("请输入你的姓名和年龄:");
        Scanner sc=new Scanner(System.in);
        name=sc.next();
        age=sc.nextInt();
        System.out.println("name="+name);
        System.out.println("age="+age);
    }
    
}

根据变量随使用随声明,以及减少重复语句的原则,可以优化一下上面的代码。

import java.util.Scanner;
public class VarIOTest{
    public static void main(String[] args){
        System.out.println("请输入你的姓名和年龄:");
        Scanner sc=new Scanner(System.in);
        String name=sc.next();
        int age=sc.nextInt();
        System.out.println("name="+name+", age="+age);
    }
    
}

05 数据类型

Java语言中数据类型主要分为两类:

  1. 基本数据类型 byte、short、int、long、double、boolean、char

  2. 引用数据类型 数组、类、接口、枚举、标注

06 单个字节表示的整数范围

计算机中单个字节表示八位二进制位,其中最高位代表符号位,使用0代表非负数,使用1代表复数

非负数范围:0000 0000 ~ 0111 1111 即0到127

复数范围: 1000 0000 ~ 1111 1111 即—128到—1

综上所述,单个字节表示的整数范围为—128到127

07 整数类型

Java语言中可以变是整数数据的类型有:byte、short、int 、long,一般推荐使用int

  • byte类型在内存空间中占1个字节,表示范围是:-2^7 ~ 2^7 -1
  • short类型在内存空间中占2个字节,表示范围是:-2^15 ~ 2^15-1
  • int类型在内存空间中占4个字节,表示范围是:-2^31 ~ 2^31 -1
  • long类型在内存空间中占8个字节,表示范围是:-2^63 ~ 2^63 -1

在Java中直接写出的整数数据叫做直接量/常量,默认为int类型。若希望表达更大的直接量,则在直接量的后面加上l或L,推荐使用L。

若整数数值超过了long类型的范围,则使用java.math.BigInteger类型

08 整数类型的笔试考点

  1. 标识符不能以数字开头,因为用数字开头, 编译器将无法区分该处是直接量还是标识符

  2. 下面代码是否有错误?若有请说明原因

    int i2=25;
    byte b2=i2;
    System.out.ptintln("b2="+b2);
    

    有错误,因为i2是一个变量,意味着i2的数值可以发生改变,就有可能无法确保i2的值在byte类型的范围内,所以会报错。

09 浮点类型

Java语言中表示小数数据的类型有:float和double,一般推荐使用double

  • float类型在内存空间中占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38 ~ 3.403E38

  • double类型在内存空间中占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围:-1.798E308 ~ 1.798E308

  • Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,需要在直接量后面加上f或F

10 布尔类型

Java语言中用于描述真假信息类型有:boolean,数值只有:true和false

布尔类型在内存中所占空间没有明确规定,可以认为占1个字节

11 字符类型

Java语言中用于描述单个字符的数据类型:char类型

char类型在内存空间中占2个字节且没有符号位,表示范围为0 ~ 65535,在现实生活中很少有数据能够被单个字符描述,因此实际开发中更多使用的是由多个字符组成的字符串,使用String类型来描述

计算机底层只能识别0和1的二进制序列,因此对于单个字符这样的图案来说,计算机是不能直接进行存储的,所以只能给单个字符进行编号,计算机存储单个字符所对应的编号,该编号就是ASCII码

常用的ASCII码有:'0'—48、'A'—65、'a'—97、空格—32、换行符—10

Java字符类型采用Unicode字符集编码。Unicode是世界通用的定长字符集,所有的字符都是16位。

常用的转义字符有:\ " 对应 " \ ' 对应 ' \ \ 对应\ \t 制表符

\ n 换行符

12 自动类型转换

Java语言中数据类型之间的转换方式有两种:自动类型转换和强制类型转换。

自动类型转换是指从小类型到大类型之间的转换

13 强制类型转换

强制类型转换指从大类型到小类型之间的转换,语法格式如下:

​ 目标类型 变量名=(目标类型)源类型变量名;

强转有风险,会造成数据精度的丢失,一般不推荐使用强制类型转换。