运算符
1.算数运算符
1.1运算符和表达式
- 
运算符:对常量或者变量进行操作的符号 
- 
表达式:用运算符把常量或者变量连接起来符合Java语法的式子就可以成为表达式。不同运算符连接的表达式体现的是不同类型的表达式。 
- 
举例说明: int a=10; int b=20; int c=a+b; //+是运算符,并且是算术运算符 //a+b 是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
1.2算术运算符
+:加
-:减
*:乘
/:除
%:取余
public class OperatorDemo01 {
    public static void main(String[] args){
        //定义两个变量
        int a=6;
        int b=4;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
        System.out.println(a%b);
        //除法得到的是商,取余得到的是余数
        //整数相除只能得到整数,要想得到小数,必须有浮点数的参与
        System.out.println(6.0/4);
    }
}
1.3字符的“+”操作
'A'值为65,'A'~'Z'是连续的
'a'值为97,'a'~'z'是连续的
'0'值为48,'0'~'9'是连续的
算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:
- 
byte类型,short类型和char类型将被提升到int类型。 
- 
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型, 等级顺序:byte,short,char->int->long->float->double 
public class OperatorDemo02 {
    public static void main(String[] args){
        //定义两个变量
        int i=10;
        char c='A';//'A'的值为65
        char b='a';//'a'的值为97
        char d='0';//'0'的值为48
        System.out.println(i+c);
        System.out.println(i+b);
        System.out.println(i+d);
        //char ch=i+c;报错,i+c会自动类型提升为int类型
        int ch=i+c;
        //int d1=10+13.14;报错,10+13.14会自动类型提升为double类型
        double d1=10+13.14;
    }
}
1.4字符串的“+”操作
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算。
在“+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算符。当连续进行“+”操作时,从左到右逐个执行。
public class OperatorDemo03 {
    public static void main(String[] args){
        System.out.println("it"+"heima");
        System.out.println("itheima"+666);
        System.out.println("666"+"heima");
        System.out.println("黑马"+66+6);
        System.out.println(1+99+"黑马");
    }
}
2.赋值运算符
public class OperatorDemo04 {
    public static void main(String[] args){
        //把10赋值给int类型的变量i
        int i=10;
        System.out.println("i:"+i);
        //+=是把左边和右边的数据做加法操作,结果赋值给左边;+=的操作隐含了强制类型转换
        i+=20;//即i=i+20
        System.out.println("i:"+i);
        //注意
        short s=10;
        s+=20;//不报错,+=包含了强制类型转换,即s=(short)(s+20);
        System.out.println("s:"+s);
        //s=s+20;报错,不兼容的类型,s+20为int类型与原来short类型的s不兼容
        
    }
}
注意事项:
扩展的赋值运算符隐含了强制类型转换
3.自增自减运算符
注意事项:
- 
++ 和--既可以放在变量的后边,也可以放在变量的前面。 
- 
单独使用的时候,++和--无论是放在变量的前边还是后边,结果是一样的。 
- 
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--, 参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。 
public class OperatorDemo05 {
    public static void main(String[] args){
        //定义变量
        int i=10;
        System.out.println("i:"+i);
        //单独使用
        i++;
        System.out.println("i:"+i);
        ++i;
        System.out.println("i:"+i);
        //参与操作使用
        System.out.println("i:"+(++i));//先增后用
        System.out.println("i:"+(i++));//先用后增
        System.out.println("i:"+i);
    }
}
4.关系运算符
注意事项:
关系运算符的结果都是boolean类型,要么事true,要么事false。
千万要区分“==”和“=”
public class OperatorDemo06 {
    public static void main(String[] args){
        //定义变量
        int i=10;
        int j=20;
        int k=10;
        //==
        System.out.println(i==j);
        System.out.println(i==k);
        System.out.println("--------");
        //!=
        System.out.println(i!=j);
        System.out.println(i!=k);
        System.out.println("--------");
        //>
        System.out.println(i>j);
        System.out.println(i>k);
        System.out.println("--------");
        //>=
        System.out.println(i>=j);
        System.out.println(i>=k);
        System.out.println("--------");
        //如果不小心把==写成=,会先赋值再输出
        System.out.println(i=j);
    }
}
5.逻辑运算符
5.1逻辑运算符概述
在数学中,一个数据x,大于3,小于6,我们可以这样来进行表示:3<x<6
在Java中,需要把上面的式子先进行拆解,在进行合并表达。
- 拆解为x>3和x<6
- 合并为x>3&&x<6
&&其实就是一个逻辑运算符。
我们可以说,逻辑运算符,是用来连接关系表达式的运算符。
当然,逻辑运算符也可以连接布尔类型的常量或者变量。
5.2逻辑运算符
public class OperatorDemo07 {
    public static void main(String[] args){
        //定义变量
        int i=10;
        int j=20;
        int k=30;
        //&逻辑与(有false则false)
        System.out.println((i>j)&(i>k));//false&false
        System.out.println((i<j)&(i>k));//true&false
        System.out.println((i>j)&(i<k));//false&true
        System.out.println((i<j)&(i<k));//true&true
        System.out.println("---------");
        //|逻辑或(有true则true)
        System.out.println((i>j)|(i>k));//false&false
        System.out.println((i<j)|(i>k));//true&false
        System.out.println((i>j)|(i<k));//false&true
        System.out.println((i<j)|(i<k));//true&true
        System.out.println("---------");
        //^逻辑异或(相同false,不同true)
        System.out.println((i>j)^(i>k));//false&false
        System.out.println((i<j)^(i>k));//true&false
        System.out.println((i>j)^(i<k));//false&true
        System.out.println((i<j)^(i<k));//true&true
        System.out.println("---------");
        //!逻辑非
        System.out.println(i>j);//false
        System.out.println(!(i>j));//!false
        System.out.println(!!(i>j));//!!false
    }
}
5.3短路逻辑运算符
public class OperatorDemo08 {
    public static void main(String[] args){
        //定义变量
        int i=10;
        int j=20;
        int k=30;
        //&&(有false则false.左边有false右边就不执行了)
        System.out.println((i>j)&&(i>k));//false&&false
        System.out.println((i<j)&&(i>k));//true&&false
        System.out.println((i>j)&&(i<k));//false&&true
        System.out.println((i<j)&&(i<k));//true&&true
        System.out.println("---------");
        //||(有true则true.左边有true右边就不执行了)
        System.out.println((i>j)||(i>k));//false||false
        System.out.println((i<j)||(i>k));//true||false
        System.out.println((i>j)||(i<k));//false||true
        System.out.println((i<j)||(i<k));//true||true
        System.out.println("---------");
        //&和&&
        System.out.println((i++>100)&(j++>100));//false&false
        System.out.println("i1:"+i);
        System.out.println("j1:"+j);
        System.out.println((i++>100)&&(j++>100));//false&false
        System.out.println("i2:"+i);
        System.out.println("j2:"+j);
    }
}
最常用的逻辑运算符:&&,||,!
6.三元运算符
- 格式:关系表达式?表达式1:表达式2;
- 范例:a>b?a:b;
计算规则:
首先计算关系表达式的值,如果值为true,表达式1的值就是运算结果,如果值为false,表达式2的值就是运算结果。
public class OperatorDemo09 {
    public static void main(String[] args){
        //定义两个变量
        int a=10;
        int b=20;
        //获取两个数据中较大的值
        int max=a>b?a:b;
        //输出结果
        System.out.println("max:"+max);
    }
}
案例1:两只老虎
需求:动物园里有两只老虎。已知两只老虎的体重分别为180 kg、200 kg,请用程序实现判断两只老虎的体重是否相同。
public class TwoTiger {
    public static void main(String[] args){
        //定义两个变量保存老虎的体重,单位为kg
        int Tiger1=180;
        int Tiger2=200;
        //用三元运算符实现老虎体重的判断
        boolean a=(Tiger1==Tiger2)?true:false;
        //输出结果
        System.out.println(a);
    }
}
案例2:三个和尚
需求:一座寺庙里住着三个和尚,已知他们的身高分别为150 cm、210 cm、165 cm,请用程序获取这三个和尚的最高身高。
public class ThreeMonks {
    public static void main(String[] args){
        //定义三个变量保存三个和尚的身高,单位为 cm
        int Monk1=150;
        int Monk2=210;
        int Monk3=165;
        //用三元运算符做比较
        int max1=Monk1>Monk2?Monk1:Monk2;
        int max=max1>Monk3?max1:Monk3;
        //输出结果
        System.out.println(max);
    }
}
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号