JavaSE-day03

1.赋值运算符

赋值运算符:
			基本的赋值运算符:	 =
  				举例:int a = 10 ;  //将10这个数据赋值给int类型的变量a
				
			扩展的赋值运算符:	+=,-=,*=,/=,%=
				将=号左边的值和右边的值相加,赋值给左边	
				变量进行+=...计算的时候,隐藏了强制类型转换
	//+=举例
	int y = 30 ;
	y += 10 ;   ---->很像(类似于) y = y +10 ;
	
	short s = 1 
	s += 1; 等价于 s = (short)(s+1) ;

2.比较运算符

比较(关系运算符):
		>=,<=,>,<,==,!=(mysql数据库的语法: !=符号)
	
结论:	
	当前关系运算符的符号不管连接简单的表达式还是复杂的表达式,结果要么true,要么是false
	
	
	注意事项:
	
		在进行比较的时候,==千万不能写成=
		//注意事项
		int m = 20 ;
		int n = 10 ;
		System.out.println(m==n) ; //false
		System.out.println(m=n) ; //直接输出(将n的值赋值m)   //10
		
		//不兼容的类型: int无法转换为boolean
		//boolean flag = (m = n); //==不能写成= ,此时意思变了,将n的赋值m,但是结果是boolean 要么是true/false

3.逻辑运算符

3.1基本的逻辑运算符

基本的逻辑运算符:
	逻辑单与& :  有false,则false (逻辑运算符操作的表达式,最终结果不是true,就是false)
	逻辑单或| :	 有true,则true
	逻辑异或^ :  相同则为false,不同则为true
				 简单记忆:男女关系
							 男男  女女  男女 女男
	逻辑非!	  : 非true 则false,非false则true,
				偶数个非是它本身

3.2扩展的逻辑运算符(重点理解举例)

扩展的逻辑运算符:
			逻辑双与&&  :左边表达式如果为false,右边不执行!
			逻辑双或|| : 左边表达式如果为true,右边不执行!
			
逻辑双与&&和逻辑单与&的区别

共同点:
		最基本的原则:有false,则false (并列关系)
	
不同点:
		逻辑双与&&特点:
				&&符号左边的表达式如果是false,右边不执行了(&&的短路效果!)
				
		逻辑双|特点|:
				||如果左边的表达式如果是true,右边不执行了(||的短路效果!)
//定义三个变量
		int x = 3 ;
		int y = 4 ;
		int z = 5 ;
		
		//逻辑双与&&
		System.out.println((x>y) && (y>z)) ; //false  && false --->false
		System.out.println((x>y) && (y<z)) ; //false  && true --->false
		System.out.println((x<y) && (y>z)) ; //true && false ---->false
		System.out.println((x<y) && (y<z)) ;//true && true ---->true
		
		System.out.println("--------------------------");
		
		int m = 3 ;
		int n = 4 ;
		
		//输出m,n的值
		System.out.println("m:"+m); //3
		System.out.println("n:"+n) ;//4
		
		System.out.println("--------------------------");
		
		//做操作
		//重点理解******************************
		//(4==3) & (3 == 4)--->false &  false --->false
		//System.out.println((++m == 3) & (--n==4)) ;  	//逻辑单与:无论左边表单是false,都要执行的!
		
		//(4 == 4) & (4 == 3)---> true & false --->false
		//System.out.println((++m == 4) & (n-- == 3)) ;
						//true &  flase
						
						
		//逻辑双与&&  :&&符号左边的表达式如果是false,右边不执行了(&&的短路效果!)
		System.out.println((++m == 3) && (--n == 4)) ; //false
						//m=4  false  &&  false	n =3 (理想的结果)
						
		//m,n的值
		System.out.println("m:"+m); // 4	
		System.out.println("n:"+n) ;// 4  

4 位运算符

4.1概念

位运算符:		
	位运算符的基本符号		&,|,^,~
	
		位与 & : 有0 则0
		位或 | : 有1则1
		位异或 ^ :相同则为0,不同则为1
						一个数据被另一个数据位异或两次,其值是它本身!
		~(按位取反,0边1,1边0):
		
	位运算的移动符号		<<, >>, >>>		
	
		<<: 左移,最高符号位丢弃掉,右边补0
		>>:右移,如果最高符号位是1,左边补1,如果最高符号位是0,补0
		>>>:无符号右移,无论最高符号位是1还是0,左边补齐都是0

4.2举例

4.2.1练习题一(基本位运算符)
System.out.println(3 & 4) ; //0
System.out.println(3 | 4) ; //7
System.out.println(3 ^ 4) ; //7
System.out.println(~3) ; // -4
/*
	3,4分别算出十进制---->二进制数据  (以补码进行计算---->先算出原码)
	3----->11
	4----->100
	
	补全比特位
	3	00000000	0000000	  00000000	00000011
	4	00000000	0000000	  00000000	00000100

3 & 4	:有0 则0
				00000000	0000000	  00000000	00000011
	位与&		00000000	0000000	  00000000	00000100
	-------------------------------------------------------------
				00000000	0000000	  00000000	00000000

				结果:0

3 | 4 : 有1则1
				00000000	0000000	  00000000	00000011
	位或|		00000000	0000000	  00000000	00000100
	-------------------------------------------------------
				00000000	0000000	  00000000	00000111
	
	结果:7
	
3 ^ 4 :相同则为0,不同则为1
				00000000	0000000	  00000000	00000011
	位异或^		00000000	0000000	  00000000	00000100
	--------------------------------------------------------
				00000000	0000000	  00000000	00000111
				
	结果:7
	
~3  :反码:( 按位取反 0变1,1变0)
		00000000	00000000	  00000000	00000011
	  ~
	  -----------------------------------------------
		11111111	11111111	  11111111  11111100 (补码)  ---->原码
		
		
		最高符号位			数值位
			1				1111111	11111111	  11111111  11111100  (补码) 
																  -1
	------------------------------------------------------------------
			1				1111111	11111111	  11111111		11111011 (反码)
			
			1				0000000 00000000      00000000      00000100 (原码)
			
	结果:	-										4
	
*/	
4.2.2 练习题二(位运算的移动符号)
//请有效的方式写出 2^3 的结果!
	1 << 3   (使用符号左边的数据*2的移动次幂 1 *2^3)
	
	//将左移符号左边的数据乘以当前2的移动次幂
	System.out.println(2<<3);    //16   2*2^3 = 16
	
	//将右移符号右边的数据除以当前2的移动次幂
	System.out.println(10>>2);   //2   10/(2^2) = 10/4 = 2(取整)
//特点:将左移符号左边的数据乘以当前2的移动次幂
System.out.println(3 << 2) ;  //3 *  2 ^2  = 12 ;

//特点:将右移符号左边的数据除以2的移动次幂
System.out.println(24 >> 2) ; //24右移两位  24/2^2 = 24/ 4 = 6

System.out.println(-24 >> 2) ; //-6
System.out.println(-24 >>> 2) ; //1,073,741,818

/*
1) 3 << 2
		先算出3十进制---二进制数据 11
		
		原码: 00000000	00000000	00000000	00000011
		反码: 00000000	00000000	00000000	00000011
		补码: 00000000	00000000	00000000	00000011
		
		//算出补码---->向左边移动两位 (最高符号位丢弃掉,右边补0)
		
		 00000000	00000000	00000000	00000011   		
	 (00)000000	00000000	00000000	0000001100  
		0 000000	00000000	00000000	0000001100  (补码)  -- 反码-->求原码 (正数的原反补一样):12
		
		
2)	24 >> 2		
		先算出24十进制---->对应的二进制数据 11000
		原码: 00000000	00000000	00000000 00011000
		反码: 00000000	00000000	00000000 00011000
		补码: 00000000	00000000	00000000 00011000
		
		>> 移动两位
		
		00000000	00000000	00000000 00011000
		 0000000000	 00000000	 00000000  000110(00)   (补码)   正数:原,反,补一样
		 0000000000	 00000000	 00000000  000110  反码
		 0000000000	 00000000	 00000000  000110  原码
		 ---------------------------------------------
		 
	结果:	 +					6
		 
3)	-24 >> 2	
		 -24---->二进制数据
		 -24 >> 2
		 
	最高符号位		数值位
		10000000	00000000 	00000000 00011000    (原码)
		11111111    11111111    11111111 11100111    (反码)
											   +1
		 ---------------------------------------------									   +1	
		11111111    11111111    11111111 11101000    (补码)
		
		11111111    11111111    11111111 11101000
		  1111111111    11111111    11111111 111010(00)  (补码)---->反码---->原码
		  1111111111    11111111    11111111 111010  (补码)
												 -1
		---------------------------------------------
		  1111111111    11111111    11111111 111001  (反码)
		  
		  1000000000    00000000    00000000 000110   (原码) :
		  
		  结果: -  6
		 
		 
		 
		 
4)	 -24 >>> 2 
		 
		 10000000	00000000 	00000000 00011000    (原码)
		 11111111    11111111    11111111 11100111    (反码)
											   +1
		 ---------------------------------------------									   +1	
		 11111111    11111111    11111111 11101000    (补码)
		 
		 11111111    11111111    11111111 11101000 
		   0011111111    11111111    11111111 111010(00)   (补码--->反码---->原码)
		   
		   0011111111    11111111    11111111 111010
		   
		   结果:1,073,741,818
		 
	*/

4.3 位异或特点

一个数据被另一个数据位异或两次,其值是它本身.
int a = 10 ;
int b = 20 ;
	
System.out.println(a ^ b ^ b) ; //10
System.out.println(a^  b ^ a) ;	//20
4.3.1 位异或举例(数据交换)
面试题:
	
		自定义两个变量(没有告诉具体数据类型,默认都是int)
		
			将这两个变量的值进行交换!
//定义两个int类型的变量
		int a = 10 ;
		int b = 20 ;
		
		//a,b输出
		System.out.println("a:"+a) ;
		System.out.println("b:"+b) ;
		
		System.out.println("------------------") ;
		
		
		//目的:一些操作---a =20 , b =10
		
		//方式1:开发中经常用到的第三方变量
		//定义一个临时变量 temp
		
		//int temp = a ;  //temp = 10 
		//a = b ;  //a = b = 20 ;
		//b = temp ; //b = temp  = 10
		
		
		
		//方式2:可以使用位运算符:位异或 ^特点 :个数据被另一个数据位异或两次,其值是它本身!
		
		//=号左边:a,b,a
		//=号右边:a ^ b
		// a = a ^ b ; //a = 10 b =20   10 ^ 20 
		// b = a ^ b ;//将上面a变量带入进来 int b = a^ b ^ b  = 10 ;
		// a = a ^ b ;//int a = a ^ b ^a = b = 20
		
		//方式3: 基本的加减运算
		a = a + b ; // a = 10 +20 = 30 
		b = a - b ; //b = 30 - 20 = 10
		a = a - b ;//a = 30 - 10 = 20
		
		
		System.out.println("a:"+a) ;
		System.out.println("b:"+b) ;

5 三元运算符

格式:
		(表达式)? 表达式1的结果: 表达式2的结果 ;
		
	执行流程:
	
	计算/比较表达式是否成立,如果为true,就执行表达式1的结构,否则,就执行表达式2的结果

6 键盘录入数据

6.1格式

键盘录入数据操作步骤:
	
	1)在Java中,只要不是java.lang包下的类,都需要导包! 
	Scanner (jdk提供的一个核心类) ---->java.util.Scanenr;
		
		格式:import java.util.Scanner;   固定写法  
		
		    import位置在 ,在class类的上面
			
			
	2)导包了,需要在main方法中使用Scanner类,
		就需要创建键盘录入对象 
		固定写法:
				Scanner 对象名 = new Scanner(System.in) ;
				
	3)友情提示:	"请您输入一个数据:"
	
	4) 接收数据
				使用int类型来接收数据
				固定写法:
				
				int 变量名 = 对象名.nextInt() ;
				float 变量名 = 对象名.nextFloat();
				String 变量名 = 对象名.nextLine();
				 
				
	5)输出变量名 :打印在控制台上!
	import java.util.Scanner;

6.2 举例代码


class ScannerDemo{
	public static void main(String[] args){
		
		//2)创建文本扫描器对象(键盘录入对象)
		//固定写法:
				//Scanner 对象名 = new Scanner(System.in) ;
		Scanner sc = new Scanner(System.in) ;
		
		//3)友情提示
		System.out.println("请您输入一个数据:") ;
		//4)接收数据:
		
		//固定写法:
				//int 变量名 = 对象名.nextInt() ;
				
		int num = sc.nextInt() ;  //等待用户输入数据
			//nextLine() ; 使用键盘录入对象录入字符串数据
			
			//String s = sc.nextLine() ; //String:后面讲的常用类(特殊的引用类型)
		
		//5)输出键盘录入数据
		System.out.println("您输入的数据是:"+num) ;
		//System.out.println("您输入的数据是:"+s) ;
		
		/*
			Exception in thread "main" java.util.InputMismatchException
		
		*/
	}
}

7 流程控制语句

7.1 顺序结构语句

	进入main方法中,代码由上而下依次加载!

7.2 选择结构语句

7.2 .1 if语句
if语句格式1的注意事项:
	
	1)如果使用格式1,if(){语句},{}中的语句只有一条语句,那么 {}是省略不写的! (一般不建议!),如果有多条,
	最好不要省略{}
	
	2)在if语句定义的变量,只能在当前{} 里面有效!
	
	3)在书写if语句的时候,有花括号的地方不能有分号; 有分号的地方就不能花括号!
int x = 10 ; // 局部变量
if(x > 5 || x <=10){ //建议永远带上括号
	int y = 5 ;
	System.out.println("x大于5或者x小于10");
}

//System.out.println(y); //y变量随着if语句结束而消失

System.out.println("over") ;
int z = 20 ;
if(z >= 10); //if语句后面直接分号,没有意义,if是一个空语句

//局部代码块 :限定变量的生命周期
//{


//	System.out.println("z大于等10");
//}


{
	int m = 100;
	System.out.println(m) ;
}
7.2 .2 switch语句
switch语句的结构
  
  switch(表达式){	
	case 值1:
		语句1;
		break ;
	case 值2:
		语句2;
		break;
		
	...
	default:
		语句n+1;
		break ;
	
  }
  
  执行流程:
  表达式中的数据和case语句中的值1 进行比较,如果匹配成功,就执行语句1,遇见break switch语句结束;
 如果不匹配,继续和case语句中的值2比较,如果匹配,执行语句2,break结束语句,
 如果上面caste中的语句都和表达式中的数据不匹配,最终执行default中的语句n+1,break结束语句!


switch中的表达式可以是什么数据类型?
 可以跟的类型,byte,short,int,char,
 
 Jdk5以后可以跟 枚举类型 (enum) ,jdk的新特性去讲
 JDK7以后可以跟 String类型   常用类中讲String
import java.util.Scanner;
class Demo06Scanner{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		/* System.out.println("请根据如下选项选择");
		System.out.println("65 张三");
		System.out.println("66 李四");
		System.out.println("67 王五");
		int choice = sc.nextInt();
		
		System.out.println("------------------");
		
		//int类型强制转换成char
		char choiceNum = (char)choice;
		
		switch (choiceNum){
			case 'A':
				System.out.println("张三");
				break;
			case 'B':
				System.out.println("李四");
				break;
			case 'C':
				System.out.println("王五");
				break;
			default:
				System.out.println("输入有误");
				
				
		}
		//	*/
		String s = "hello";
		System.out.println(s.charAt(1));
		
		System.out.println("--------------------"); 
			
		char choice01 = sc.next().charAt(0);
		System.out.println("--------------------");
		switch(choice01){
			case 65:
				System.out.println("A");
				break;
			case 66:
				System.out.println("B");
				break;
			default:
				System.out.println("输入不合法");
			
		}
		//System.out.println("程序结束");
	}
}
7.2 .3循环结构语句
				for
				while
				do-while
				死循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值