JavaEE-Day04

JavaEE-Day04,第1张

JavaEE-Day04 一、运算符(续) (一)逻辑运算符 1、逻辑“单与”(&)

条件必须同时满足才成立

特点:有false则false

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;

        System.out.println((a>b) & (a>c));//false & false
        System.out.println((a>b) & (ac));//true & false
    }
}

2、逻辑“单或”(|)

满足一个条件即可成立

特点:有true则true

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;

        System.out.println((a>b) | (a>c));//false | false
        System.out.println((a>b) | (ac));//true | false
    }
}

3、逻辑“异或”(^)

相同则为false,不同则为true

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;

        System.out.println((a>b) ^ (a>c));//false ^ false
        System.out.println((a>b) ^ (ac));//true ^ false
    }
}

4、逻辑“非”(!)

非true则false,非false则true

特点:偶数个非是它本身

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;

        System.out.println(!(a>b));//!false
        System.out.println(!!(a>b));//!!false
        System.out.println(!!!(a 
4、逻辑双与(&&)和逻辑单与(&)区别 

共同点:都是表示并列关系,有false则false

不同点:&&具有短路效果(逻辑双与&&如果左边是一个false,右边就不执行了)

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println((++a)==3 & ((b--)==4));//&右边继续执行,结果为false且y自减
        System.out.println("a:"+a+",b:"+b);
    }
}

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println((++a)==3 && ((b--)==4));//&左侧false,右侧不执行
        System.out.println("a:"+a+",b:"+b);
    }
}

6、逻辑双或(||)和逻辑单或(|)的区别

共同点:有true则true,表示或的关系

不同点:逻辑双或(||)连接的左边表达式如果是true,右边就不执行了,具有短路效果

好处:提高逻辑判断执行效率,开发中经常使用逻辑双与(&&)和逻辑双或(||)

2、位运算符(使用补码计算) 位“与”(&)

有0,则0(使用补码计算)

例:3&4(计算出3和4对应的二进制数据:原码、反码、补码)

000000000000000000000000000000113的原码(正数原、反、补相同)000000000000000000000000000001004的原码(正数原、反、补相同)00000000000000000000000000000000结果:0(&计算:有0则0) 位“或”(|)

有1,则1(使用补码计算)

例:3|4

000000000000000000000000000000113的原码(正数原、反、补相同)000000000000000000000000000001004的原码(正数原、反、补相同)00000000000000000000000000000111结果:7(|计算:有1则1) 位“异或”(^)

相同则为0,不同则为1

例:3^4

000000000000000000000000000000113的原码(正数原、反、补相同)000000000000000000000000000001004的原码(正数原、反、补相同)00000000000000000000000000000111结果:7(^计算:相同为0,不同则1) 特点*

一个数据被另一个数据如果位异或两次,其值是它本身!

class OperatorDemo2{
	
	public static void main(String[] args){
			
			//定义两个变量
			int a = 10 ;
			int b = 20 ;
			
			System.out.println(a ^ b  ^ b) ;// a
			System.out.println(a ^ b  ^ a) ; //b
			
		
	}
	
}
试题

实现两个变量的数据进行交互

int a = 10 ;

int b = 20 ;

最终要将a和b进行互换

class OperatorTest{
	
	public static void main(String[] args){
		//有两个变量
		int a = 10 ;
		int b = 20 ;
		System.out.println("a:"+a) ;
		System.out.println("b:"+b) ;		
		System.out.println("---------------------------------------") ;		
		//方式1:使用中间第三方变量(最常用的一种方式:推荐使用第一种)
		//定义临时变量temp 
		//记录a的值
		
		int temp  = a ; //int temp = a  = 10
		//在将b的值赋值给a //
		a = b ;//a = 20 
		//将temp的赋值给b
		b = temp ; //10
		
		System.out.println("a:"+a) ;
		System.out.println("b:"+b) ;
		
		//方式2:使用位异或的特点^:一个数据被另一个数据位异或两次,其值是它本身
		//左边:a,b,a
		//右边都是: a^b
		
		
		
		
	}
}
(二)三元运算符(三目运算符) 1、格式

(表达式) ? 执行 true的结果 : 执行false 的结果;

首先判断表达式是否成立,如果成立,则执行true的结果;否则,执行false的结果;

2、使用
class OperatorDemo{
	
	public static void main(String[] args){
		//定义两个变量
		int a = 10 ;
		int b = 20 ;	
		//比较较两个数据中的最大值
		//(表达式)?执行 true的结果:执行false 的结果;
		//定义最终结果变量
		int max = (a>b)?a:b;
		System.out.println(max) ; //20
		System.out.println("------------------------------------") ;
		//a和b中的最小值
		int min = (ay)?x:y ;
		//然后使用temp和z进行三元运算符
		//定义接收结果变量max2
		int max2 =(temp >z)? temp : z ;
		System.out.println("三个数据中的最大值是:"+max2) ;
		System.out.println("------------------------------------") ;
		
		//方式2:三元运算符是可以嵌套的 (一步走)
		//定义最终变量max3
		int max3 = (x >y)?((x>z)?x:z):((y>z)?y:z) ; //推荐第一种方式
		//int max3 = x >y?x>z?x:z:y>z?y:z ;
		System.out.println("三个数据中的最大值是:"+max3) ;
		
		
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5693337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存