JAVA零基础入门第一阶段(3)

一.运算符

1.算数运算符:+、-、*、/、%、++、–

1.算数运算符
		int num1 = 10;
		int num2 = 5;
		
		int result = num1 + num2;
		System.out.println(result);//15
		System.out.println(10-5);//5
		System.out.println(10*5);//50
		System.out.println(10/5);//2
		System.out.println(10%3);//1
		
		++:自增1
			int a = 10;
			//++a:先自增1,再使用
			System.out.println(++a);//11
			System.out.println(a);//11
			
			int a = 10;
			//a++:先使用,再自增1
			System.out.println(a++);//10
			System.out.println(a);//11
			
		--:自减1
			int a = 10;
			//--a:先自减1,再使用
			System.out.println(--a);//9
			System.out.println(a);//9
			
			int a = 10;
			//a--:先使用,再自减1
			System.out.println(a--);//10
			System.out.println(a);//9
2.深入算数运算符:
		案例1byte b1 = 10;
			byte b2 = 5;
			
			//byte b3 = b1 + b2; 运行报错
			byte b3 = (byte)(b1 + b2);
			System.out.println(b3);
			
		案例2short s1 = 10;
			short s2 = 5;
			
			//short s3 = s1 + s2; 运行报错
			short s3 = (short)(s1 + s2);
			System.out.println(s3);
		
		案例3int i = 10;
			double d = 1.2;
			
			double result = i + d;
			System.out.println(result);//11.2
			
		案例4int a = 10;
			//++a;     
			a++;
			System.out.println(a);//11

注意:
1.两个byte类型做运算,会向上转型成int类型
2.两个short类型做运算,会向上转型成int类型
3.除了byte和short类型,其他的数值型都是向上转型后再做运算
4.分号代表一条执行语句的结束,不管是++a还是a++,都自增了

3.训练题
		经典面试题一:输出结果为?
            int a = 8;
            int b = (a++)+(++a)+(a*10);
 //					  8     10    100
            System.out.println(b); //118
		
		经典面试题二:输出结果为?
			int i = 0;   
			i = ++i; 
			//底层实现:
			//	i = (int)(i+1);
			//	i = i;
			System.out.println(i);//1
			
			int i = 0;   
			i = i++;  
			//底层实现:
			//int temp = i; --> temp=0
			//i = (int)(i +1); --> i=1
			//i = temp;
			System.out.println(i);//0
			
		扩展:
			byte b = 10;
			//++的公式:b = (byte)(b + 1);
			++b;
			System.out.println(b);//11

2.赋值运算符:=、+=、-=、 *=、/= 、 %=

1.赋值运算符
		int i = 10;
	
		i += 5;//i = (int)(i+5);
		i -= 5;//i = (int)(i-5);
		i *= 5;//i = (int)(i*5);
		i /= 5;//i = (int)(i/5);
		i %= 3;//i = (int)(i%3);
		
		System.out.println(i);//1		
2.训练题
		经典面试题一:输出结果为?
			int a,b; //一次性声明多个变量
			a = b = 100;//先把100赋值给b,再把b赋值给a
			System.out.println(a); //100
			System.out.println(b); //100
		
		经典面试题二:下面的两种写法结果分别是?
			short s=1; 
			s = s+1; //报错,s-short 1-int,运算结果的类型为int
			short s=1; 
			s += 1;// s = (short)(s+1);

赋值规则:
s+ = 1
s = (T)((s) +(1))
复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1) op (E2)),其中T是E1的类型,op为符号。

3.关系运算符:==、!=、>、 <、 >=、 <=

1.关系运算符
	boolean bool = 10 == 20;
	System.out.println(bool);//false				
	System.out.println(10 != 20);//true
	System.out.println(10 > 20);//false
	System.out.println(10 >= 20);//false
	System.out.println(10 < 20);//true
	System.out.println(10 <= 20);//true

注意:
1.== 判断两个值是否相等
2.!= 判断两个值是否不相等
3.关系运算符的结果一定为boolean类型

2.训练题
		经典面试题一:输出结果为?
			int x = 10;
			int y = 10;
			boolean flag = (x == y);
			System.out.println(flag);//true
			flag = (x = y);//不兼容,布尔类型不能和其他基本数据类型兼容
			System.out.println(flag);
			
		经典面试题二:输出结果为?
			boolean b1 = true;
			boolean b2 = false;
			boolean b3 = (b1 == b2);
			System.out.println(b3);//false
			boolean b4 = (b1 = b2);
			System.out.println(b4);//false

4.逻辑运算符:&(与)、&&(短路与)、|(或) 、||(短路或)、^(异或)、!(非)

1.逻辑运算符
//& 与:前后两者都是boolean,都为true,结果则为true
		System.out.println(true & true);//true
		System.out.println(true & false);//false
		System.out.println(false & true);//false
		System.out.println(false & false);//false		
//&& 短路与:前后两者都是boolean,都为true,结果则为true
		System.out.println(true && true);//true
		System.out.println(true && false);//false
		System.out.println(false && true);//false
		System.out.println(false && false);//false
		
//&:前者为false后,还会判断后者
//&&:前者为false后,不会判断后者,所以效率更高
//ArithmeticException -- 算数异常
		System.out.println(false && (10/0)>0);
		

//| 或:前后两者都是boolean,其中一个为true,结果则为true
		System.out.println(true | true);//true
		System.out.println(true | false);//true
		System.out.println(false | true);//true
		System.out.println(false | false);//false
		
//|| 或:前后两者都是boolean,其中一个为true,结果则为true
		System.out.println(true || true);//true
		System.out.println(true || false);//true
		System.out.println(false || true);//true
		System.out.println(false || false);//false
		
//|:前者为true,还会判断后者
//||:前者为true,不会判断后者,所以效率更高
		System.out.println(true || (10/0)>0);
		

//^ 异或:相同为false 不同为true
		System.out.println(true ^ true);//false
		System.out.println(true ^ false);//true
		System.out.println(false ^ true);//true
		System.out.println(false ^ false);//false
		

//! 非 --> 置反
		boolean bool1 = true;
		System.out.println(!bool1);//false
		
		boolean bool2 = false;
		System.out.println(!bool2);//true
2.训练题
练习题:在dos窗口输入一个数字,判断是否在50~100的区间内:
	Scanner scan = new Scanner(System.in);
	
	System.out.println("请输入一个数字:");
	int num = scan.nextInt();
	
	System.out.println(num > 50 && num < 100);

5.三目运算符/三元运算符

1.三目运算符

语法:数据类型 变量 = (表达式)?值1:值2;
理解:表达式的结果一定是boolean类型
true - 把值1赋值给变量
false - 把值2赋值给变量

2.实验
实验:
		int num = (false)?10:20;
		System.out.println(num); //20
3.案例
案例1:在控制台输入两个int类型的数字,输出最大值
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入第一个数字:");
		int a = scan.nextInt();
		System.out.println("请输入第二个数字:");
		int b = scan.nextInt();
				
		int result = (a>b)?a:b;
		System.out.println(result);
				
案例2:在控制台输入三个int类型的数字,输出最大值
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入第一个数字:");
		int a = scan.nextInt();
		System.out.println("请输入第二个数字:");
		int b = scan.nextInt();
		System.out.println("请输入第三个数字:");
		int c = scan.nextInt();
				
		int max = (a>b)?a:b;
		max = (max>c)?max:c;
				
		System.out.println(max);
4.训练题
	扩展面试题1int a = 5;
		System.out.println((a<5)?10.9:9);//9.0

			A. 编译错误
			B. 10.9
			C. 9
			D. 以上答案都不对	
				
	扩展面试题2char x='x';
		int i=10;
		System.out.println(false?i:x);//120
		System.out.println(false?i:x);//x
		System.out.println(false?65536:x);//120

			A. 120  x
			B. 120 120
			C. x 120
			D. 以上答案都不对

三目运算符返回值规则:
1.值1和值2都是数字字面量,按照取值范围大的类型返回
2.值1和值2都是变量,按照取值范围大的类型返回
3.值1是数字字面量,值2是变量,判断值1是否在值2所属类型的取值范围里
在:就按照值2类型返回
不在:就按照值1类型返回

6.字符串拼接符: +

加号两侧都是数值,此符号为算数运算符
加号两侧有一次或两侧是字符串,此符号为字符串拼接符

案例:
	System.out.println(1+2+"abc"+1+2 + "xxx");
	//					3 +"abc"+1+2 + "xxx"
	//					"3abc"  +1+2 + "xxx"
	//					"3abc1"	  +2 + "xxx"
	//					"3abc12"     + "xxx"
	//					"3abc12xxx"

7.位运算符: & 、 |、 ^ 、 <<、 >>、 >>>

1.位运算符

& 、| 、^ :前后两侧都为布尔值,此符号为逻辑运算符
& 、|、 ^ :前后两侧都为数值,此符号为位运算符

//&:同位比较,两者为1,结果则为1
	byte b1 = 27;//0001,1011
	byte b2 = 34;//0010,0010
    			 //0011,1001
/*
	  byte 27 - 向上转型为int 0000,0000,0000,0000,0000,0000,0001,1011
	  byte 34 - 向上转型为int 0000,0000,0000,0000,0000,0000,0010,0010
	 相&后
0000,0000,0000,0000,0000,0000,0000,0010
	 强转后
0000,0010
 */
	byte result = (byte)(b1 & b2);
	System.out.println(result);//2 - 0000,0010

//|:同位比较,两者有1,结果则为1
	System.out.println(b1 | b2);//59 - 0011,1011
	
//^:同位比较,两者相同为0,不同为1
	System.out.println(b1 ^ b2);//57 - 0011,1001
	
//<< 左移:向左整体移动n位,就用n个0补位
	byte b = 10;//0000,1010
	System.out.println(b << 2);//0010,1000
	
//>> 右移:向右整体移动n位,就用n个最高位补位
	byte b1 = 10;//0000,1010
	System.out.println(b1 >> 2);//0000,0010
	byte b2 = -10;//1111,0110
	System.out.println(b2 >> 2);//1111,1101
	
//>>> 无符号位右移:向右整体移动n位,就用n个0补位
	byte b2 = -10;//1111,0110
//0011,1111,1111,1111,1111,1111,1111,1101
	System.out.println(b2 >>> 2);//1073741821
2.训练题
面试题1:用最有效率的方式计算2*8
	//0000,0100
	System.out.println(2 << 3);
	
面试题2:猜猜下面代码的运行结果
	System.out.println((int)(char)(byte)-1);
/*
-1 int:1111,1111,1111,1111,1111,1111,1111,1111
byte:1111,1111
char:1111,1111,1111,1111
int:0000,0000,0000,0000,1111,1111,1111,1111
注意:char没有负数,所以向上用0补位
*/

8.表达式

5+6:算数表达式
5>6:关系表达式
5|6:位运算表达式

9.运算符的优先级别

经验:不用记,灵活运用小括号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S4fjjK4E-1592395785332)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200617185723640.png)]

10.转义字符:特殊意义的字符本身

转义字符:特殊意义的字符本身
" 代表一个双引号
’ 代表一个单引号
\ 代表有一个斜杠
\n 代表换行
\t 代表水平制表
注意:println() 打印+换行
print() 打印

实验:
	System.out.println(""HelloWorld"");
	System.out.println("'HelloWorld'");
	System.out.println("\HelloWorld\");
                           
	System.out.print("HelloWorld\n");
	System.out.print("HelloWorld");
		
System.out.println("桃谷绘里香\t泷泽萝拉\t三上悠亚");
System.out.println("北条麻衣\t水野朝阳\t爱田奈奈");

常量:程序中,不可变的量
1.数字字面量:程序中出现的数字
2.字面值常量:用双引号括起来的内容
3.用final修饰变量,变量变成常量 (final int i = 10;)
扩展:字面常量 和 final修饰的变量的生命周期:
位置:常量池

11.Java执行语句

Java执行语句:
1.顺序语句:方法中的代码从上往下执行
2.分支语句:依据不同的条件,执行不同的功能
2.1 if
2.2 switch
3.循环语句:依据不同的条件,重复执行某个功能
3.1 for
3.2 while
3.3 do-while
4.特殊的流程控制语句
4.1 break
4.2 continue
4.3 return
4.4 lable

简单if分支语法:
if(表达式){
…代码块…
}

理解:表达式的值只能是boolean类型

  		true - 执行代码块
  		false- 跳出if分支,执行if以外的代码
案例:如果麻生希的Java考试成绩大于98分,麻生希就能获得一辆法拉利作为奖励
	Scanner scan = new Scanner(System.in);
	
	System.out.println("请输入麻生希的Java成绩:");
	
	double javaScore = scan.nextDouble();
	
	if(javaScore > 98){
		System.out.println("奖励麻生希一辆法拉利");
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值