目录
1.数据类型转换
数据类型转换分为自动类型转换和强类型转换。
自动类型转换:整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级,如下:
数据类型转换必须满足如下规则:
1. 不能对boolean类型进行类型转换。
2. 不能把对象类型转换成不相关类的对象。
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4. 转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -4
强制类型转换:
1. 条件是转换的数据类型必须是兼容的。
2. 格式:(type)value type是要强制类型转换后的数据类型 实例:
public class test{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
运行结果:
int强制类型转换为byte后的值等于123
2.运算符
Java提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符。
算术运算符:+(加法),-(减法),*(乘法),/(除法),%(取余),++(自增),--(自减)
注意事项:
2.取余操作时,被除数需小于等于除数,否侧%操作结果将等于其本身
3.a++/a--与++a/--a运算结果不相同。前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。
测试用例如下:
结果如下:
关系运算符:==(等于),!=(不等于),>(大于),<(小于),<=(小于等于),>=(大于等于)
位运算符:Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
操作符 |
描述 |
例子 |
& |
如果相对应位都是1,则结果为1,否则为0 |
(A&B),得到12,即0000 1100 |
| |
如果相对应位都是 0,则结果为 0,否则为 1 |
(A | B)得到61,即 0011 1101 |
^ |
如果相对应位值相同,则结果为0,否则为1 |
(A ^ B)得到49,即 0011 0001 |
〜 |
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
(〜A)得到-61,即1100 0011 |
<< |
按位左移运算符。左操作数按位左移右操作数指定的位数。 |
A << 2得到240,即 1111 0000 |
>> |
按位右移运算符。左操作数按位右移右操作数指定的位数。 |
A >> 2得到15即 1111 |
>>> |
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
A>>>2得到15即0000 1111 |
逻辑运算符:&&(并且),||(或者),!(非)
逻辑运算符一般用于作为判断条件,测试用例如下:
结果如下:
赋值运算符:基本的赋值运算符为=,可扩展为+=,-=,/=,*=,%=,即将运算符两边的结果进行运算操作,测试用例如下:
输出结果如下:
条件运算符:条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
结果如下:
运算符优先级:当多个运算符出现在一个表达式中,java运算符具有一定的优先级,如下:
三元运算符 —> 算术运算符 —> 逻辑运算符 —> 条件运算符 —> 逻辑运算符