04.表达式&类型转换&运算符


1.表达式

1.1.概念:

由常量、变量、运算符、括号()组成的一个**算式\,按照一定的运算规则计算出结果值.

1.2.括号可以提高运算的优先级

1.3.特点

  • 1)计算出的结果值可以直接使用,也可以通过一个变量保存起来然后使用
  • 2)表达式的结果值的类型取表达式中数据类型精度最高的类型

2.类型转换

2.1.自动转换

转换图

1)定义:小的数据类型转换大的数据类型【存储空间】

2)在Java中,boolean类型与所有其他7种类型都不能进行转换

3)byte与char 不能自动转换 char与short之间也不能自动转换,因为数据范围的问题

4)如果2个操作数(包括byte,short,char,int),都将会转换为int类型,且结果也为int(自动向上转型)

5)long float double只要两个操作数中—有一个为以上类型,[另一个就会被转换成相应类型],并且结果也为该类型

6)例子:

 /*细节1
	 *如果2个操作数(包括byte,short,char,int),都将会转换为int类型,且结果也为int(自动                    向上转型)
	 * */
    byte b1 = 10;
	byte b2 = 20;
	int sum = b1+b2;//累加之后,类型自动提升int,左边要用int接受
	char c = 'A';//65
	//b1+b2
	sum = b1+c;//c 变成编码值65 然后参与运算
	System.out.println(sum);
	/*long  float  double只要两个操作数中---有一个为以上类型,[另一个就会被转换成相应类型],并且结果也为该类型
	 */
	float ng = 10L;
	int b = 55;
    double ss = ng+b;

2.2.强制类型转换

  • 1)定义:大数据类型转小数据类型[存储空间大小]

  • 2)语法:数据类型 变量名 = (数据类型)值/变量名;//值可能是更高的类型

  • 3)高转低会导致精度丢失,不同类型的强制转换,可能会导致精度的下降.

  • 4)实际开发中:应该要知道被强制转换的数据,是在一个已知的范围;

  • 5)例如:

int i1 = 10;
int i2 = 15;
float f = (float)((i1+i2)*1.2);
f = (i1 + i2)*(float)1.2;

3.运算符

3.1.算数运算符

		加法(+)减法(-)乘法 (*) 除法(/) 取模(%)

特例
1)0.0/0.0 结果是NaN ,任何的NaN都不等于自己(面试题)

2)1.0/0.0 结果:Infinity,表示无穷大

3.2.自增自减运算符(难度)

自增 ++ 自减 –

1)自增自减只能够用于变量,不能用于常量

2)自增自减运算的优先级 比 算术运算符 高

3)i++ //++ 在右边,先赋值在++
4)++i //++ 在左边,先++在赋值

 int i = 15;
	i = i++;
	System.out.println("i = i++的值:"+i);//15
	i = ++i;
	System.out.println("i = ++i的值:"+i);//16

3.3.赋值运算符

符号:= += -= *= /= %=

从右到左,把符号右边的值赋值到左边的变量中

i+= 50;//只能看成是这个样子 i = i+50; 常用 其他的符号和 += 用法类似

3.4.比较运算符

符号: == != > < >= <=
比较运算的结果是一个布尔类型的值(true 或false);

3.5.逻辑运算符

1)逻辑运算符符号:& | && || ^ !

2)用来连接布尔类型的两个值或表达式,最终结果也是布尔类型

3)应用于多个条件的组合判断。

4)规则

运算符运算结果
&两边都为true ,结果为true
竖线只要有一边为true,结果为true
&&两边都为true ,结果为true
双竖线只要有一边为true,结果为true
^两边不一样,结果为true ,否则为false,举个例子打印一下
逻辑非

5)&& 逻辑与 并且;两边同时为true,结果才为true;短路:前面为false了后面没有必要计算了。

6)|| 逻辑或 或者;只要一边、为true,结果就为true;短路:前面为true了后面没有必要计算

7)验证示例:

System.out.println(10 > 66 && 1/0 == 0);//短路行为,前面为false了,后面不计算了,所以没有报错
System.out.println(10 < 66 || 1/0 == 0);//短路行为,前面为true了,后面就不计算了,所以1/0没有报错。

3.6.位运算(了解)

1)计算机磁盘二进制位的运算,二进制数据的运算,首先需要将数据转换位二进制以后再进行运算

2)位运算符号:& | ^ ~ << >>> >>

3)<< : 向左位移动,例如1<<3 结果8

4)‘>>’: 向右位移动,例如8>>2

5)‘>>>’: 无符号向右移动

3.7.三目运算

由问号?及冒号:分割的三个表达式,组成的一个表达式如X ? Y : Z ;按照一定规则进行运算的式子,称为表达式;该表达式具有一个结果值:
X :布尔类型的值或者结果为布尔类型的表达式
Y Z :一般来说数据类型相同的值或者表达式

运算规则:

  • X 为true,结果值是Y
  • X为false,结果值是X
    -X Y Z 都可以是表达式

示例:

   int a =90;
	int b =20;
	int max = a > b ? a+10:b;
   System.out.println(max);//100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望舒@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值