变量:在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在内存单元中,每个内存单元都用一个标识符标识,这些用于标识内存单元的标识符就称为变量,内存单元中存储的数据就是变量的值。
在Java中,变量的数据类型分为两种,即基本数据类型和引用数据类型。Java中的所有数据类型如下。
整型类型变量:用来存储整数数值,即没有小数部分的值。整数类型分为4种不同的类型,分别是字节型(byte)、短整型(short)、整型(int)和长整型(long),4种类型所占存储空间的大小以及取值范围(变量存储的值不能超出的范围)如下表所示。
类型 | 占用空间 | 取值范围 |
---|---|---|
byte | 8位(1个字节) | -27 ~ 27-1 |
short | 16位(2个字节) | -215 ~ 215-1 |
int | 32位(4个字节) | -231 ~ 231-1 |
long | 64位(8个字节) | -263 ~ 263-1 |
注意:在为一个long类型的变量赋值时,所赋值的后面要加上字母L(或小写l),说明赋值为long类型。如果赋的值未超出int类型的取值范围,则可以省略字母L(或小写l)。
浮点数类型变量:“浮点数类型变量”用于存储小数数值。double类型所表示的浮点数比float类型更精确,两种浮点数所占存储空间的大小以及取值范围(变量存储的值不能超出的范围)如表所示。
类型名 | 占用空间 | 取值范围 |
---|---|---|
float | 32位(4个字节) | 1.4E-45 ~ 3.4E+38,-3.4E+38 ~ -1.4E-45 |
double | 64位(8个字节) | 4.9E-324 ~ 1.7E+308, -1.7E+308 ~ -4.9E-324 |
float类型变量值后面必须要加上F或f,double类型变量值后面可以加上D或d,也可以不加。也可以为一个浮点数类型变量赋予一个整数数值,JVM会自动将整数数值转换为浮点类型的值。
字符类型变量:在Java中,字符型变量用char表示,用于存储一个单一字符。Java中每个char类型的字符变量都会占用2个字节。在给char类型的变量赋值时,需要用一对英文半角格式的单引号(’ ‘)把字符括起来,如’a’。
布尔类型变量:在Java中,使用boolean定义布尔型变量,布尔型变量只有true和false两个值。
自动类型转换:自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明,由编译器自动完成。自动类型转换必须同时满足以下两个条件:
(1)两种数据类型彼此兼容。
(2)目标类型的取值范围大于源类型的取值范围。
自动类型转换主要有以下几种情况:
(1)整数类型之间可以实现转换。
例如,byte类型的数据可以赋值给short、int、long类型的变量;short、char类型的数据可以赋值给int、long类型的变量;int类型的数据可以赋值给long类型的变量。
(2)整数类型转换为float类型。
例如,byte、char、short、int类型的数据可以赋值给float类型的变量。
(3)其他类型转换为double类型。
例如,byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。
强制类型转换:强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。
注意:在对变量进行强制类型转换时,如果将取值范围较大的数据类型强制转换为取值范
围较小的数据类型,如将一个int类型的数转为byte类型,极容易造成数据精度的丢失。
表达式类型自动提升:所谓表达式是指由变量和运算符组成的一个算式。变量在表达式中进行运算时,可能发生自动类型转换,这就是表达式数据类型的自动提升。例如,一个byte类型的变量在运算期间类型会自动提升为int类型。
变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。
如果大家觉得变量的作用域不好区分,可以简记为一个变量的作用域通常是他所在的一个大括号的内部
算数运算符及用法
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
% | 取模(即算术中的求余数) | 7%5 | 2 |
++ | 自增(前) | a=2;b=++a; | a=3;b=3; |
++ | 自增(后) | a=2;b=a++; | a=3;b=2; |
– | 自减(前) | a=2;b=–a; | a=1;b=1; |
– | 自减(后) | a=2;b=a–; | a=1;b=2; |
(1)在进行自增(++)和自减(–)运算时,如果运算符++或–放在操作数的前面,则先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面,则先进行其他运算再进行自增或自减运算。
(2)在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。
(3)在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
赋值运算符:赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。Java中的赋值运算符及用法具体如下表所示。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=3;b=2; | a=3;b=2; |
+= | 加等于 | a=3;b=2;a+=b; | a=5;b=2; |
-= | 减等于 | a=3;b=2;a-=b; | a=1;b=2; |
*= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
/= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
%= | 模等于 | a=3;b=2;a%=b; | a=1;b=2; |
(1)在Java中可以通过一条赋值语句对多个变量进行赋值,具体示例如下。
int x, y, z;
x = y = z = 5;// 为三个变量同时赋值
(2)除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,表达式首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可以此类推。
比较运算符:比较运算符用于对两个数值或变量进行比较,比较运算结果是一个布尔值,即true或false。Java中的比较运算符及用法具体如下表所示。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 等于 | 4 == 4 | false |
!= | 不等于 | 4 != 3 | true |
< | 小于 | 4 < 3 | false |
> | 大于 | 4 > 3 | true |
<= | 小于或等于 | 4 <= 3 | false |
>= | 大于或等于 | 4 >= 3 | true |
逻辑运算符:逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔值。主要包括& 、|、 ^ 、!、&&、||。
复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,通常把这种顺序称作运算符的优先级。运算符的优先级如下表所示。
优先级 | 运算符 |
---|---|
1 | . [] () |
2 | ++ – ~ ! (数据类型) |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= |
7 | == != |
优先级 | 运算符 |
---|---|
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= |= |
如果以上分享对您有帮助,欢迎关注公众号获取更多资料: