Java基础总结3

一、运算符

运算:对常量和变量进行操作的过程称为运算
运算符:对常量和变量进行操作的符号称为运算符
操作数:参与运算的数据称为操作数
表达式:用运算符把常量或者变量连接起来的符号java语法的式子就可以称为表达式

不同运算符连接的式子体现的是不同类型的表达式
例:
int a=3+4;
这是做了一个加法运算,+就是运算符,我们还有其他很多的运算符
3,4就是参与运算的操作数据
3+4整体其实就是一个算数表达式

1.算数运算符

在这里插入图片描述

2.赋值运算符

符号:=,+=,-=,*=,/=,%=
其中=为基本赋值运算符,其他的为扩展的赋值运算符
扩展的运算符存在默认强制类型转换:s+=1等价于s=(short)s+1

3.比较(关系)运算符

在这里插入图片描述
注意:
比较运算符的结果都是boolean型,也就是要么true要么false
比较运算符"==“不能误写为”=",并且在赋值的时候要注意类型问题

4.逻辑运算符

在这里插入图片描述
逻辑运算符用于连接布尔型表达式,在java中不可以写成3<x<6,应该写成x>3 & x<6
"&“和”&&"的区别
单&时,左边无论真假,右边都进行计算
&&时,如果左边为真,则右边参与运算,如果左边为假,则右边不参与运算
"|“与”||"的区别同理,双或时,左边为真,右边不参与运算
异或为两边相同的时候为false,不同true

class Demo{
	public static void main(String[] args){
	int x = 3;
	int y = 4;
	System.out.println(x++>4)&(y++>5);	//false
	System.out.println(x);				//4
	System.out.println(y);				//5
	
	System.out.println(x++>4)&&(y++>5);	//false
	System.out.println(x);				//4
	System.out.println(y);				//4
	}
}
5.位运算符

位运算是直接进行二进制运算在这里插入图片描述
基本位运算
位于运算&:特点为有0,则0
位或运算|:特点为有1,则1
位异或运算^:相同则为0,不同则为1
反码~:对当前数据二进制全部按位取反,0变1,1变0

class Demo{
	public static void main(String[] args){
		
		System.out.println(3 & 4) ; //3位与4    //0
		System.out.println(3 | 4) ; //3位或4    //7
		System.out.println(3 ^ 4) ; //3位异或4  //7
		
		System.out.println(~3) ;//对3求反码   //-4
		//~:对当前数据的进行按位取反
	}
}

/*
	对于位运算符号连接的两个具体的数据,先算出该数据---->二进值数据
	3 : 11
	4:100
	
	3  & 4

位与运算符的特点:有0,则0	
	00000000	00000000	00000000	00000011			
&	00000000	00000000	00000000	00000100		
---------------------------------------------------	
	00000000	00000000	00000000	00000000
	
	结果:0
	
位或|运算符的特点:有1,则1	
	00000000	00000000	00000000	00000011			
|	00000000	00000000	00000000	00000100	
---------------------------------------------------
	00000000	00000000	00000000	00000111
	
	结果: 7
位异或^运算符的特点:相同则为0,不同则为1
	00000000	00000000	00000000	00000011			
^	00000000	00000000	00000000	00000100	
---------------------------------------------------
	00000000	00000000	00000000	00000111
	
	结果:7
	
	
	
~3:反码3  对整数3按位取反(0变1,1变0)
~00000000	00000000	00000000	00000011  (原码,反码,补码一样)
 11111111	11111111	11111111	11111100  (补码)		负数
										  -1
-----------------------------------------------
11111111	11111111	11111111	11111011  (反码)		负数
10000000	00000000	00000000	00000100  (原码)	
-										 4
*/

位异或运算的特点
一个数据对另一个数据位异或两次,其值是它本身

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

位移运算符中:
左移 <<,规则:最高位丢掉,右边补0
右移>>,规则:如果最高符号位为1,左边补齐1,如果最高符号位为0,左边补齐0
无符号右移>>>,规则:无论最高符号位是0还是1,左边都补齐0

class OperatorDemo3{
	public static void main(String[] args){
		
		// 某个数据<< 位数 :当前该数据乘以2的移动次幂
		System.out.println(3 << 2) ;//3 *2^2 = 12
		//某个数据 >> 位数 :当前数据该本身除以2的移动次幂
		System.out.println(24 >> 2);//24/2^2 = 6
		
		System.out.println(-24 >> 2) ; //-6
		
		//无符号右移
		System.out.println(24 >>> 2);//6
		
		System.out.println(-24 >>> 2);//1073741818
		
	}
}

/*
	运算的步骤:
		1)算出当前数据对应的二进制数据
		2)如果是正数,原码,反码,补码一样,使用补码进行移动 (>>,<<,>>>)
		
		3对应的二进制数据
		00000000	00000000	00000000	00000011 (原码,反码,补码)
		
		使用补码进行移动
		00000000	00000000	00000000	00000011
	 (00)000000	00000000	00000000	0000001100
	 
	 00000000 00000000 00000000 00001100		(补码--->反码--->原码)
								结果:	12
								
								
	--------------------------
	24 >> 2 :如果最高符号位为1,左边补齐1,如果最高符号位为0,则左边补齐0
	
	二进制数据:
	00000000 00000000 00000000 00011000		(正数: 原码--->反码--->补码)

	00000000 00000000 00000000 00011000			向右移动2位
	0000000000 00000000 00000000 000110(00)	
	
	00000000 00000000	00000000    00000110	(补码---->反码--->原码)	
								结果: 6
	--------------------------
	
	- 24 >> 2		负数,最高符号位为1
		(原码)	10000000 00000000 00000000 00011000		
		(反码)  11111111 11111111 11111111 11100111
												 +1
	------------------------------------------------
		(补码)	11111111 11111111 11111111 11101000
		
		11111111 11111111 11111111 11101000   向右移动2位
		1111111111 11111111 11111111 111010(00)
		
	(补码)	11111111  11111111 11111111 11111010
											  -1
	(反码)	11111111  11111111 11111111 11111001
	(原码)  10000000  00000000 00000000 00000110
	
	结果 :  -								  6
	
	
	--------------------------
	
	24>>> 2
	00000000 00000000 00000000 00011000  (原码---反码---->补码)
	
	
	00000000 00000000 00000000 00011000
	0000000000 00000000 00000000 000110(00)
	  
	00000000 00000000 00000000 00000110(补码---->反码---->原码)
	  6
	--------------------------
	
	-24 >>> 2
	(原码)	10000000 00000000 00000000 00011000		
	(反码)  11111111 11111111 11111111 11100111
												 +1
	------------------------------------------------
	(补码)	11111111 11111111 11111111 11101000
		
		无符号右移
		    11111111 11111111 11111111 11101000
		    0011111111 11111111 11111111 111010(00)
		 
		    00111111 11111111 11111111 11111010(补码---->反码---->原码一样)
		 
		 结果:1073741818
*/
6.三目运算符

格式:
(表达式)?表达式1:表达式2
执行流程:
先判断表达式是true还是false,如果true,执行表达式1的结果,否则,执行表达式二的结果

class Demo{
	public static void main(String[] args){
		int a = 23;
		int b = 36;
		int max = (a>b)?a:b;
			System.out.println("max:"+max);
	}
}

键盘录入数据

我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,把数据改进为键盘录入,提高程序的灵活性
如何实现键盘录入数据?
实现步骤:

  1. 导包(位置放到class定义的上面)
    import java.util.Scanner;
  2. 创建对象
    Scanner sc = new Scanner(System.in);
  3. 接收数据
    int x = sc.nextInt();
import java.util.Scanner;
class LianXi3{
	public static void main(String[] args){
		Scanner s=new Scanner(System.in);
				System.out.println("将对三个数据进行比较,取最大值");
				System.out.println("请输入第一个数据");
			int a=s.nextInt();
				System.out.println("请输入第二个数据");
			int b=s.nextInt();
				System.out.println("请输入第三个数据");
			int c=s.nextInt();
			int max=(a>b)?(a>c?a:c):(b>c?b:c);
				System.out.println("最大数:"+max);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值