Java基础知识(二)

三、运算符

3.1、运算符

  • 可以分成四类:算术运算符、位运算符、关系运算符以及逻辑运算符

3.1.1、赋值运算符

  • ”=“ 例如 int x ;

  • x=10;

3.1.2、 算术运算符

运算符结 果
+加法(也是一元加号)
-减法(也是一元负号)
*乘法
/除法
%求模/取余
+=加并赋值
-=减并赋值
*=乘并赋值
/=除并赋值
%=求模并赋值
++自增
--自减
3.1.2.1、 算术与赋值复合运算符
	int  a  = 3
	a += 4;  //相当于a = a+4;

(1)对于所有的二元算术运算,都有相应的复合赋值运算符。

(2)复合赋值运算符的效率更高。所以在专业的Java程序中,会经常看到复合赋值运算符。

3.1.2.2、自增与自减

(1)自增运算符将其操作数加1。自减运算符将其操作数减1。

(2)自增与自减分前缀形式与后缀形式。++、--

//前缀形式:
int  i = 10;
int  a = ++ i;  //等同于 i++;  int a = i; 所以a=11, i= 11
//后缀形式:
int j = 10; 
int  b = j++;  //等同于 int b = j;  j++; 所以b=10,j = 11
3.1.2.3 表达式

(1)表达式的概念:由操作数与运算符组成 j++; a+b;

(2)表达式的求值:表达式是有值的,需要注意表达式值的类型

(3)表达式中的类型提升规则:

表达式的类型会自动提升为所有操作数的最大类型。

对于操作数全为非long类型整数的表达式,其类型会自动提升为int。

public class ExpressionDemo {
    public static void main(String[] args) {
        byte b=127;
        short s =10;
        b = (byte) (b+s);
        System.out.println(s);
    }
}
//输出结果
//10

3.1.3、关系运算符

关系运算符也称为比较运算符

运算符结 果
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

(1)关系运算的结果为boolean型数值。

(2)关系运算符最常用于if语句和各种循环语句中的控制表达式。

int n =581;
short s =100;
System.out.println(n>=s);
System.out.println(n==s);
System.out.println(n!=s);
// true
//false
//true

3.1.4 逻辑运算符

布尔逻辑运算符,只能操作boolean型操作数。

运算符结 果
&&逻辑与(短路形式)
||逻辑或(短路形式)
^逻辑异或
!逻辑一元非
&逻辑与
|逻辑或

布尔逻辑运算规则:

操作数逻辑运算及结果
ABA || BA && B!AA ^ B
falsefalsefalsefalsetruefalse
truefalsetruefalsefalsetrue
falsetruetruefalsetruetrue
truetruetruetruefalsefalse

运算规则说明:

对于||,只要有一个操作数为true,则结果为true;

对于&&,只要有一个操作数为false,则结果为false。

对于^,两个操作数不同,则结果为true,否则结果为false。

System.out.println(true&&true);
System.out.println(true&&false);
System.out.println(false&&true);
System.out.println(false&&false);
System.out.println("====================");
System.out.println(true||true);
System.out.println(true||false);
System.out.println(false||true);
System.out.println(false||false);
System.out.println("====================");
System.out.println(true^true);
System.out.println(true^false);
System.out.println(false^true);
System.out.println(false^false);
​
true
false
false
false
====================
true
true
true
false
====================
false
true
true
false

注意:&&和||,

这两个运算符是所谓短路形式的逻辑运算符。假如单独根据左操作数就能确定表达式的结果,那么就不会计算右操作数的值。

int a = 5;
int b = 6;
if(a < b |++a == b)
{
    System.out.println(a);
}
//运算结果6
int a = 5;
int b = 6;
if(a < b ||++a == b)
{
    System.out.println(a);
}
//运算结果5

3.1.5 位运算符(了解)

3.1.5.1 左移与右移

1000 0010

(1)左移<<:低位补0,左移动1位,相当于乘以2

(2)右移>>:高位补符号位,右移1位,相当于除以2

(3)无符号右移>>>:高位补03.1.5.2 位逻辑运算符

运算符结 果
~按位一元取反
&按位与
|按位或
^按位异或

运算规则:

操作数位运算及结果
ABA | BA & BA ^ B~A
000001
101010
011011
111100

注意:

&和|,如果操作数为boolean类型,则为逻辑运算符,如果操作数为整数则为位运算符。通常将&和|作为位运算符。

3.1.5.3 位运算符与赋值运算符的结合

例如:a >>= 4; 相当于a = a >> 4;

3.1.6 三目运算符(三元)

运算规则

表达式1 ? 表达式2: 表达式3

语法:表达式1?表达式2:表达式3

表达式1必须是boolean类型的表达式

如果结果为true,那么取表达式2的结果

如果结果为false,那么取表达式3的结果

int c = 666;
int d = 777;
int e = c > d ? 888 : 999 ;
System.out.println(e);
//输出结果999

int c = 666;
int d = 777;
int e = c < d ? 888 : 999 ;
System.out.println(e);
//输出结果888

大概顺序:算术运算符>移位运算符>关系运算符>逻辑运算符>赋值运算符

圆括号会提升其内部操作数的优先级。为了得到所期望的结果,这通常是必需的。圆括号(不管是否冗余)不会降低程序的性能。所以,为了减少模糊性而添加圆括号,不会对程序造成负面影响。

int c = 666;
int d = 777;
System.out.println(""+(c + d));
//输出结果1443

3.2流程控制-选择结构

顺序结构 一行一行顺序执行

选择结构 有选择的执行

循环结构 一行按照循环条件执行

选择结构是通过分支语句实现的,分支语句有两种。

3.2.1、 if-else

  1. if语句的三种形式

        if(a < b ||++a == b)
        {
            System.out.println(a);
        }
        ----------------------------
        if (i>s){
            System.out.println("最大的数是:"+i);
        }else {
            System.out.println("最大的数是:"+s);
        }
        -----------------------------
        if (i == 100){
            System.out.println("满分哦");
        }else if(i >90 ){
            System.out.println("不错呦,优秀");
        }else if(i >80){
            System.out.println("继续加油,还不错");
        }else if(i >= 60){
            System.out.println("要努力喽,不然挂科啦");
        }else if(i < 60) {
            System.out.println("恭喜你,我们下次再见");
        }

注意: else 不能单独使用,要和if配对使用 if else 都可以后面不跟{},但是只能控制下面的一行代码

3.3.2、多分支语句switch

3.3.2.1 switch语句的结构
switch (str){
    case "+":
        System.out.println("a+b="+(a + b));
        break;
    case "-":
        System.out.println("a-b="+(a - b));
        break;
    case "*":
        System.out.println("a*b="+(a * b));
        break;
    case "/":
        System.out.println("a/c="+(a / b));
        break;
    case "%":
        System.out.println("a%b="+(a % b));
        break;
}
3.3.2.2 switch语句需要注意的问题

(1)switch(expression)中expression的结果必须是byte,short,char,int中的一种。 新增:枚举类型、String 不可以是long (2)在同一个switch语句中,两个case常量不允许具有相同的值 (3)每个case语句中需要加上break;语句。如果遗漏了break,则会继续进入到下一个case。 (4)可以省略default语句。 (5)default语句通常放在末尾,可以放在开始,中间或者末尾位置。

3.3.2.4、if-else与Switch的区别

(1)switch语句只能进行相等性测试,这一点与if语句不同,if语句可以对任何类型的布尔表达式进行求值。即,switch只查看表达式的值是否和某个case常量相匹配。 (2)相对于一系列嵌套的if语句,switch语句通常效率更高。 (3) switch能做的分支,if...else...一定能做。但是if...else...能做的分支,seitch不一定能做。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值