一,类型转换
1:隐式转换
将数据类型中,取值范围小的数据,给取值范围大的类型复值,可直接复值
int a = 10;
double b = a;
数据类型范围从小到大
2:强制转换
将一个表示数据范围大的数值变量,赋值给一个范围小的变量。
格式: 目标数据类型 变量名 = (目标数据类型)值或者变量。
注意:强制转换有可能发生精度损失。
3:类型转换案例
Java存在常量优化机制:
byte d = 3+4;
这里的3和4是两个常量,Java存在常量优化机制,全在编译的时候就会让3和4进行相加,然后回自动判断7是否在byte的取值范围呢
不在范围内; 编译出错
在范围内:通过编译
小的转大的可以直接转,大的转小的不可以直接装,如果非要转,需要强制转换。
二,运算符
算数运算符
(+,-,*,/,%)整数与整数相除只会的到整数,小数相除才会是小数;% 是取余数。
++a与a++
++a是a先加一再进行运算
a++是a先运算再加一
如果一个int类型的数字加一个char类型的数字,char类型的数字会根据ASCLL将数字转化程int类型的字节数,再进行相加。
赋值运算符
赋值运算符:=,
扩展赋值运算符:+=,-=,*=,/=
扩展赋值运算符,底层会自带强转。
short a = 1;
a+=1; // a+=1,相当于 a = (short)(a+1);
System.out.pirntln(a);
//结果
2
两个变量进行交换数值的时候,需要定义一个中间变量
int a = 4 ;
int b = 5 ;
int c ;
c = a;
a = b;
b = c;
System.out.println(a);
System.out.println(b);
结果:
5
4
关系运算符(比较运算符)
>,<,==,>=,<=,!=;
关系运算符返回的结果都是true和false。
字符的’+‘操作
int a = 1;
char b = 'a';
System.out.println(a+b);
/结果:98
char类型转换为int类型的时候直接转换为ASCLL中的对应的字节数字,再与int类型的数值进行加减。
字符串的+操作
字符串可以使用 + ,跟【任意数据类型】拼接。
转义字符表
逻辑运算符
& , | , && , || , ! , ^
& (与) :并且 ,遇false则false ,只有两边都为true,结果才为true。
| (或):或者,遇true则true, 只有两边都为false,结果才为false。
!(非):取反,
^ (异或):两边相同为false,不同为true。
&& :&&具有短路效果,如果左边为false,那么右边的语句就不执行了。
如果左边为true,右边还会执行:
& : 无论左边为true或者false,右边都会执行。
||:||具有短路效果,如果左边为true,那么右边不执行了。
如果左边为false,右边还会执行。
|: 无论两边为true或者false,右边都会执行。
运算符两边链接的都是布尔型的操作数,结果也是布尔型,要么是true要么是false。
三元运算符(条件运算符)
格式: 关系表达式? 表达式1:表达式2。
首先计算关系表达式的值,如果为true,取表达式1的值,如果为false取表达式2的值。