zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java基础—第二章、运算符

JAVA基础 运算符 第二章
2023-09-11 14:21:22 时间

目录

第一节、算术运算

一.除法运算符

 二.取模运算符

三.自增和自减运算符  

第二节、关系运算符

第三节、逻辑运算符

一.逻辑运算&&、||、!

二.使用逻辑运算符

三.“短路逻辑”——混合表达式

第四节、赋值运算

一.赋值运算符“=”

二.复合赋值运算符

第五节、字符串连接符

第六节、三目运算符(重点)

一.使用三目运算符(条件运算符)

二.三目的嵌套



第一节、算术运算

     java语言中常用的算术运算符有5种,如下

常用算术运算符
运算符含义
+加法运算
-减法运算
*乘法运算
/除法运算
%取模运算

 其中+、-、*运算符都容易理解和数学中的相同,需要注意的是除法和取模运算。

一.除法运算符

        在除法运算中,0作为除数的情况,会根据类型的不同做处理。对于整型数据,它会出现异常。但对于浮点数类型,将会得到一个无穷大值或者NaN,不建议用0作为除数。

        注意,当除法运算的两边操作数,均为整型时,结果是取整,去掉小数部分。

int  a;
a = 5 / 3;    //1
system.out.println(a);

 二.取模运算符

       取余(取模),意为取余数,可用于整数、char,也可用于浮点数,但结果也将是浮点数。

123.5 % 4    //结果为  3.5
123 % 4  //结果为3

取模运算可以用于判断奇偶数,素数,最大公约数等

//奇偶数判断
int  num = 22;
if(num % 2 ==0)   //对2取模,余数为0,为偶数,否则为奇数
    System.out.println(num+"是偶数");
else
    System.out.println(num+"是奇数");

三.自增和自减运算符  

     前缀自增自减:    先自增自减后运算(先变后用)
     后缀自增自减:    先运算后自增自减(先用后变)
int  x = 5, y = 20;
int  z1 = x ++;      //后缀、先使用,z1 = 5,x = 6;
int  z2 = ++ y;      //前缀、先自增,z2 = 21,y = 21;

System.out.println(x);     //6
System.out.println(y);     //21

System.out.println(z1);    //5
System.out.println(z2);    //21

结论:

  •          变量无论是前置还是后置运算其结果一定为+1;
  •          只在使用它或者关于它表达式时候考虑其前置和后置规则。

第二节、关系运算符

           包含: >    <    <=     >=     ==      !=

关系运算符
运算符名称示例功能
<小于a < ba小于b时返回true,否则返回false
<=小于等于a <= ba小于等于b时返回true,否则返回false
>大于a > ba大于b时返回true,否则返回false
>=大于等于a >= ba大于等于b时返回true,否则返回false
==等于a == ba等于b时返回true,否则返回false
!=不等于a != ba不等于b时返回true,否则返回false

其中 >    <    <=     >=  四个比较好理解一点。 ==   、 !=应当注意。比较结果为逻辑值false 或true

  •          == 代表精确比较是否相等,注意要和赋值号=区分开
  •          前四种关系运算符的优先级相同,后两种相同,前四种高于后两种
  •         关系运算符的优先级低于算术运算符
  •         关系运算符的优先级高于赋值运算符
  •         前四种关系运算符的操作数不能是Boolean类型,后两种可以。
int  num1 = 12;
int  num2 = 21;

num1 > num2    //false
num1 < num2    //true
num1 >= num2   //false
num1 <= num2   //true
num1 == num2   //false
num1 != num2   //true

第三节、逻辑运算符

       逻辑运算符也称为布尔运算符,主要包括! 、 & 、 | 、^ 、&&、||,逻辑运算符的运算结果也是布尔型值true或false,参与逻辑运算的数据也是布尔类型。
逻辑运算符的种类和功能说明
符号名称功能说明
! 只操作一个数据,对数据取反
&两个条件同时为true才为true,否则为false
|

两个条件有一个为true,则为true,否则为false

^异或

两个条件真值不同,则异或结果为true,否则为false

&&短路与同&,两个条件同时为真,结果为true,否则为false
||短路或两个条件有一个为true则为true,否则为false

特别说明:

           短路与&&和短路||是按照“短路”的方式进行求值的,也就是说,如果第一个表达式可以判断出整个表达式的值,就不进行后面的运算了。

一.逻辑运算&&、||、!

              这里用0代表false,1代表true

逻辑运算&&、||、!
变量ab变量ba && ba || b!a
 00001
 01011
 10010
 11110
     结论: 与运算:一假必假 或运算:一真必真

二.使用逻辑运算符

//使用逻辑运算符
//与
int s = 80;
boolean res1 = s >= 70 && s <= 90;   //true
boolean res2 = s <= 60 && s >= 50;   //false

//或
boolean f = fasle;
int i = 100; 
boolean res3 = f || (i >= 0 && i < 10);   //false
boolean res4 = f || (i >= 50 &&  i <= 100);  //true

//非
boolean res5 = ! f ;  //true
boolean res6 =  f || !(i < 10)  //true

三.“短路逻辑”——混合表达式

        如果第一个表达式可以判断出整个表达式的值,就不进行后面的运算了。结合前面的自增自减举例:

int a = 56;
 
boolean a1 = a > 60 && a ++  < 90;   //flase 
System.out.println(a1);  

问题1:问a的值是多少?

             a的值最终为56,因为与运算的操作数中,第一个表达式 a  > 60为false,&&运算,一假则假,后面的表达式就不用算了。

int a = 56;
 
a1 = a < 60 || ++ a > 30;   //true
System.out.println(a1); 

问题2:问a的值是否发生变化?

              a的值最终没有变化还是为56,因为或运算的操作数中,第一个表达式 a  < 60 为true,||运算,一真则真,后面的表达式就不用算了。

结论:
  • 与运算: 一假必假 指:当第一个表达式为假时后面的表达式就不会再取运算了
  • 或运算: 一真必真 指:当第一表达式为真时后面的表示式不参与运算

第四节、赋值运算

一.赋值运算符“=”

         赋值运算符一定是从右边表达式看向左边。int   i  =  1;表示:将1赋值给整型变量 i。
 
int x,y,c;
x = y = c = 100;
//将100赋值给c --> b = (c = 100)运算符

二.复合赋值运算符

                           +=、-=、*=、/=、%=;同算术运算法的操作,知识多了一个赋值。

复合赋值运算符

运算符 表达式(a = 10) 计算 结果 +=  a  += 5 a = a + 5 15 -=  a  -= 5 a = a - 5 5 *=  a *=  5 a = a * 5 20 /=  a  /=  5 a = a  / 5 2 %= a  %= 5  a = a % 5 0

第五节、字符串连接符

      “+” 可以实现字符串的连接。也可以实现字符串与其他类型相连接。
         字符串类型:String
  • 双引号括起来的内容就是字符串的直接量
    
        //1.字符串类型:String
        String s = "可以任意写,写什么都对";//双引号括起来的内容就是字符串的直接量

        //字符串连接符+
        int score = 85;
        String  result = "该学生的分数为:"+score;   //连接
        System.out.println(score);
        System.out.println(result);

        //2.字符串拼接符的扩展
        String res = "";

        System.out.println(res + 100);// 100
        System.out.println(100 + res);//100
        System.out.println(100 + res + 200);//100 200
        System.out.println(100 + 200 + res);//300
        System.out.println(res + 100 + 200);// 300
        System.out.println(100 + 200 + res + 300 + 400);//300 300400
结论:
  • 1. 主要看字符串的位置,字符串与其他类型或字符串类型,那么“+”一定为拼接
  • 2. 如果是同类型先相加,那么“+”为运算符,再去拼接其他字符串。

第六节、三目运算符(重点)

一.使用三目运算符(条件运算符)

     格式:
              表达式   ? 表达式1  :    表达式2   ;
     
    表达式为true运行表达式1,否则运行表达式2。
String s = 65 > 60  ? "及格" : "不及格";//及格

二.三目的嵌套

         三目运算符可以嵌套使用,表达式1和表达式2的结果可以为嵌套三目的boolean表达式。
 

         

int a = -3;
String r = a > 0 ? "正数" : (a == 0 ? "0" : "负数");//负数

3.练习—接受用户输入年份,判断是否为闰年。
闰年的条件:年份能被4整除,且不能被100整除的是闰年 或者年份能被400整除。
明天接着更练习3和后面的内容吧。。。