第二章 变量和运算符

主要内容

  1. 关键字和标识符
  2. 变量和常量
  3. 八大基本数据类型
  4. Scanner键盘输入
  5. 基本数据类型的类型转换
  6. 算术运算符
  7. 赋值运算符
  8. 扩展赋值运算符
  9. 比较运算符
  10. 逻辑运算符
  11. 三目运算符
  12. 运算符的优先级别

学习目标

知识点 要求
关键字和标识符 理解
变量和常量 掌握
八大基本数据类型 掌握
Scanner键盘输入 掌握
基本数据类型的类型转换 掌握
算术运算符 掌握
赋值运算符 掌握
扩展赋值运算符 掌握
比较运算符 掌握
逻辑运算符 掌握
三目运算符 掌握
运算符的优先级别 了解

1.常量和变量

1.1 关键字&保留字

Java关键字是编程语言中预先定义、具有特定含义的标识符,也称为保留字。这些关键字对Java编译器具有特殊意义,用于表示数据类型或程序结构等核心功能。

abstract boolean break byte case
catch char class const continue
default do double else enum
extends final finally float for
goto if implements import instanceof
int interface long native new
package private protected public return
short static strictfp super switch
synchronized this throw throws transient
try void volatile while

备注:这些关键字不需要刻意去背,后面会慢慢介绍每个关键字的用法。

1.2 标识符

在Java编程中,标识符是用于为变量、类、方法及包等程序元素命名的命名符号。

1.2.1 标识符命名规则

  • 标识符由字母(A-Z 和 a-z)、数字(0-9)、下划线(_)和美元符号($)构成;
  • 标识符的首字符不能为数字,后续部分可包含字母、下划线、美元符号和数字的任意组合;
  • Java 标识符区分大小写,且长度不受限制;
  • 标识符不得使用 Java 关键字和保留字。

1.2.2 标识符命名规范

  • 类名标识符应采用大驼峰式命名法(PascalCase),即首字母大写且每个单词首字母大写。
    例如:Person、GoodStudent
  • 方法和变量标识符应采用小驼峰式命名法(camelCase),即首字母小写且后续单词首字母大写。
    例如:int userName;、public void eatFood(){}

特别说明:由于Java采用Unicode字符集,标识符可使用包括中文在内的多种字符。但为提高代码可读性和维护性,建议避免使用汉字作为标识符。

1.3 变量(Variable)

1.3.1 变量的本质

变量本质上是一个具有确定存储位置的可操作空间,其具体存储值则是不确定的。通过变量名,我们可以访问并操作该存储空间中的内容。

Java作为一门强类型语言,要求所有变量在使用前必须明确声明其数据类型。这种数据类型不仅决定了变量所能存储的值的范围,还直接影响了变量在内存中所占用的存储空间大小。我们可以将内存中的变量形象地比作旅馆的房间,而常量则如同入住这些房间的旅客,每个房间(变量)都有其特定的类型和容量,用于容纳不同类型的旅客(常量)。
在这里插入图片描述

1.3.2 变量的声明

变量声明语法:数据类型 变量名;
变量声明本质:就是在内存中开辟一块内存空间,用于存放指定数据类型的数据。

  • 声明一个变量
/**
 * @Author: chenxiezhu
 * @Date: 2025/5/12 23:08
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class VariableDemo1 {
   
    public static void main(String[] args) {
   
        // 定义整型变量age
        int age;
        // 定义双精度浮点型变量price
        double price;
    }
}
  • 同时声明多个变量

语法:数据类型 变量名1, 变量名2, 变量名3;

/**
 * @Author: chenxiezhu
 * @Date: 2025/5/12 23:08
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class VariableDemo1 {
   
    public static void main(String[] args) {
   
        // 声明一个int类型的变量age
        int age;
        // 声明一个float类型的变量
        double price;

        // 声明多个int类型的变量
        int num1, num2, num3;
    }
}

注意:在同时声明多个变量时,所有变量必须属于同一类型。

1.3.3 变量的赋值

变量赋值的本质是:通过变量名定位对应的内存地址,并将数据存储到该内存区域中。

  • 给变量赋值
/**
 * @Author: chenxiezhu
 * @Date: 2025/5/12 23:20
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class VariableDemo2 {
   
    public static void main(String[] args) {
   
        // 声明一个int类型的变量age
        int age; // 在内存中分配存储空间
        // 为age变量赋值
        age = 23; // 将等号右侧的值赋给左侧的变量
    }
}

注意:赋值的数据类型必须和声明变量类型一致。

  • 声明和赋值同时进行

语法: 数据类型 变量名 = 数据值;

/**
 * @Author: chenxiezhu
 * @Date: 2025/5/12 23:20
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class VariableDemo2 {
   
    public static void main(String[] args) {
   
        int age2 = 23; // 将右侧的值赋给左侧变量
    }
}
  • 同时声明和赋值多个变量

语法:数据类型 变量名1 = 数据值1,变量名2 = 数据值2,变量名3 = 数据值3;

/**
 * @Author: chenxiezhu
 * @Date: 2025/5/12 23:20
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class VariableDemo2 {
   
    public static void main(String[] args) {
   
        // 一次性声明并初始化多个变量(不推荐,影响代码可读性)
        int num1 = 10, num2 = 20, num3 = 30;
    }
}

1.3.4 变量总结和提升

变量以"变"为核心特征,其本质在于声明时开辟的内存空间可被重复赋值。

使用变量时需注意以下要点:

1)方法内部声明的变量必须在赋值后才能调用;
2)变量使用需遵循声明优先原则,未经声明的变量名不具备任何意义;
3)命名规范要求变量名采用小写字母开头的驼峰式命名法,且必须符合标识符规则;
4)赋值操作需确保数据类型与变量声明类型严格一致;
5)同一方法内禁止声明多个同名变量。

1.4 常量(Constant)

在编程中,常量指代不可变的固定值,常见示例包括:整型1、浮点型2.1、字符’a’、布尔值true/false、字符串"helloWorld"、空字符串""以及空值null等。

在Java语言中,我们可以通过final关键字来显式声明常量。

语法:final 数据类型 常量名 = 数据值;

常量的核心特性在于其不可变性:一旦完成初始化赋值,其值将始终保持不变,无法被后续程序修改。

/**
 * @Author: chenxiezhu
 * @Date: 2025/5/12 23:37
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class ConstantDemo1 {
   
    public static void main(String[] args) {
   
        final float PI = 3.1415926f;
    }
}

注意:

  1. 常量仅允许赋值一次,一旦赋值完成,其值便不可修改。
  2. 常量名称通常采用大写字母,多个单词之间以下划线分隔,例如:final int MAX_VALUE = 100;

2. 基本数据类型

Java 作为一门强类型语言,要求所有变量在使用前必须明确声明其数据类型。
Java 的数据类型主要分为两大类:基本类型(Primitive Type)和引用类型(Reference Type)。

在这里插入图片描述

2.1 整数型

整数型常量可分为以下三种表示形式:

  • 十进制整数,如:666,-100等
  • 八进制整数,要求以0开头,如:016
  • 十六进制整数,要求以0x或0X开头,如:0x1A,0x15

数据类型占用存储空间越大,那么表数的范围也就越大。在开发实践中,应根据具体需求选择合适的数值类型,避免超出表数范围。通常情况下,int类型是最常用的选择。

类型 占用存储空间 数值范围
byte 1 字节 (-128 ~ 127)
-27~ 27 - 1
short 2 字节 (-32768 ~ 32767)
-215 ~ 215 - 1
int 4 字节 (-2147483648 ~ 2147483647) 约 21 亿
-231 ~ 231 - 1
long 8 字节 -263~ 263 - 1

注意:

  1. 需特别关注数据类型的数值范围,防止因超出范围导致精度损失。
  2. 整型常量默认采用int类型,如需声明long型常量,可在数值后添加"l"或"L",推荐使用"L"以增强可读性。

2.2 浮点型

在Java中,小数类型统称为浮点类型。
浮点型常量有两种表示形式:

  1. 十进制形式,如:3.14 或 123.45
  2. 科学计数法形式,如:314E2(表示31400.0)或314E-2(表示3.14)

浮点类型主要分为两种:

  1. float(单精度)类型:可精确到7位有效数字,但在多数场景下其精度难以满足需求。
  2. double(双精度)类型:其数值精度是float类型的两倍,是大多数应用程序的首选。需要注意的是,Java中的浮点型常量默认采用double类型。
类型 占用存储空间 数值范围
float 4字节 -3.403E38 ~ 3.403E38
double 8字节 -1.798E308 ~ 1.798E308

使用浮点型常量时需注意以下事项:

  1. 浮点型常量默认采用 double 类型存储
  2. 将浮点型常量赋值给 float 类型变量时,需在常量后添加后缀 “f” 或 “F”
  3. 不建议直接比较两个浮点数的大小,这种比较方式可能导致精度问题

扩展知识:
整数和浮点数在内存中的存储机制存在显著差异,建议对此感兴趣的同学可以进一步查阅相关资料深入了解。

2.3 布尔型

boolean(布尔型)包含两个取值:true(真)和false(假)。它主要用于逻辑判断,是程序流程控制中的核心数据类型。

扩展知识:
根据Java语言规范,boolean类型的具体存储空间并未明确规定。如需深入了解,建议查阅相关技术文档。

2.4 字符型

2.4.1 字符型

在Java中,字符型数据占用2个字节的内存空间。使用单引号括起来的单个字符被称为字符常量。
如:'A’表示一个字符常量,而"A"则表示一个仅包含单个字符的字符串,两者在Java中具有不同的数据类型和存储方式。

【示例】字符型使用

/**
 * @Author: chenxiezhu
 * @Date: 2025/5/13 19:37
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class CharDemo1 {
   
    public static void main(String[] args) {
   
        char ch1 = 'c';  // 正确:声明并赋值字符'c'
        char ch2 = '好'; // 正确:声明并赋值字符'好'
        char ch3 = '6';  // 正确:声明并赋值字符'6'
        char ch4 = '66'; // 错误:单引号内只能包含单个字符
        char ch5 = '';   // 错误:单引号内必须包含一个字符
        char ch6 = "你"; // 错误:字符必须使用单引号,双引号用于字符串
    }
}

IDEA 会自动检测并提示代码中的错误。
在这里插入图片描述
补充说明:char类型用于表示Unicode编码表中的字符,因此它能够完整地表示一个中文字符。

  • char类型和int类型的联系和区别

char类型常量在内存中直接存储其对应的Unicode编码值,例如:字符’A’对应65,字符’1’对应49。在特定取值范围内,char类型与int类型可以相互转换并通用。

【示例】char类型和int类型

/**
 * @Author: chenxiezhu
 * @Date: 2025/5/13 19:51
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class CharDemo2 {
   
    public static void main(String[] args) {
   
        char ch1 = 'C'; // Unicode对应的数值为65
        System.out.println(ch1 + 1);          // 输出:68
        char ch2 = 99;  // Unicode对应的字符为'c'
        System.out.println((char)(ch2 - 32)); // 输出:'C'
    }
}

在这里插入图片描述
char类型与int类型的主要区别:

  1. 内存占用差异:nt类型在内存中占用4个字节,而char类型仅占用2个字节。
  2. 数值范围不同:int类型能够表示的数值范围远大于char类型,此外,int类型支持表示负数,而char类型通常用于表示字符或较小的非负整数。

2.4.2 字符集

计算机系统仅能识别0和1,所有信息都以二进制形式存储。对于数值型数据,我们可以直接将其转换为二进制并存入内存,那么字符型数据是如何存储的呢?

实际上,字符本身无法直接转换为二进制。我们在屏幕上看到的英文字母、汉字等字符,都是经过二进制转换后的结果。简单来说,将字符存储在计算机中的规则被称为"编码"。例如,字符’A’可以用十进制数65表示,然后将65转换为二进制存储在内存中。

相反,将计算机中存储的二进制数解析并显示出来的过程称为"解码"。例如,当我们从内存中读取数值65时,就表示读取的字符是’A’。

基于这种"编码"和"解码"机制,人类为不同语言创建了相应的编码表。

以下是几种常见的字符编码表

  1. ASCII:美国信息交换标准代码,基于拉丁字母的计算机编码系统,主要用于显示现代英语和西欧语言。
  2. GBK:全称《汉字内码扩展规范》,是用于表示中文的编码标准。
  3. Unicode:又称万国码或统一码,旨在解决传统编码方案的局限性。它为每种语言的每个字符设定了统一且唯一的二进制编码,满足跨语言、跨平台的文本转换和处理需求。

Unicode编码占用2个字节,可表示65536个字符,一个中文字符在内存中占用2个字节。

2.4.3 转义字符

Java 语言支持使用转义字符来改变后续字符的特定含义。

转义符 含义 Unicode值
\n 换行符 \u000a
\t 制表符 \u0009
\" 双引号 \u0022
\' 单引号 \u0027
\\ 反斜杠 \u005c

3. Scanner键盘输入

Scanner类位于java.util包中,是Java 5引入的一个用于获取用户输入的类。它提供了读取不同类型数据的便捷方法,大大简化了控制台输入的处理过程。

3.1 导入Scanner包

通过在源文件开头导入java.util.Scanner包,我们便可以在代码中直接使用Scanner类。

import java.util.Scanner;

3.2 初始化Scanner对象

Scanner input = new Scanner(System.in);

3.3 获取输入的数据

从控制台读取用户输入的一行文本,并将其转换为指定类型的数据。

String str = input.next();  // 获取控制台输入的字符串

【示例】

import java.util.Scanner;

/**
 * @Author: chenxiezhu
 * @Date: 2025/5/14 22:17
 * @Version: v1.0.0
 * @Description: TODO
 **/
public class ScannerDemo {
   
    public static void main(String[] args) {
   
        // 创建Scanner对象,从标准输入(键盘)获取数据
        Scanner input = new Scanner(System.in);

        // 使用Scanner对象的方法读取输入
        System.out.println("请输入一个字符串:");
        String number = input.next();
        System.out.println("您输入的字符串是:" + number
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue刂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值