Java自学笔记Day04

day04

Java逻辑运算符

双语和单语的区别

1.&&和&的区别
  1. 最终结果一样;
  2. &&具有短路效果,左边是false ,右边不执行;
class Demo_Operator 
{
	public static void main(String[] args) 
	{
		int x = 3,y = 4;
		//System.out.println((++x == 3) & (++y == 4));			//false & false = false
		//System.out.println("x = " + x);
		//System.out.println("y = " + y);
		
		System.out.println("----------------------------------------------");
		System.out.println((++x == 3) && (++y == 4));				//false & false = false
		System.out.println("x = " + x);
		System.out.println("y = " + y);
		
	}
}
2.||与|的区别
  1. 最终结果都一样;
  2. ||具有短路效果,左边为true,右边不执行;

位运算符

  • &有0则0;
  • |有1则1;
  • ^相同则0,不同则1
  • ~按位取反
class Demo02_Operator 
{
	public static void main(String[] args) 
	{
		/*
		*  &有0则0
		*  |有1则1
		*  ^相同则0,不同则1
		*  ~按位取反
		*/

		System.out.println(6 & 3);
		System.out.println(6 | 3);
		System.out.println(6 ^ 3);
		System.out.println(~6);
		/*
			110
		&   011
		-----------
			010

		---------------------
				00000000 00000000 00000000 00000110 
按位取反后补码	11111111 11111111 11111111 11111001
原码            10000000 00000000 00000000 00000111

		*/

	}
}
        /*
		*  位异或运算符的特点
		*  ^ 的特点:一个数据对另一个数据位异或两次,该数本身不变;
		*/
		System.out.println(5^10^10);
		System.out.println(5^10^5);

移位运算符

class Demo03_Operator 
{
	public static void main(String[] args)
	{
		/* 
		<<左移 左边最高位丢弃,右边补齐0
		>>右移 最高位是零,左边补齐0;最高位是1,左边补齐1
		>>> 无符号右移,无论最高位是0还是1,左边补齐0
		*/
		
		//左移,向左移动几位就是乘以2的几次幂
		System.out.println(12 << 1);
		
		//右移,向右移动几位就是除以2的几次幂
		System.out.println(12 >> 1);
		System.out.println(12 >> 3);
		System.out.println(12 >>> 1);
	}	
}

三元运算符

class Demo1_operator
{
	public static void main(String[] args) 
		//(关系表达式) ? 表达式1 : 表达式2 ;
	{
		int x = 10,y = 5;
		int z;
		z = (x > y) ? x : y ;
		System.out.println(z);
	}
}

键盘录入的基本格式讲解

A:为什么要键盘录入?

​ a: 为了让程序的数据更符合开发的数据;

​ b: 让程序更灵活一下;

B:如何实现键盘录入呢?

​ *按照格式来

/*
*a:导包
		*格式
			*import java.util.Scanner;
	 	*位置
			*在class 上面
 	*b:常见键盘录入对象
		*格式
			*Scanner sc = new Scanner(System.in)
	 *c 通过对象获取数据
		*格式
			* int x = sc.nextInt()
*/

import java.util.Scanner;
class  Demo01_Scanner
{
	public static void main(String[] args) 
	{
		/*Scanner sc = new Scanner(System.in);				//创建键盘录入对象;
		System.out.println("请输入一个整数");
		int x = sc.nextInt();								//将键盘录入的数据存储在x中
		System.out.println(x);*/

		//录入两个整数
		Scanner sc = new Scanner(System.in);				//创建键盘录入对象;
		System.out.println("请输入第一个整数");
		int x = sc.nextInt();								//将键盘录入的数据存储在x中
		System.out.println(x);

		System.out.println("请输入第二个整数");
		int y = sc.nextInt();
		System.out.println(y);
	}
}
//键盘录入练习
import java.util.Scanner;								//导入包中的类
class Test2_Scanner 
		/*
		*案例演示
		* A :键盘录入两个数据,并对这两个数据求和,输出其结果
		* B :键盘录入两个数据,获取这两个数据中的最大值
		*/

{
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);			//创建键盘录入对象
		System.out.println("请输入第一个数据");
		int a = sc.nextInt();
		System.out.println("请输入第二个数据");
		int b = sc.nextInt();
		int x =(a > b) ? a : b;
		System.out.println("和的结果是" + (a + b));
		System.out.println("较大值是"+ x);
	}
}

键盘录入练习

import java.util.Scanner;
class Test02_Scanner 
{
	/*
	 案例演示
	  A: 键盘录入两个数据,比较这两个数据是否相等;
	  B: 键盘录入三个数据,求三个数据中的最大值;
	*/
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数据");
		int a = sc.nextInt();
		System.out.println("请输入第二个数据");
		int b = sc.nextInt();
		boolean  x = (a == b);
		System.out.println("前两个数据相等" +  x);
		System.out.println("请输入第三个数据");
		int c = sc.nextInt();
		int temp = (a > b) ? a : b;
		int max = (temp > c) ? temp : c;
		System.out.println("Max是" + max);
	}
}

流程控制语句

A:什么是流程控制语句?

*流程控制语句:可以控制程序的执行顺序;

B:流程控制语句的分类;

  • 顺序结构/选择结构/循环结构

选择结构: Switch/If

if语句
/*
If语句的格式1
	if(比较表达式){
		语句体;
	}
执行流程:
	*先计算表达式的值,看其返回值是TRUE还是false;
	*如果是true,就执行语句体;
	*如果是false,就不执行语句体;
*/
/*
 *If语句注意事项;
	* a.比较表达式无论简单还是复杂,结果必须是boolean类型;
	* b. if语句控制的语句体如果是一条语句,大括号可以省略; //Int x = 10 是两句话
	* c. 一般来说: 有左大括号就没有分号,有分号就没有左大括号
*/
/*
A: If 语句格式2
	*  
	if(表达式){
		语句体1;
	}else {
		语句体2;
	}
B:	执行流程
   *首先计算表达式的值,看其返回是true还是false;
   *true则执行语句体1;
   *false则执行语句体2;
 C: 案例演示
	* 获取两个数据中的较大值;
	* 判断一个数据是奇数还是偶数,并输出一个奇数还是偶数
*/
import java.util.Scanner;
class Demo03_If
{
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数");
		int x = sc.nextInt();
		System.out.println("请输入第二个数");
		int y = sc.nextInt();
		if (x > y){
			System.out.println("较大的数是" + x);
		}else{
			System.out.println("较大的数是" + y);
		}
		if(x % 2 == 0){
			System.out.println(x + "是偶数");
		}
		else{
			System.out.println(x + "是奇数");
		}
	}
}
/*
 A: If语句的格式3
        
		if(比较表达式1){
			语句体1;
		}else if (比较表达式2){
			语句体2;
		}
		...
		else{
			语句体n+1;
		}
B: 执行流程
		*首先计算比较表达式1,看其返回值是true还是false;
		*如果是true,则执行语句体1,if结束;
		*如果是false,接着计算表达式2看其返回值;
		*同上
C: 注意事项: 最后一个else可以省略,但建议不要省略,可以对范围外的错误值做提示;
*/
class Demo05_If
{
	public static void main(String[] args) 
	{
		int x = 1;
		if (x == 1){
			System.out.println("男厕所欢迎您");
		}else if (x == 0)
		{	System.out.println("女厕所欢迎您");
		}else {
			System.out.println("无法识别您的性别");
		}
	}
}
/*案例演示
		A :键盘录入一个成绩,判断并输出成绩的等级
			90-100 优;
			80-90 良;
			70-80 中
			60-69 及
			0-59  差
		B: 键盘键入x的值,计算并输出y
			* x >= 3, y = 2 * x + 1;
			* -1 < x < 3 ,y = 2 * x;
			*x <= -1,y = 2 *x - 1;
*/
import java.util.Scanner;
class Test_If
{
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		//案例A
		System.out.println("请输入0~100的个成绩");
		int c = sc.nextInt();
		if (90 <= c && c <= 100){
			System.out.println("该生成绩为优");
		}else if (80 <= c && c< 90){
			System.out.println("该生成绩良好");
		}else if (70 <= c && c <80)
		{	System.out.println("该生成绩中等");
		}else if (60 <= c && c < 70)
		{	System.out.println("该生成绩及格");
		}else if(c > 0 && c <60){
			System.out.println("该生成绩为差");
		}else {
			System.out.println("成绩录入错误");
			}
		//案例B
		System.out.println("请输入x");
		int x = sc.nextInt();
		int y = 0 ;
		if (x >= 3)
		{	y = 2 * x + 1;
		}else if (-1 < x && x < 3)
		{	y = 2 * x;
		}else if (x <= -1){
			y = 2 * x - 1;
		}
		System.out.println("y的值是" + y);
	}
}
If语句的嵌套
import java.util.Scanner;
class Demo07_If
{
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数");
		int a = sc.nextInt();
		System.out.println("请输入第二个数");
		int b = sc.nextInt();
		System.out.println("请输入第三个数");
		int c = sc.nextInt();
		if (a > b){
			if (a >c)
			{	System.out.println(a + "是最大值");
			}else {
				System.out.println(c + "是最大值");
			}
		}else{
			if (b > c)
			{
				System.out.println(b + "是最大值");
			}else {
				System.out.println(c + "是最大值");								
			}
		}
	}
}
switch语句
/*
* A: switch 语句格式;
	 switch(表达式){			//基本数据类型可以接收byte,short,char,int
		case 值1:				//引用数据类型可以接收(JDK1.5)String字符串(JDK 1.7)
			语句体1;
			break;
		case 值2:
			语句体2;
			break;
			...
		default:
			语句体n;
			break;
	  }
* B:switch 语句的格式解释
*/
/*
switch 语句注意事项
	*case 后面只能是常量,不能是变量,而且多个case后面的值不能相同;
	*default可以省略,但不建议,因为它的作用是对不正确的情况给出提示;
	*特殊情况:
		* case就可以将值固定;*例如A B C D
	*break 可以省略吗?
		*最后一个可以省略,但建议最好不要省略
		*break省略可能会出现一个现象,case穿透;
	*default 一定要写在最后吗?
		*不是,可以任何位置,但建议放在最后;
	*switch 语句的结束条件
		*遇到break就结束;
		*遇到switch的右大括号
*/
class Test1_Switch 
{
	public static void main(String[] args) 
	{
		int week = 5;
		switch (week)
		{
		case 1:
			System.out.println("星期一");
		break;
		case 2:
			System.out.println("星期二");
		break;
		case 3:
			System.out.println("星期三");
		break;
		case 4:
			System.out.println("星期四");
		break;
		case 5:
			System.out.println("星期五");
		break;
		case 6:
			System.out.println("星期六");
		break;
		case 7:
			System.out.println("星期日");
		break;
		default:
			System.out.println("对不起,没有对应的星期");
		}
	}
}
switch语句和if语句的区别
使用场景:switch建议判断固定值时使用;if建议判断区间或范围时使用;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值