1.变量
变量的概念:在程序执行过程中,其值有课能发生改变的量(数据)。
语法:数据类型 变量名=数据值:
数据类型大小的排序:
byte(127) --> short(32767)(char(65535)) --> int --> long --> float--> double
1.1数据类型:
整数类型:
类型名称 | 占用的存储空间 |
byte | 1字节(8位) |
short | 2字节(16位) |
int | 4字节(32位) |
long | 8字节(64位) |
浮点类型(小数类型):
类型名称 | 占用的存储空间 |
float | 4字节(32位) |
double | 8字节(64位) |
字符类型:
类型名称 | 占用的存储空间 |
char | 2字节(16位) |
字符串类型:
类型名称 | 占用的存储空间 |
String | 40字节 |
布尔类型:
类型名称 | 占用的存储空间 | 值 |
boolean | 1字节(8位) | true/false |
1.2类型的转换:
自动类型的转换:常见于取值范围小的数据类型转型为取值范围大的数据类型,就是一个直接的赋值操作,不需要进行任何额外的操作。例如: byte转型为int。
强制类型的转换:
在进行赋值的时候,需要额外的操作来辅助完成,常见于取值范围大的数据类型向取值范围小的数据类型转型。
-
注意:强制转换有可能出现精度损失或溢出
-
语法: 小范围类型 变量 = (小范围类型) 大范围变量;
int a = 100;
int b = 200;
long c = a + b;//(自动转换) 自动将int转换成longint m = 10;
byte n = (byte)m;//(强制转换) int的10转成了byte的10
long num = 1024L * 1024*1024*4;
int j = (int) num;//会产生溢出double pi = 3.141592653589793;
float f = (float) pi;//会造成精度损失
1.3常用运算符
++ --:
自增、自减运算符,对一个变量进行自增1、自减1。
%:取余 ,5%3=2。
int a = 10;
System.out.println(a++); // 10, a = 11
System.out.println(--a); // 10, a = 10
System.out.println(++a); // 11, a = 11
System.out.println(a--); // 11, a = 10
System.out.println(a); // 10
1.4赋值运算符
=
是一个赋值运算符,将等号右边的值给左边的变量进行赋值。+= -= *= /= %=
将一个变量,在现有值的基础上,对一个数字进行运算
a += 3; // a = a + 3;
a -= 3; // a = a - 3;
a *= 3; // a = a * 3;
a /= 3; // a = a / 3;
a %= 3; // a = a % 3;
1.5关系运算符
对两个数据进行大小比较的运算
> < >= <= == !=
关系运算的结果一定是 boolean 类型
1.6逻辑运算符
对两个boolean类型的变量或者表达式,进行的运算
& | ! ^
&:与,两真即为真,有任意一个为假,结果就是假。
|:或,两假即为假,有任意一个为真,结果就是真。
!:非,非真即假,非假即真。
^:异或,两个相同为假,两个不同为真。&&:短路与, ||:短路或。
短路操作:如果在进行逻辑运算的时候,前半部分的内容可以决定最终的结果,则后半部分不参与运算。
以后在使用逻辑运算的时候,如果没有特殊的需求,尽量使用短路操作。
1.7三元运算符 (三目运算符,条件运算符)
语法:
boolean变量或者boolean结果的表达式?值1:值2
规则:
如果问号前面的boolean是true,整体的结果是值1;
如果问号前面的boolean是false,整体的结果是值2;
1.8 运算符的优先级
运算符的分类:
运算符根据操作数的不同,可以分为:一元运算符、二元运算符、三元运算符。
一元运算符:只能操作一个操作数, ++ -- ! ~ + - (此时的+和-代表的是正负)
二元运算符:只能操作两个操作数,
三元运算符:只能操作三个操作数,三目运算符。
运算符的优先级:
1. 一元运算符 > 二元运算符 > 三元运算符
2. 算术运算:乘除模 > 加减
3. 逻辑运算:与 > 或
4. 赋值运算符的优先级是最低的
5. 小括号的优先级是最高的