JAVAEE1910_day03知识总结

运算符:

分类:

     	算术运算符
		赋值运算符
		比较(关系)运算符
		*逻辑运算符
		*位运算符
		三元(三目)运算符
算术运算符:
			基本算术运算符:
				+,-,*,/,%
			扩展的算术运算符:
				++,--
		
		/用法:两个数相除,默认取整
		%用法:两个数进行取模,求余数
eg;
class OperatorDemo{
	public static void main(String[] args){
	
		int a = 3 ;
		int b = 4 ;

		System.out.println(a+b);
		System.out.println(a-b);
		System.out.println(a*b);
		//System.out.println(a/b);此输出结果为:0
		System.out.println(a*1.0/b);
		
		System.out.println(a%b);
	}

得到输出结果:
7
-1
12
0.75
3
eg:
计算数值

class Demo{
  public static void main(String[] args){
  	int a = 10;
  	int b = 10;
  	int c = 10;
  	
  	a = b++;
  	c = --a;
  	b = ++a;
  	a = c--;
  	
  	System.out.println("a:"+a);
  	System.out.println("b:"+b);
  	System.out.println("c:"+c);
  }
}

计算过程:
a=10, b=11   c=10
a=9 , b=11,c=9
a=10,b=10,c=9
a=9, b=10,c=8

赋值运算符

	基本的赋值运算符:
		= 含义:
			将=号右边的数据赋值给左边的某个类型的变量
		
	扩展的赋值运算符:
		+= -= *= /= %=
		+=用法:
			将=号右边的值和左边的变量值相加,然后在将结果赋值给左边的变量a

eg:

class Demo{
	public static void main(String[] args){
	int a =10;
	int  x , y ;
	x = y = 20;
	System.out.println("x:"+x+",y:"+y);
	boolean flag = ( a == y );
	System.out.println(flag);
	int m =20 ;
	m += a ;
	System.out.prontln("m:"+m);
	}
}

运算结果:
x=20
y=20
false
m=30

比较运算符

	>,>=,<=,<,!=,==
	
	注意事项:
		无论当前比较运算符连接的是简单的数据
		还是复杂的表达式
		最终结果都是boolean类型

eg:

class Demo{
   		int x = 10 ;
		int y = 20 ;
		int z = 30 ;
		
		System.out.println(x > y) ;
		System.out.println((x+y) >= (x+z)) ;
		System.out.println(x >= y) ;
		System.out.println(x < y) ;
		System.out.println(x <= z) ;
		System.out.println(x != y) ;
		System.out.println(x == y) ;

运算结果:
false
false
false
ture
ture
ture
false

逻辑与算符(注意运算符区别)

逻辑运算符
	基本的逻辑运算符:
			逻辑与&:有false,则false
			
			逻辑或|:有true,则true
			
			逻辑异或^:相同则为false,不同则为true
			
			逻辑非!:非false,则true;非true则false(偶数个逻辑非是他本身)
扩展的逻辑运算符:
			逻辑双与&&
			逻辑双或||
			
			逻辑双与&& 和逻辑单与&的区别?
			&&和&都符合,有false,则false;
			如果&&符号的左边表达式位false,右边就不执行, (短路效果)
			逻辑||同理,左边的表达式为true,右边不执行

例:

class OperatorDemo2{
	public static void main(String[] args){
	
	
		int a = 1 ; 
		int b = 2 ;
		int c = 3 ;
		
		System.out.println((a>b) && (a>c));//false 短路,不执行右边
		System.out.println((a>b) && (a<c));//false 短路,不执行右边
		System.out.println((a<b) && (a>c));//false
		System.out.println((a<b) && (a<c));//true
		System.out.println("-------------------") ;
		

		int x = 3 ;
		int y = 4 ;
		
		//boolean flag = ((x++)==3 & (y++)==4) ;
		//boolean flag = ((x++)==3 && (y--)==4) ;
		boolean flag = ((++x)==3 && (y--)==4) ;
		
		System.out.println("x:"+x);//4 //4 //4
		System.out.println("y:"+y);//5 //3 //4  
		System.out.println("flag:"+flag);//false
 	}
}

位移运算符(用数据二进制进行运算)

	位与&:有0则0
	
	位或|:有1则1
	
	位异或^:相同为0,不同为1
	特点:一个数据位异或另一个数据两次,其值是他本身!应用场景:简单的数据加密	
		高级加密:  md5 			
		安全框架(Spring security)
		
	
	~ 反码:逐位取反,然后还需要通过得到补码---->原码
	
	<<:左移:
	左移动,最高位丢掉.右边补0
	
	>>:右移:
	最高位如果是1,左边补1;最高位是0,左边补0
	
	>>>:无符号右移:;
	最高位无论是0或1,都补0
eg:
面试题:
	有效的方式写出2乘以8的结果
			2 << 3
class OperatorDemo3{
	public static void main(String[] args){
		
		//<<
		//结论:将当前<<符号的左边的数据乘以2的移动次幂
		System.out.println(3 << 2);//3*2^2 = 12
		//>>
		//结论:将当前>>左边的数据除以2的移动次幂
		System.out.println(24 >> 3);//24/2^3 = 3
		System.out.println(24 >> 2) ;//24/2^2= 6
		System.out.println(-24 >> 2) ;//通过补码计算=-6
		//>>> 
		System.out.println(-24 >>> 2) ;//1073741818
	}
}

面试题2:
将两个数据的值进行互换(考察点:位运算符中位异或特点)

class Demo{
	public static void main(String[] args){
		int a = 10 ;
		int b = 20 ;
		System.out.println("a:"+a);
		System.out.println("b:"+b);
		
		//1:借助中间变量
		
		int temp = a ; 
		a = b ;
		b = temp ;
		System.out.println("a:"+a);
		System.out.println("b:"+b);
		
		
		
		//方式2:位异或的特点 
		a  = a ^ b ; 
		b  =  a ^ b ;//b =  a ^ b ^ b ; = a 
		a  = a ^ b ;//a = a ^ b ^ a ; = b
		System.out.println("a:"+a);
		System.out.println("b:"+b);
		
		//方式3:算数加减
		a = a + b ; //a = 3 0; 
		b = a - b ;//b = 30 - 20 ;
		a = a - b ;//a = 30 -10 ;
		System.out.println("a:"+a);
		System.out.println("b:"+b);
	
		b = (a+b) - (a=b) ;
		System.out.println("a:"+a);
		System.out.println("b:"+b);
		
		
	}
}

三目运算符(开发中常用)

格式:

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

执行流程:

 1)先判断表达式是否成立
	2)如果成立,执行true的结果
	3)不成立,执行false的结果

eg:
获取三个整数中的最大值

class OperatorTest{
	public static void main(String[] args){
		int x = 10 ;
		int y = 30 ;
		int z = 20 ;
		
		//方式1:使用中间变量的方式(三元)
		//定义变量temp
		int temp = ((x > y)? x : y);
		//使用temp和z进行比较
		int max2 = (( temp > z) ? temp : z) ;
		System.out.println("三个数据中的最大值是:"+max2);
		
		//方式2:三元
		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的值是:"+max3) ;
	}
}

键盘录入数据(难点 )

Scanner :文本扫描器   
 jdk提供的一个类

使用是键盘录入数据的基本开发步骤:
	1)导包  import	java.util.Sacnner;
		位置在class的上面
	2)创建键盘录入对象
		Sacnner sc = new Scanner(System.in);
	3)接收数据
		目前固定使用
		int result = sc.nextInt();		
	4)输出结果result(自定义变量名)

eg:
获取两个数据的最大值

import java.util.Scanner;
class ZDemo{
	public static void main(String[] args){
	
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数据:");
		int one = sc.nextInt();
		System.out.println("请输入第二个数据:");
		int two = sc.nextInt();
		int max = (one>two)?one:two;
		System.out.println("两个数据之中较大的:"+max);
		
		
	}
}

流程控制语句于下篇整合写作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值