Java 语言基础
变量
计算机内存中的存储空间,是存储数据的基本单元。
定义变量
数据类型 变量名 = 值
int a = 10;
定义方式
- 先定义后赋值
int a;
a = 10;
- 定义时赋值
int a = 10;
- 多个同类型变量声明并赋值
int a, b, c;
a = 10;
b = 10;
c = 10;
可能出现的错误
- 尚未初始化变量
// 定义了 a 变量但是没有初始化,也就是没有赋值给 a 变量
int a;
System.out.print(a);
- 找不到符号(未定义)
// 没有定义 a 变量
System.out.print(a);
注意点
Java 是强类型语言,变量的类型必须与数据的类型一致。
数据类型
基本数据类型
整数类型
| 类型 | 字节 | 二进制取值范围 | 十进制取值范围 |
|---|---|---|---|
| byte | 1字节 | -2^7 ~ 2^7 - 1 | -128 ~ 127 |
| short | 2字节 | -2^15 ~ 2^15 - 1 | -32768 ~ 32767 |
| int | 4字节 | -2^31 ~ 2^31 - 1 | -2147483648 ~ 2147483647 |
| long | 8字节 | -2^63 ~ 2^63 - 1 | -9223372036854775808 ~ 9223372036854775807 |
「int」为整数的默认类型,如需要为「long」类型赋值较大整数时,需要在值得后面添加「L」。
小数类型
| 类型 | 字节 | 负数取值范围 | 正数取值范围 |
|---|---|---|---|
| float | 4字节 | -3.4E+38 ~ -1.4E-45 | 1.4E-45 ~ 3.4E+38 |
| double | 8字节 | -1.7E+308 ~ -4.9E-324 | 4.9E-324 ~ 1.7E+308 |
「double」为小数的默认类型,如需要为「float」类型变量赋值时,需要在值得后面添加「F」。
布尔类型
| 类型 | 字节 | 取值范围 |
|---|---|---|
| boolean | 1字节 | true / false |
「Java」中的「boolean」不能参与算数运算。
字符类型
学习字符类型首先要知道ASCII码表(参:ASCII码)
| 类型 | 字节 | 取值范围 | 字符编码 |
|---|---|---|---|
| char | 2字节 | 0 ~ 65535 | Unicode字符集 |
- 字符赋值
char c = 'A';
- 整数赋值
char c = 65;
- 进制赋值
char c = '\u0041';
转义字符
「Java」使用转义字符来表示特殊符号。
| 转义字符 | 描述 |
|---|---|
| \n | 换行符 |
| \t | 制表符 |
| \\ | 反斜线 |
| \' | 单引号 |
| \" | 双引号 |
引用数据类型
这里只介绍字符串,其余后面介绍。
字符串
| 类型 | 取值范围 | 字符编码 |
|---|---|---|
| String | 任何" "之间的字面值 | Unicode字符序列 |
类型转换
自动类型转换
- 两种数据类型兼容
- 目标类型大于源类型
强制类型转换
强制转换变量的类型可能会有损失
- 两种数据类型兼容
- 目标类型小于源类型
强制类型转换规则
- 整数长度足够,数据完整
int i = 100;
byte j = (byte) i; // j = 100
- 整数长度不够,数据截断
int i = 1000;
byte j = (byte) i; // j = -24
- 小数强转整数,损失精度
double d = 3.1415926;
int i = (int) d; // i = 3
- 字符整数互转,数据完整
int i = 65;
char c = (char) i; // c = 'A'
- 「boolean」不能转换类型
运算符
算数运算符
- 两个操作数
| 操作符 | 描述 |
|---|---|
| + | 求和 |
| - | 求差 |
| * | 求积 |
| / | 求商 |
| % | 求余 |
- 一个操作数
| 操作符 | 描述 |
|---|---|
| ++ | 递增 |
| -- | 递减 |
赋值运算符
| 操作符 | 描述 |
|---|---|
| = | 直接赋值 |
| += | 求和后赋值 |
| -= | 求差后赋值 |
| *= | 求积后赋值 |
| /= | 求商后赋值 |
| %= | 求余后赋值 |
关系运算符
| 操作符 | 描述 |
|---|---|
| 大于 | |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| == | 等于 |
| != | 不等于 |
逻辑运算符
| 操作符 | 语义 | 描述 |
|---|---|---|
| && | 与 | 符号左右两个操作数,同时为真,结果为真 |
| || | 或 | 符号左右两个操作数,有一个为真,结果为真 |
| ! | 非 | 假即是真,真即是假 |
三元运算符
| 操作符 | 语义 | 描述 |
|---|---|---|
| ? : | 布尔表达式?结果1:结果2 | 表达式为真,返回结果1;表达式为假,返回结果2 |
自动类型提升
-
算术运算时
- 当操作数中没有int类型,只有「short」与「byte」类型,计算结果自动提升为「int」类型
- 其余的,计算结果自动提升为该操作数中的最大类型。
-
特殊:任何类型与「String」相加(+),实际为拼接,自动提升为String。
控制台输入
程序运行中,可在控制台手动输入数据,再让程序继续运行
使用顺序
- 导入「java.util.Scanner;」包
- 创建「Scanner」类型变量
- 使用「Scanner」类中的方法
补充
- 如果输入了不匹配的数据,异常:java.util.InputMismatchException
- 「Scanner」中「next()」方法会自动消去有效字符前的空格,遇到空格停止读取,返回空格前的字符串。「nextLine()」方法遇到回车停止读取,返回「回车键」之前的内容。