java从入门到入土第3天

Day03

public class Test01{
	/**
		知识点:运算符
		分类:
			算数运算符
			赋值运算符
			关系运算符
			逻辑运算符
			三目运算符
			位运算符
			
		知识点:算数运算符的使用
		符号:+、-、*、/、%、++、--
		
		int a = 10;
		int b = 3;
		int result = a + b;
		System.out.println(result);//13
		System.out.println(a + b);//13
		System.out.println(10 + 3);//13
		System.out.println(10 - 3);//7
		System.out.println(10 * 3);//30
		System.out.println(10 / 3);//3
		System.out.println(10 % 3);//1
		
		//++:
		//++a:先自增1,再使用
		int a = 10;
		System.out.println(++a);//11
		System.out.println(a);//11
		//b++:先使用,再自增1
		int b = 10;
		System.out.println(b++);//10
		System.out.println(b);//11
		
		//--:
		//--c:先自减1,再使用
		int c = 10;
		System.out.println(--c);//9
		System.out.println(c);//9
		//d--:先使用,再自减1
		int d = 10;
		System.out.println(d--);//10
		System.out.println(d);//9
	*/
	public static void main(String[] args){
		
		
		
	}
}
public class Test02{
	/**	
		知识点:算数运算符的深入
		符号:+、-、*、/、%、++、--
		
		//特殊点1:byte类型做运算会先向上转型成int类型
		//注意:
		//	1.自动转型使用最高位补位
		//	2.强制转型从最高位开始舍弃
		byte b1 = 10;
		byte b2 = 20;
		
		//b1 - byte:0000,1010
		//	    int:0000,0000,0000,0000,0000,0000,0000,1010
		//b2 - byte:0001,0100
		//		int:0000,0000,0000,0000,0000,0000,0001,0100
		//		int:0000,0000,0000,0000,0000,0000,0001,1110
		//	 (byte):0001,1110
		
		byte result = (byte)(b1 + b2);
		System.out.println(result);
		
		//特殊点2:short类型做运算会先向上转型成int类型
		short s1 = 10;
		short s2 = 20;
		
		//s1 - short:0000,0000,0000,1010
		//	     int:0000,0000,0000,0000,0000,0000,0000,1010
		//s2 - short:0000,0000,0001,0100
		//		 int:0000,0000,0000,0000,0000,0000,0001,0100
		//		 int:0000,0000,0000,0000,0000,0000,0001,1110
		//	 (short):0000,0000,0001,1110
		
		short result = (short)(s1 + s2);
		System.out.println(result);
		
		//特殊点3:byte和short类型做运算会先向上转型成int,其余数值型按照取值范围大的类型返回数据
		byte b = 10;
		short s = 10;
		int i = 10;
		long l = 10;
		float f = 10;
		double d = 10;
		
		System.out.println(b + b);//结果的数据类型是:int
		System.out.println(b + s);//结果的数据类型是:int
		System.out.println(b + i);//结果的数据类型是:int
		System.out.println(i + l);//结果的数据类型是:long
		System.out.println(i + f);//结果的数据类型是:float
		System.out.println(l + f);//结果的数据类型是:float
		System.out.println(l + d);//结果的数据类型是:double
		System.out.println(f + d);//结果的数据类型是:double
		
		//特殊点4:++a; 和 b++;没有区别,因为分号是执行语句的结束,不管先加还是后加都给我加
		int a = 10;
		++a;
		System.out.println(a);//11
		
		int b = 10;
		b++;
		System.out.println(b);//11
		
		//特殊点5:
		int num = 10;
		//底层实现:num = (int)(num+1);
		++num;
		System.out.println(num);
		
		//特殊点6:char类型可以做运算
		char c = 'a';//'a'的码值是97
		int i = c+1;
		System.out.println(i);//98
		
		经典面试题一:输出结果为?
			int a = 8;
			int b = (a++)+(++a)+(a*10);
			//a = 10
			//b = 8 + 10 + 10*10
			System.out.println(b);
			
		经典面试题二:输出结果为?
			int i = 0 ;   
			//底层实现:
			// i = (int)(i+1);
			// i = i;
			i = ++i; 
			System.out.println(i);//1
			
		经典面试题三:输出结果为?
			int i = 0;   
			//底层实现:
			// int temp = i;//temp作为临时变量,记录了i最初始的值 -- 0
			// i = (int)(i+1);//i确确实实自增了-- 1
			// i = temp;//将temp赋值给i -- 0
			i = i++;  
			System.out.println(i);//0
	*/
	public static void main(String[] args){
		
		
		
	}
}
public class Test03{
	/**	
		知识点:赋值运算符
		符号:=、+=、-=、*=、/=、%=
		
		注意:
			=为赋值运算符,将右边的值赋值给左边的变量
			
		int num = 10;
		
		num += 5;//num = (int)(num+5);
		num -= 5;//num = (int)(num-5);
		num *= 5;//num = (int)(num*5);
		num /= 5;//num = (int)(num/5);
		num %= 3;//num = (int)(num%3);
		
		System.out.println(num);
		
		经典面试题一:输出结果为?
			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; //short和int做运算会向上转型成int,如果没有强转就会报错

			short s=1; 
			s += 1;
			
		赋值规则:
					 s   += 1                s  = (short)((s)  +    (1))
			复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1) op 	(E2)),其中T是E1的类型。
	*/
	public static void main(String[] args){
		
		
	}
}
public class Test04{
	/**	
		知识点:关系运算符
		符号:==、!=、>、>=、<、<=
		
		注意:
			==判断两个值是否相等
			!=判断两个值是否不相等
			关系运算符的结果必须是boolean
		
		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
		
		经典面试题一:输出结果为?
			int x = 10;
			int y = 10;
			boolean flag = (x == y);
			System.out.println(flag);//true
			flag = (x = y);//会报错 -- 因为boolean类型不能与其他类型兼容
			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
	*/
	public static void main(String[] args){
		
		
		
	}
}
public class Test05{
	/**	
		知识点:字符串拼接符
		符号:+
		
		注意:
			+两侧都是数值,该符号为算数运算符
			+两侧有一侧或两侧是字符串,该符号为字符串拼接符
	*/
	public static void main(String[] args){
		
		System.out.println(1 + 2 + "abc" + "def" + 1 + 2);
		//					 3   + "abc" + "def" + 1 + 2
		//					    "3abc"   + "def" + 1 + 2
		//							"3abcdef"    + 1 + 2
		//								"3abcdef1"   + 2
		//									"3abcdef12"
		
	}
}
//导包
import java.util.Scanner;

public class Test06{
	/**	
		知识点:Scanner类
		理解:Scanner是Java提供的专门用于在控制台输入数据的类
	*/
	public static void main(String[] args){
	
		//创建Scanner类的对象
		//人类  郭丹 = 新建 人类();
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入int类型的数据:");
		int i = scan.nextInt();//用户可以在控制台输入数据,并把数据赋值给i
		
		System.out.println("请输入double类型的数据:");
		double d = scan.nextDouble();
	
		System.out.println("请输入字符串类型的数据:");
		String str = scan.next();

		System.out.println(i);
		System.out.println(d);
		System.out.println(str);
		
		//错误示范:Scanner没有输入字符的功能
		//System.out.println("请输入字符类型的数据:");
		//char c = scan.nextChar();
		//System.out.println(c);
	}
}
import java.util.Scanner;
public class Test07{
	/**	
		知识点:逻辑运算符
		符号:
			&与		&&短路与
			|或		||短路或
			^异或
			!非
			
		注意:
			1.逻辑运算符运行结果都是boolean类型
			2.&、&&、|、||、^ 两侧都是boolean类型数据
			
		//&与:前后两侧都是boolean值,两侧都为true,结果才为true
		System.out.println(true & true);//true
		System.out.println(false & true);//false
		System.out.println(true & false);//false
		System.out.println(false & false);//false

		//&&短路与:前后两侧都是boolean值,两侧都为true,结果才为true
		System.out.println(true && true);//true
		System.out.println(false && true);//false
		System.out.println(true && false);//false
		System.out.println(false && false);//false	

		//& vs &&
		//&与:判断前者为false后,还会判断后者
		//&&短路与:判断前者为false后,不会判断后者,直接返回false,所以效率更高
		//ArithmeticException - 算数异常
		System.out.println(false && 10/0>3);

		//|或:前后两侧都是boolean值,两侧有为true,结果就为true
		System.out.println(true | true);//true
		System.out.println(false | true);//true
		System.out.println(true | false);//true
		System.out.println(false | false);//false	

		//||短路或:前后两侧都是boolean值,两侧有为true,结果就为true
		System.out.println(true || true);//true
		System.out.println(false || true);//true
		System.out.println(true || false);//true
		System.out.println(false || false);//false
		
		//| vs ||
		//|或:判断前者为true后,还会判断后者
		//||短路或:判断前者为true后,不会判断后者,直接返回true,所以效率更高
		System.out.println(true || 10/0>3);
		
		//^异或:前后两侧都是boolean值,两侧相同为false,不同为true
		System.out.println(true ^ true);//false
		System.out.println(false ^ true);//true
		System.out.println(true ^ false);//true
		System.out.println(false ^ false);//false
		
		//!非:置反
		boolean bool1 = true;
		System.out.println(!bool1);//false
		
		boolean bool2 = false;
		System.out.println(!bool2);//true
		
		练习题:在dos窗口输入一个数字,判断是否在50~100的区间内
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入数字:");
		int num = scan.nextInt();
		
		boolean bool = num>=50 && num<=100;
		System.out.println("输入的数字是否在50~100的区间内:" + bool);
	*/
	public static void main(String[] args){
	

		
	}
}
import java.util.Scanner;
public class Test08{
	/**	
		知识点:表达式
			5+6 算数表达式
			5>6 关系表达式
	
		知识点:三目运算符/三元运算符
		
		语法规则:变量 = (表达式)?值1:值2;
			
		理解:表达式的结果必须是boolean值
			true - 将值1赋值给变量
			false- 将值2赋值给变量
			
		做实验:
			int num = (false)?10:20;
			System.out.println(num);
			
		案例1:在控制台输入两个int类型的数据,判断大小,输出最大值
			Scanner scan = new Scanner(System.in);
		
			System.out.println("请输入第一个数字:");
			int a = scan.nextInt();
			System.out.println("请输入第二个数字:");
			int b = scan.nextInt();
			
			int max = (a>b)?a:b;//判断a是否大于b,如果成立就返回a,否则返回b
			System.out.println("最大值为:" + max);
			
		案例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);
			
		案例3:在控制台输入二个int类型的数据,判断大小,输出最小值
			Scanner scan = new Scanner(System.in);
		
			System.out.println("请输入第一个数字:");
			int a = scan.nextInt();
			System.out.println("请输入第二个数字:");
			int b = scan.nextInt();
			
			int min = (a<b)?a:b;
			System.out.println("最小值为:" + min);
			
		案例4:在控制台输入三个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;
			
			//最小值
			int min = (a<b)?a:b;
			min = (min<c)?min:c;
			
			//中间值
			int mid = a+b+c-max-min;
			
			System.out.println(min + "<" + mid + "<" + max);
			
		扩展面试题1:
			System.out.println((false)?10.9:9);//9.0
			
		扩展面试题2:
			char x = 'x';//码值 - 120
			int i = 10;
			System.out.println(false?i:x);//120
			
		扩展面试题3:
			char x = 'x';//码值 - 120
			System.out.println(false?100:x);//x
			System.out.println(false?100000:x);//120
			
		扩展 - 常量:在程序执行过程中,不可发生改变的量
		注意:数字字面量就是常量的一种
		
		三目运算符返回值规则:
			1.值1和值2都是常量的情况,按照取值范围大的类型返回数据
			2.值1和值2都是变量的情况,按照取值范围大的类型返回数据
			3.值1和值2一个是常量一个是变量的情况,判断常量是否在变量所属类型的取值范围里
				在 - 按照变量类型返回数据
				不在-按照常量类型返回数据
	*/
	public static void main(String[] args){
	
		
		
	}
}
public class Test09{
	/**	
		知识点:位运算符
		理解:将十进制的数据转换为二进制做运算符
		符号:
			&与		|或		^异或
			<< 左移
			>> 右移
			>>> 无符号位右移
			
		//&与:同位比较,两者为1,结果才为1
		byte b1 = 19;//0001,0011
		byte b2 = 21;//0001,0101
					 //0001,0001
		
		//b1 - byte:0001,0011
		//	    int:0000,0000,0000,0000,0000,0000,0001,0011
		//b2 - byte:0001,0101
		//		int:0000,0000,0000,0000,0000,0000,0001,0101
		//		int:0000,0000,0000,0000,0000,0000,0001,0001
		//	 (byte):0001,0001
		byte result = (byte)(b1 & b2);
		System.out.println(result);//17 - 0001,0001
		
		//|或:同位比较,两者有1,结果就为1
		int i1 = 19;//0000,0000,0000,0000,0000,0000,0001,0011
		int i2 = 21;//0000,0000,0000,0000,0000,0000,0001,0101
					//0000,0000,0000,0000,0000,0000,0001,0111
		System.out.println(i1 | i2);//23
		
		//^异或:同位比较,两者不同为1,相同为0
		int i1 = 19;//0000,0000,0000,0000,0000,0000,0001,0011
		int i2 = 21;//0000,0000,0000,0000,0000,0000,0001,0101
					//0000,0000,0000,0000,0000,0000,0000,0110
		System.out.println(i1 ^ i2);//6
		
		注意:
			&、|、^前后两侧是数值,该符号为位运算符
			&、|、^前后两侧是布尔值,该符号为逻辑运算符
			
		//<<左移:整体向左移动n位,就用n个0补位(补到最低位)
		//注意:左移一位相等于乘2
		int i = 1024;//0000,0000,0000,0000,0000,0100,0000,0000
					 //0000,0000,0000,0000,0001,0000,0000,0000
		System.out.println(i << 2);//4096
		
		//>>右移:整体向右移动n位,就用n个最高位/符号位补位(补到最高位)
		//注意:右移一位相等于除2
		int a = 1024;//0000,0000,0000,0000,0000,0100,0000,0000
					 //0000,0000,0000,0000,0000,0001,0000,0000
		System.out.println(a >> 2);//256
		int b = -1024;//1111,1111,1111,1111,1111,1100,0000,0000
					  //1111,1111,1111,1111,1111,1111,0000,0000
		System.out.println(b >> 2);//-256
		
		//>>>无符号位右移:整体向右移动n位,就用n个0补位(补到最高位)
		//注意:>>和>>>在处理正数的情况下没有区别
		int c = 1024;//0000,0000,0000,0000,0000,0100,0000,0000
					 //0000,0000,0000,0000,0000,0001,0000,0000
		System.out.println(c >> 2);//256
		int d = -1024;//1111,1111,1111,1111,1111,1100,0000,0000
					  //0011,1111,1111,1111,1111,1111,0000,0000
		System.out.println(d >>> 2);//1073741568
		
		面试题:描述下列代码运行结果
		考点:char类型的取值范围没有负数,向上转型是用0补位
		//-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
		System.out.println((int)(char)(byte)-1);//65535
	*/
	public static void main(String[] args){
			
		
	}
}
public class Work01{
	/**	
		1.请实现两个整数变量的交换
		
	*/
	public static void main(String[] args){
		
		int a = 1;
	   	int b = 2;
		
		//经过交换之后,这里需要大家实现交换的代码		                                                
     	
		//解决方案1:
		//缺点:有第三方变量的介入
		//int temp = a;
		//a = b;
		//b = temp;
		
		//解决方案2:
		//缺点:如果数字过大,做运算可能会失去精度
		//a = a+b;//a-3
		//b = a-b;//b-1
		//a = a-b;//a-2
		
		//解决方案3:
		a = a^b;//a - 3
		b = a^b;//b - 1
		a = a^b;//a - 2
		
		System.out.println(a);//2
		System.out.println(b);//1
	}
}
public class Work02{
	/**	
		2.求长方形的周长 和 面积 长为1.5 宽为 4
	*/
	public static void main(String[] args){
		
		double length = 1.5;
		double width = 4;
		
		double perimeter = (length+width)*2;
		double area = length * width;
		
		System.out.println("周长为:" + perimeter);
		System.out.println("面积为:" + area);
		
	}
}
public class Work03{
	/**	
		3.一辆汽车 以40km/h的速度行驶,行驶了45678.9km,求所用的时间
	*/
	public static void main(String[] args){
		
		double length = 45678.9;
		double v = 40;
		
		double t = length/v;

		System.out.println("所有时间为:" + t);
		
	}
}
public class Work04{
	/**	
		4.定义字符变量赋值为 'A' -->输出 'a'
		
		'A' - 65
		'a' - 97
	*/
	public static void main(String[] args){
		
		char c = 'A';
		
		c = (char)(c+32);
		
		System.out.println(c);
	}
}
import java.util.Scanner;
public class Work05{
	/**	
		5.键盘录入两个整数 求 两个整数的 乘积
	*/
	public static void main(String[] args){

		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入第一个数字:");
		int a = scan.nextInt();
		System.out.println("请输入第二个数字:");
		int b = scan.nextInt();
	
		int result = a*b;
		System.out.println("乘积为:" + result);
	}
}

总结及作业

1.算数运算符(+、-、*、/、%、++、–)
注意:特殊点和面试题

2.赋值运算符(=、+=、-=、*=、/=、%=)
注意:复合赋值的底层公式

3.关系运算符(==、!=、>、>=、<、<=)
注意:关系运算符的结果都是boolean类型的值

4.字符串拼接符(+)

5.Scanner类
注意:感受面相对象的思想

6.逻辑运算符(&、&&、|、||、^、!)
注意:逻辑运算符的结果都是boolean类型的值

7.三目运算符
注意:语法结构、返回值规则

8.位运算符(&、|、^、<<、>>、>>>)

9.运算符的优先级别(不用记,灵活运用小括号)

作业:
1.知识点的梳理文档 – Day03.md
2.代码至少3遍
3.课后作业
4.复习:标识符、关键字、变量、基本数据类型及转型
5.预习:分支语句(if、switc)、循环语句(for)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值