1.5 变量
1. 概念:计算中的一块存储空间,是存储数据的基本单位。
【理解】
2. 组成:数据类型、变量名、数据。
3. 变量的定义:
· (1) 声明变量:数据类型变量名;
赋值:变量名 = 值;
· (2) 声明的同时赋值:数据类型变量名 = 值;
· (3) 同时定义多个同类型的变量:
数据类型变量名1, 变量名2 = 值, 变量名3;
二、数据类型(重点)
1. 基本数据类型(简单数据类型、原始数据类型)—8种基本数据类型
· (1) 整数类型
关键字:
byte 1B -128~127
short 2B -32768~32767
int 4B -2147483648~2147483647
long 8B -9223372036854775808~9223372036854775807
注意:
long类型的字面值后面需要加L或是l,通常用L(区分数据1和字母l)
字面值:程序中可以给某个对应类型变量赋的数据
扩充:
· 字节 -> Byte简写为B -> 一个字节等于8位(bit简写b)
· 1B = 8b
· 1024B = 1KB
· 1024KB = 1MB
· 1024MB = 1GB
· 1024GB = 1TB
· (2) 小数类型(浮点类型)
a. 单精度浮点:float 4B
b. 双精度浮点:double 8B
注意:
· float字面值后面必须加F或是f;
· double字面值后面可以添加d或是d,也可以不加d。
· float和double都可以采用科学计数法形式存储,近似值。
例如:2.14748365E9 等价于 2.14748365 * 10^9
面试题目:int类型变量和float类型的哪个存储的数据范围大一些?
解析:float类型,虽然int和float都是4B,但是float可以采用科学计数法形式存储。
(3) 字符类型
关键字:char 2B
字符类型:
· 单个字符:
· char c = 'A'; // char c2 = '中';
· 多个字符:
· char c = "ABC"; // 错误写法
注意:
· 此处的符号都是英文符号。
(4) 布尔类型
关键字:boolean 字面值仅有true和false -> 1B(一般不关注)
注意:
· Java中的boolean区分于C中的boolean,C语言中的0-false;1-true;但是Java中的boolean只能接受true或是false,和0/1没有任何关系。
· Java是强类型的语言:对应类型的数据只能存储对应类型的变量中。
2. 引用数据类型(对象数据类型)
类、接口、字符串、数组等类型的数据都是引用数据类型。
目前常用的引用数据类型:String
字符串(String):用双引号引起来的一个或多个字符。String s = "hello";
三、数据的自动类型提升
1. 两个变量之间相互赋值。自动类型提升规则如下:
(1) byte -> short -> int -> long -> float -> double
小数类型的变量可以直接赋值为大数类型的变量。自动提升为大数类型
(2) char -> int -> long -> float -> double
2. 强制类型转换:
(1) 大数据类型的变量赋值给小数类型,需要用强制类型转换
(2) 强制类型转换语法:
目标类型变量名 = (目标类型) 源数据类型的变量名;
例如:double d = 12.5;
int i = (int)d;
(3) 强制转换的结果:
a. 小数类型变量强制转换为整数类型:截断 -> 取整数部分
例如:double d = 12.9;
int i = (int)d; // 结果 12
b. 整数类型的变量中的数据不丢失,数据强转结果完整
例如:int i = 15;
byte b = (byte)i; // 结果打印 15
c. 整数类型的变量中的数据丢失,数据强转结果截断
例如:int i = 257;
byte b = (byte)i; // 结果 1
注意:boolean 类型的变量不能参与数据类型的提升。
四、表达式
1. 概念:由变量、运算符、字面值等组成一个式子,通常会有一个结果产生。
2. 两变量参与运算,表达式的结果类型规则如下:
(1) 如果参与运算的变量有一个为 double 类型,结果就是 double 类型;
(2) 如果参与运算的变量没有 double 类型,有一个为 float 类型,结果类型为 float;
(3) 如果参与运算的变量没有 double/float,有一个为 long 类型,结果类型为 long;
(4) 其余的情况全部是 int 类型的结果。
例如:byte b = 1;
byte b2 = b + 1; // 编译错误,违反了两个变量参与运算的规则,结果应为 int 类型
五、运算符
1. 算术运算符:+(加) -(减) *(乘) /(除) %(取模、取余数)
注意:如果 + 两端有一个类型为 String(字符串类型),则代表字符串的拼接或是连接。
2. 赋值运算符:= += -= *= /= %=
注意:复合赋值运算符没有自动类型提升。
面试题:分别写出以下代码编译是否通过,不通过,解释原因,通过,打印结果。
(1) byte b = 1;
b = b+1; // 编译不通过,结果类型应为 int 类型
(2) byte b = 1;
b += 1; // 编译通过,结果为 2
3. 一元运算符:++(自增)–(自减)
(1) a++:先使用 a 原始数据作为表达式的结果,再将 a 自身加 1;–:先使用,再加 1
int a = 1;
int c = a++; // int c = a; a = a+1;
结果:c = 1; a = 2;
(2) ++a:先将 a 的数据加 1 运算,再使用 a 中的数据作为表达式的结果。– 先加,再使用
注意:开发时关注于让变量自身加 1 运算/减 1 运算,使用 a++/++a/a–/–a,通常不关注,
后者区别面试题目中的内容。
4. 关系运算符
大于: >
大于等于: >=
小于: <
小于等于: <=
不等于: !=
如果关系运算符连接两个变量,用于判断关系是否成立,关系成立=true,关系不成立=false,
结果类型为boolean类型的表达式称为布尔表达式。
5. 逻辑运算符
(1) &&:逻辑与,只有当两边都为true的情况下,结果才为true。有一个为false,结果就是false;(短路)
(2) ||:逻辑或,只有两边有一个为true,结果就是为true,同时为false,结果才为false.(短路)
(3) !:逻辑非,对结果取反。
(4) &:与,只有两边都为true的情况下,结果才为true。(非短路)
(5) |:或,只有两边有一个为true,结果就是为true,同时为false,结果才为false。(非短路)
面试题目:写出 && 和 & 的区别。
解析:
相同点:与的关系,两边布尔表达式同时为 true,结果才为 true。
不同点:&&短路运算符,一旦第一个布尔表达式的结果为 false,后面的布尔表达式不再运算;
&:非短路运算符,不管前面的布尔表达式是否为 false,后面的布尔表达式必须执行。
6. 条件运算符(三元运算符、三目运算符)
(1) 布尔表达式?表达式1:表达式2
(2) 执行的原理:如果布尔表达式结果为 true,执行表达式1,如果为 false,执行表达式2。
六、Scanner(扫描仪)
1. 使用的步骤:创建扫描仪
java.util.Scanner sc = new java.util.Scanner(System.in);
2. 使用:
(1) 输入一个整数:int a = sc.nextInt();
(2) 输入一个小数:double d = sc.nextDouble();
(3) 输入一个字符串:String s = sc.nextLine();
(4) 输入一个字符:char c = sc.next().charAt(0);





-171主机测评](https://www.171host.com/wp-content/uploads/2026/09/20260916123009-6aaa8bd17c4de-220x150.png)