- Java基础复习-变量篇
- 数据类型
- 基本数据类型
- 整型
- 浮点类型
- 字符型(char)
- 布尔型(boolean)
- 基本数据类型之间运算规则
- 自动类型提升
- 强制类型转换
- 特殊情况
- 变量和常量
- 变量
- 声明变量
- 变量名命名规则
- 变量初始化
- 常量
- 类常量
- 运算符
- 算数运算符
- 结合赋值和运算符
- 自增自减运算符
- 比较运算符
- 逻辑运算符
- 三元运算符
- 位运算符
- 引用数据类型
- 字符串(String)
- 拼接
Java是一种强类型语言,每个变量都必须声明一种类型。
Java语言中数据类型分为基本数据类型和引用数据类型。
基本数据类型共有8种,其中有4种整型==(byte、short、int、long),2种浮点型(float、double),1种字符型(char),1种用于表示真值的布尔型(boolean)==。
引用数据类型共有3种,其中包括类(class)、接口(interface)和数组 [ ](array)。
基本数据类型 整型
用于表示没有小数部分的数值,允许是负数。
| 类型 | 存储需求 | 取值范围 |
|---|---|---|
| byte | 1字节 | -127 ~ 128 |
| short | 2字节 | -2^15 ~ 2^15-1 |
| int | 4字节 | -2^31 ~ 2^31-1(刚刚超过20亿) |
| long | 8字节 | -2^63 ~ 2^63-1 |
通常情况下,int类型最为常用。
此外声明long型变量,需以"l"或"L"结尾。
例:long l1 = 3410167L;
浮点类型
用于表示有小数部分的数值。在Java中有两种浮点类型,具体如下:
| 类型 | 存储需求 | 特征 |
|---|---|---|
| float | 4字节 | 单精度,尾数精确到小数点后七位有效数字 |
| double | 8字节 | 双精度,精度是float的两倍 |
float类型的数值有一个后缀,变量要以"f"或"F"结尾。
例:float f1 = 3.14f
在通常情况下,没有后缀"f"或"F"的浮点数值,总是默认为是double类型。
字符型(char)
char型变量,存储需求为:1字节 = 2 bit
定义char型变量时,我们通常使用一对 ’ ’ 表示,其内部只能写一个字符。
此外,char类型有三种表示方式:
-
声明一个字符
- 例:char c1 = 'A'
-
表示转义字符
- 例:char c3 = 'n' //换行符
-
使用Unicode值表示字符型常量
- 例:char c2 = 'u0043' //对应字符c
布尔型(boolean)
boolean类型只有两个值:true 和 false,用于判断逻辑条件,通常在条件判断和循环结构中使用。
此外,boolean型不能和其他7种基本数据类型进行相互转换。
基本数据类型之间运算规则
前提:只存在除boolean类型外的其他7中类型间的相互转换。
自动类型提升表示为,当容量较小的数据类型的变量与容量较大的数据类型变量之间进行运算时,运算结果会自动提升为容量较大的数据类型。
当我们使用 + 运算符操作两个不同类型的变量时(例如 n + f,n是整数,f是浮点数),此操作先要将两个变量转换为同一类型,然后再进行计算
- 如果,变量 f 为double类型,则另一变量 n 也会转换为double型,运算结果为double型。
- 如果,变量 f 为float类型,则另一变量 n 也会转换为float型,运算结果为float型。
- 如果,变量 f 为long类型,则另一变量 n 也会转换为long型,运算结果为long型。
- 若 f 为比int类型小的基本数据类型,运算后结果为 int 型。
强制类型转换
表示为自动类型提升的逆运算,例如将double类型的变量转换为int类型的变量。
double d1 = 3.14159; int i1 = (int)d1;
此时,变量 i1 的值为 3。
- 需要使用强转符(数据类型)。
- 强制类型转换可能会造成精度损失。
特殊情况
long l1 = 123456; //编译不报错 long l2 = 123456789123456; //编译出错,提示过大整数 long l3 = 123456789123456L; //编译不报错
上述情况原因:在Java语言中,整型常量默认为int型,123456789123456默认为int类型,但是此时该整型大小超出int类型范围,所以报错。
float f1 = 13.4; //编译失败 byte b1 = 12; byte b2 = b1 + 2; //编译失败 float f2 = b1 + 13.4 //编译失败
原因:
- 浮点型常量,默认类型为double类型,13.4 表示为double类型,此时需要使用强转符进行强制转换。
- b1为byte类型,与int型常量 2 进行运算会将结果变为int型。
- b1为byte类型,与double型常量 13.4 进行运算会将结果变为double型。
变量和常量
Java使用变量来存储值,常量则表示值不变的变量。
变量是程序中最基本的存储单位,包含变量类型、变量名和存储的值。
作用:用于在内存中保存数据。
注意:
- 格式:变量类型 变量名 = 存储的值;
- 使用方式:先声明后赋值(使用)。
- 变量都定义在其作用域内,且只在其作用域内有效。
- 同一作用域内,不可声明两个变量名相同的变量。
- 由26个英文字母大小写、数字0–9、_(下划线)或$组成。
- 数字不能开头。
- 不能使用Java语言中的关键字或保留字,但可包含关键字或保留字。
- Java语言中严格区分大小写,长度无限制。
- 不能包含空格
- 变量名命名规范:多单词组成变量名时,首单词全部小写,此后开始的每个单词首字母大写
int i; float f1; double moreDo;
变量初始化
声明一个变量之后,必须使用赋值语句对变量进行显示初始化,不能使用未被初始化的变量的值。
int vacationDays; System.out.println(vacationDays); //编译报错,未赋值
常量
利用final关键字指示常量。final表示这个变量只能被赋值一次,一旦被赋值之后,就不能够被更改。
命名规范规定,常量名使用全大写表示。
类常量
在Java中经常希望某个常量可以在一个类中的多个方法中使用,通常将它称为类常量(全局常量),使用关键字
static final 表示。
public static final double PAI = 3.1415926;
需要注意,全局常量定义位于main方法的外部,当前类内部。
运算符 算数运算符
- 除号:/ 当参与运算的两个操作数都是整型时,表示整型除法。否则,表示浮点除法。
- 取余运算(取余): % 表示结果为两个操作数进行除法运算,得到两数的余数,结果符号和被模数相同。
- 其他:+(加)、-(减)、*(乘)
结合赋值和运算符
可以在赋值中使用二元运算符,例
x += 4; //等价于 x = x + 4 y += 3.5; // 等价于 y = (int)(y + 3.5)
注:如果运算符得到一个值,其左右两边类型不同,会发生强制类型转换,不会改变原数据 y 的数据类型。
一般来说,运算符放在 = 的左边,例如:*=、%=
自增自减运算符
前缀运算符:
- ++x,先自增1后,再进行运算操作
- –x,先自减1后,再进行运算操作
后缀运算符
- y++,先进行运算操作,然后再进行自增1
- y–,先进行运算操作,然后再进行自减1
比较运算符
!= 、== 、> 、< 、>= 、<= 、instanceof(类类型之间判断)
- 判断结果返回类型为boolean型,true/false
- < 、> 、>= 、<= 只能用于数值类型数据之间
- != 、== 不仅可用于数值类型之间,还可用于引用类型之间(判断双方引用地址是否相同)
逻辑运算符
& 、&& 、| 、|| 、^ (异或)
操作的都是boolean类型的变量,且结果也为boolean类型
&(逻辑与)、|(逻辑或):
逻辑表达式1 & 逻辑表达式2; //如果逻辑表达式1的结果为false,程序依旧会判断逻辑表达式2 逻辑表达式1 | 逻辑表达式2; //如果逻辑表达式1的结果为true,程序依旧会向下判断逻辑表达式2
&&(短路与)、||(短路或)
逻辑表达式1 && 逻辑表达式2; //如果逻辑表达式1的结果为false,程序不会进行逻辑表达式2的判断 逻辑表达式1 || 逻辑表达式2; //如果逻辑表达式1的结果为true,程序不会继续向下进行,不判断表达式2
三元运算符
格式:(条件表达式)?表达式1:表达式2;
- 条件表达式的结果为boolean类型
- 根据条件表达式的返回值,决定执行哪个表达式
- 若条件表达式为true,程序执行表达式1
- 若条件表达式为false,程序执行表达式2
- 表达式1和表达式2要求一致(同种类型)
- 支持嵌套操作
- 若程序语句可以使用三元表达式表示出来,则该程序语句一定可以用 if—else表示,反之则不成立
位运算符
<< 、>> 、>>>、& (与) 、|(或) 、^(异或)
注:位运算符操作的数据都是整型数据
int i = 1; int i1 = i << 3; //i1值为8,将i转换为二进制,进行左移操作,左移3位,相当于*2^3 int x = 16; int x1 = x >> 1; //x1值为8,将x转换为二进制,进行右移操作,右移1位,相当于/2^1
其中& 、| 、^ 操作类似,先将两数转换位二进制类型,对两数二进制每一位进行逻辑操作
>>> 表示无符号右移,对于二进制数用0填补高位
引用数据类型 字符串(String)
每个用双引号括起来的字符串都是String类的一个实例。String属于引用数据类型
String s1 = ""; //""内部可为空,字符char型''中间不能为空 String s2 = "hello";
拼接
Java语言允许使用 + 号连接(拼接)两个字符串
String s1 = "hello"; String s2 = "world"; String s3 = s1 + s2; //print "helloworld"
此外,String类型可与8种基本数据类型进行运算操作,但只能是连接运算
int x = 12; String s1 = "I am"; String s2 = s1 + x; //print "I am12" ,后者x会转换成字符串
拼接运算结果,均为String类型



