Java入门第一章——编程语言基础:运算符

运算符

1.算数运算符

符号意思
+求和
-
*
/
%取模【求余数】
++自增1
自减1

注:一个表达式中有多个运算符,运算符有优先级,若不确定加小括号。没必要专门记忆运算符优先级

public	class	Operator{
    public	static void main(String[] args){
        int i = 10;
        int j = 3;
        System.out.println( i + j);  //13
        System.out.println( i - j);  //7
        System.out.println( i * j);  //30
        System.out.println( i / j);  //3
        System.out.println( i % j);  //1
        
        //关于自增自减
        int k = 10;
        //++运算符可以单独出现在变量后面,也可以单独出现在变量前面。
        k++; 
        System.out.println(k); //11
        
        int y = 10;
        ++y;
        System.out.println(y);//11
        
        //++ 出现在变量后,先使用值,再自增
        int a = 100;
        int b = a ++; //先赋值再运算
        System.out.println(a); //101
        System.out.println(b); //100
        //++ 出现在变量前,先自增,再使用自增后的值
        int c = 100;
        int d = ++c; //先运算,再赋值
        System.out.println(d); //101
        //例子,打印要一条一条打,因为不管自增符号在前还是在后,最后数字都要自增。
        int e = 200;
        System.out.println(e++); //200
        //System.out.println(++e); //201
        //System.out.println(e--); //200
        //System.out.println(--e); //199
    }
}

2.关系运算符

符号意思
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于

注:“=”是赋值运算符,“==”是关系运算符。

*关系运算符运算结果一定是布尔类型:true/false

关系运算符的运算原理:

a > b 比较的时候,比较的是a中保存的值跟b中保存的值之间的大小比较。其中a与b不一定是整数型,也可以是字符型等。

public class Opeartor{
    public static void main(String[] args){
        int a = 10;
        int b = 10;
        System.out.println(a > b);    //false
        System.out.println(a >= b);   // true
        System.out.println(a < b);    //false
        System.out.println(a <= b);   // true
        System.out.println(a == b);   // true
        System.out.println(a != b);   //false
    }
}

3.逻辑运算符(布尔运算符)

符号意思运算
&逻辑与【并且】两边都是true,结果是true
|逻辑或【或者】只要两边有一个是true,结果就是true
!逻辑非取反 " !false “就是true;” !true " 就是 false
^逻辑异或两边不一样,就是true
&&短路与运算跟单个" & "一样
||短路或运算跟单个" | "一样

(1)逻辑运算符两边都是布尔类型,并且逻辑运算符最终运算结果也是布尔类型。

(2)短路与和逻辑与运算结果是相同的,只不过短路与存在短路现象。

(3)短路或和逻辑与运算结果是相同的,只不过短路或存在短路现象。

public class OperatorTest{
    public static void main(String[] args){
        //运算符优先级不确定加小括号
        //与或非
        System.out.println(5 > 3 & 5 > 2);  //true
        System.out.println(5 > 3 & 5 > 6);  //false
        System.out.println(5 > 3 | 5 > 6);  //true
        
        System.out.println(true & true); //true
        System.out.println(true & false); //false
        System.out.println(false & true); //false
        System.out.println(false & false); //false

        System.out.println(true | false);  //true
        System.out.println(false | false); //false

        System.out.println(!true);  // false
        System.out.println(!false);  //true

        System.out.println(true ^ false);  //true
        System.out.println(false ^ false); //false
        System.out.println(true ^ true);   //false
   
    }
}

而逻辑与和短路与二者的区别在于:前者前后两个都运行,后者第一个表达式执行结果为false就停止运行,这种现象被称为短路现象。

public class OperatorTese{
    public static void main(String[] args){
        //逻辑与
        int x = 10;
        int y = 8;
        System.out.println(x < y & ++x <y);
        System.out.println(x); //11

        //短路与
        int x2 = 10;
        int y2 = 8;
        System.out.println(x2 <y2 && ++x2 < y2);
        System.out.println(x2); //10
    }
}

同理,逻辑或和短路或二者区别在于:前者前后两个都运行,后者第一个表达式执行结果为true就停止运行。

        //逻辑或
        int x = 10;
        int y = 8;
        System.out.println(x < y | ++x <y);
        System.out.println(x);  //11

        //短路或
        int x2 = 10;
        int y2 = 8;
        System.out.println(x2 > y2 || ++x2 < y2);
        System.out.println(x2); //10

*从某种角度来说,短路的与(或)更智能。由于后面的表达式可能不执行,所以执行效率较高。这种双符号表示的短路在实际开发中使用较多,更常用。

*但是,在某些特殊业务逻辑当中,要求运算符两边的算子必须全部执行,此时必须用逻辑与(或),不能用短路与(或),使用短路的可能会导致右边表达式不执行。

4.赋值类运算符

(1)基本的赋值运算符:=

(2)扩展的赋值运算符:+=,-=,*=,/=,%=(注:在计算的时候不改变结果类型,在运算的时候采用强制类型转换)

赋值类的运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量。

public class OperatorTest{
    public static void main(String[] args){
        //基本的赋值运算符
        int i = 10;
        System.out.println(i); //10
        i = i + 5;
        System.out.println(i);//15
        
        //扩展的赋值运算符
        i+=5; //等同于 i = (int)(i + 5);   和 i = i + 5 不太一样。
        System.out.println(i); //20
        
        i-=5;//等同于 i = (int)(i - 5);
        System.out.println(i); //15
        
        i *= 2;//等同于 i = (int)(i * 2);
        System.out.println(i); //30
        
        i /= 4;//等同于 i = (int)(i / 4);
        System.out.println(i); //7
        
        i%=2; //等同于 i = (int)(i % 2);
        System.out.println(i); //1
    }
}

但是在某些运算的时候,会转化为默认类型计算,再赋值会导致编译错误。

public class OperatorTest{
    public static void main(String[] args){
        byte b = 5;
        
        //b = b + 5;编译报错,因为b+5在运算的时候会转化为int类型。
        //这里正确语法
        b = (byte) (b+5);
        
        byte x = 5;
        x += 5;// x+=5 等同于 x = (byte) (x + 5)
        System.out.println(x); //10
        
    }
}

5.字符串连接运算符

“+”运算符在java语言中有两个作用:

(1)加法运算,求和。

(2)字符串的连接运算

*当“+”运算符两边的数据都是数字的话一定是做加法运算,只要有一遍是字符串,一定会进行字符串连接运算。并且运算后的结果还是一个字符串类型。

​ 数字 + 数字 ——> 数字【求和】

​ 数字+ “字符串” ——> “字符串”【字符串连接】

(3)在一个表达式当中出现多个“+”,在没有添加小括号的情况下,遵循自左向右的顺序依次运算。

public class OperatorTest{
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        //要求在控制台上输出:10 + 20 = 30 (动态)
        System.out.println(a + " + " + b + " = " + (a+b));
       
    }
}

引用类型String,String是JavaSE当中提供的字符串类型(String.class字节码文件)。

        //int是基本数据类型,i是变量名,10是int类型的字面值
        int i = 10;
        //String是引用类型,s是变量名,“abc"是String类型的字面值        
        String s = "abc";

写一个String变量,起名username,动态打印“登录成功,欢迎username回来"。

public class OperatorTest{
    public static void main(String[] args){
        String username = "coffee add ice"System.out.println("登录成功,欢迎"  + username + "回来");
    }
}

6.三元运算符(三目运算符/条件运算符)

(1)语法规则:

​ 布尔表达式 ? 表达式1 :表达式2

(2)三元运算符的执行原理:如果布尔表达式为true就执行表达式1,为false就执行表达式2。

public class OperatorTest{
    public static void main(String[] args){
        boolean sex = false;
        char c = sex ? '男' : '女';
        System.out.println(c);   //女
        
        sex =true;
        c = sex ?'男' :'女';
        System.out.println(c);   //男
        
        System.out.println(sex ? "男" : '女');
        //可以编译
         
        //但是  c=sex ? "男" : '女'; 这个语句会报错
    }
}

——本章节为个人学习笔记。学习视频为动力节点Java零基础教程视频:动力节点—JAVA零基础教程视频

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值