JavaSE - 数据类型与运算符(2)

二、运算符

1.自增自减(++  --)

a++ 、a-- :先用再自增 / 自减

++a 、--a :先自增 / 自减再用

int a = 1;
int b = 2;
int c;
int d;
int e;
int f;

c = a++;
d = a--;
e = ++b;
f = --b;

结果:c = 1, d = 2, e = 3, f = 2

2.三目运算符

(布尔表达式)?表达式1:表达式2;

(x > 5) ? x = 1 : x = 2;

如果 (x>5) 为真,则x = 1,否则x = 2.

3.逻辑运算符(|、||、&、&&)

(1)表示逻辑或:|     ||

在 if 语句中使用 “ | ” 时,表示多个条件都需要判断,即便有表达式返回true,剩余条件仍需要判断。

短路非:使用 “ || ” ,只要有条件返回true,剩余条件不再判断,整体返回true。

(2)表示逻辑与:&     &&

短路与:使用 “ && ” ,只要有条件返回false,剩余条件不再判断,整体返回false

在java中,逻辑运算符就使用短路非 “ || ” 和短路与 “ && ” 

4.位运算符(&、|、^、~、>>、<<)

一般用于密码学

三、数据类型转换

当使用+、-、*、/、% 运算符时,有如下规则:

只要两个操作数中的一个是 double,那么另一个也是 double 类型,结果也是 double 类型;

只要两个操作数中的一个是 float,那么另一个也是 float 类型,结果也是 float 类型;

只要两个操作数中的一个是 long,那么另一个也是 long 类型,结果也是 long 类型;

否则(操作数为 byte、short、int、char),两个操作数都会转换为 int 型,结果也是 int 型。

但是 final 修饰的类型不会变。

public class Work{
    public static void main(String[] args){
        byte b1 = 1, b2 = 2, b3, b6, b8;
        final byte b4 = 4, b5 = 6, b7 = 9;
        b3 = b1 + b2;    //语句1
        b6 = b4 + b5;    //语句2
        b8 = b1 + b4;    //语句3
        b7 = b2 + b5;    //语句4
        System.out.println(b3+b6);
    }
}

结果:语句1,语句3,语句4 是错的,只有语句2 是对的,结果输出为0
分析:
语句1:数值常量都是int型,所以b1,b2提升为int型,结果也是int型,而b3是byte型,int转byte可能会丢失数据;
语句2:b4,b5有final修饰,所以仍然是byte型,结果也是byte型,b6就是byte型,不存在强转,不会丢失数据;
语句3:b1是int型,b4是byte型,运算时两个操作数都提升为int型,所以结果为int型,而b8是byte型,int转byte型可能会丢失数据;
语句4:b2是int型,b5是byte型,运算时两个操作数都提升为int型,所以结果为int型,而b7是byte型,int转byte型可能会丢失数据;
输出语句:因为整数型的默认值为0,所以b3+b6为0,输出结果为0

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值