java学习之路3-----java的分支语句、运算符、类型提升与控制台输入

本文详细介绍了Java编程中的关键概念,包括运算符(算数、关系、逻辑、赋值和三目),类型提升,控制台录入方法,以及IF分支结构(单分支、双分支、多分支和嵌套)、switch分支和局部变量,以及while循环的运用。
摘要由CSDN通过智能技术生成

目录

一、运算符

1.算数运算符

2.赋值运算符

3.关系运算符

4.逻辑运算符

5.三目运算符

二、类型提升与控制台录入

1.类型提升

2.控制台录入

三、IF分支结构

1.IF单分支

2.IF双分支

3.IF多分支

4.IF嵌套

四、switch分支

1.switch应用

2.switch匹配字符串

五、局部变量

六、循环

1.while循环

七、总结

一、运算符

概述:参与运算的特殊符号 例如:+ - * / > = != 等

分类:算数运算符,关系运算符,逻辑运算符,赋值运算符,三目运算符

1.算数运算符

算数运算符:+ - * / % ++ --

//算数运算符:+ - * / %  ++  --(单目)
double a = 1+2.5;
System.out.println(a); //3.5 两个数相加,最终结果为操作数最高的类型

int b = 5/2;  //2 两个整数相除,最终结果取整
System.out.println(b); //2

int c = 5%2;
System.out.println(c);  //1  模/取余运算符

int i = 3;
//i++:后置自增,先打印结果,变量的值后+1
//++i:前置自增,变量的值先+1,再打印结果
//i--:后置自减,先打印结果,变量的值后-1
//--i:前置自减,变量的值先-1,再打印结果
System.out.println(i++);  //3  i=4
System.out.println(++i);  //i=5 5  
System.out.println(i--);  //5  i=4
System.out.println(--i);  //i=3 3  

2.赋值运算符

//赋值运算符:=  += -= *= /= %=
//基本赋值:=
//复合赋值:+= -= *= /= %=
int a = 1;  //初始化赋值
a = 3;      //基本赋值
System.out.println(a);  //3

a += 2;   //等价于a=a+2;  -->5
System.out.println(a);  //5

3.关系运算符

关系运算符: > >= < <= ==(等于) !=

规则:最终的计算结果为布尔类型,运算式子成立则为true,不成立则为false

//关系运算符:>     >=    <    <=    ==(等于)     !=
System.out.println(5>3);  //true
System.out.println(5>=3); //true 
System.out.println(5<3);  //false
System.out.println(5<=3); //false
System.out.println(5==3); //false
System.out.println(5!=3); //true

//说明:关系运算符很重要,因为后面的条件判断,循环,都需要关系运算符

4.逻辑运算符

逻辑运算符: && || !

//逻辑运算符: &&     ||     !
//逻辑运算符和关系运算符类似,最终结果为true或false;区别在于,逻辑运算符的操作数结果为true或false
//&&:操作数两边为true,则结果为true
//||: 操作数两边为false,结果才为false
//!:  true取反则为false;false取反则为true
System.out.println((5>3)&&(3<2));  //false
System.out.println(false&&true);   //false
System.out.println(false||true);   //true
System.out.println(!false);        //true


//应用场景:数学的范围判断   10<x<15
int x = 12;
//System.out.println(10<x<15);   //true不能参与关系运算

System.out.println((10<x)&&(x<15)); //true

//扩展应用: &逻辑与   |逻辑或
System.out.println((10<x)&(x<15)); //true

//分析特点:
//短路与&&:当第一个操作数为false时,不会执行第二个操作数
//逻辑与&: 当第一个操作数为false时,依然执行第二个操作数

//短路或||:当第一个操作数为true时,不会执行第二个操作数
//逻辑或|: 当第一个操作数为true时,依然执行第二个操作数 
//验证特点:
System.out.println("==========完美分隔符============");
boolean a=true;
//测试&& 和 &
//System.out.println(false&&(a=false));  //false
//System.out.println(false&(a=false)); //false
//System.out.println(a); //为true,则没有执行第二个操作数;为false,则执行到了第二个操作数 

//测试|| 和 |
//System.out.println(true||(a=false)); //true
System.out.println(true|(a=false)); //true
System.out.println(a);  //为true,则没有执行第二个操作数;为false,则执行到了第二个操作数

//结论:后续常用短路&&和||,因为执行效率更高

5.三目运算符

三目运算符: (关系表达式)?操作数1:操作数2

规则:关系表达式成立,则结果为操作数1;不成立则结果为操作数2

表达式:由运算符和操作数组成的式子 例如:1+2 算数表达式 5>3 关系表达式

应用场景:往往用于求最大值和最小值

//三目运算符:
String a = (5>3)?"结果为5":"结果为3";
System.out.println(a);

//应用场景:求最大值和最小值
int b = 5;
int c = 8;
int max = (b>c)?b:c;  //最大值
int min = (b<c)?b:c;  //最小值
System.out.println("最大值:"+max);
System.out.println("最小值:"+min);

二、类型提升与控制台录入

1.类型提升

//类型提升:
//在进行算数运算时:
//1.运算结果为操作数中最高的类型
//2.操作数中,都是byte或short类型,最终结果为int类型
byte a = 1;
int b = a+2;  //a+2--自动提升为int类型
System.out.println(b);

//字符串拼接+: 字符串类型与任意类型相加最终结果为String
String c = "aaa"+a;
System.out.println(c);  //aaa1

2.控制台录入

步骤:

1.导包 导入包名下的类名

2.实例化控制台对象 Scanner对象

3.通过控制台对象调方法来获取控制台的值

import java.util.Scanner;   //1.导包  导入控制台的类
public class Control{
	public static void main(String[] args){
		//2.实例化对象
		Scanner sc = new Scanner(System.in);  //new 对象
		System.out.print("请输入一个数:");
		//3.调用方法获取到控制台录入的值
		//int a = sc.nextInt();  //nextInt:获取整数值  阻塞方法  常用
		//String a = sc.next();    //next: 获取字符串的值    常用
		//注意:如果是nextInt,则只能接收整数,如果内容不匹配,则会出现输入不匹配异常InputMismatchException
		//扩展了解:
		//double a = sc.nextDouble();  //nextDouble:接收小数  不常用
		char a = sc.next().charAt(0);  //获取输入字符串中的第一个字符  不常用
		System.out.println("打印:"+a);
	}
}

三、IF分支结构

生活中的执行结构:

顺序结构:起床、刷牙、坐车、上学...

选择结构:上学选择交通工具--坐公交,做地铁,打车...

循环结构:重复性的每天敲代码...

程序中的执行结构:

顺序结构:从main方法出发,从头往下依次执行...

选择结构:IF,switch

循环结构:while,dowhile,for

1.IF单分支

import java.util.Scanner;   //1.导包  导入控制台的类
public class If1{
	public static void main(String[] args){
		/*
			语法结构:
			if(关系表达式){
				语句;
			}
			执行流程:关系表达式成立,则执行括号中的语句;不成立则不执行
			案例:如果同学考试及格,则请全班吃饭
		*/
		Scanner sc = new Scanner(System.in); //实例化对象
		System.out.print("请输入考试成绩:");
		int score = sc.nextInt();
		if(score>=60){
			System.out.println("考试及格,请全班吃饭");
		}
	}
}

2.IF双分支

//if双分支结构:if,else
//语法结构:
/*
			if(关系表达式){
				语句1;
			}else{
				语句2;
			}
			执行流程:如果关系表达式成立,则执行语句1;否则,执行语句2
*/
//案例:如果不良人考试及格,则请全班吃饭;否则,全班安慰他
System.out.print("请输入考试成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=60){
    System.out.println("考试及格,请全班吃饭");
}else{
    System.out.println("很遗憾,不及格;以后就习惯了!");
}

3.IF多分支

//if多分支结构   多选一
/*
			if(关系表达式1){
				语句1;
			}else if(关系表达式2){
				语句2;
			}...
			else if(关系表达式n){
				语句n;
			}else{
				最后的语句;
			}
			执行流程:如果关系表达式1成立则执行语句1;否则,如果关系表达式n成立则执行n;否则,执行最后的
		*/
//案例:根据钱包厚度决定请吃饭豪华度
/*
		    1万以上---海鲜大餐
			1千以上---大排档
			1百以上---麻辣烫
			10元以上--快餐
			否则------不吃
		*/
System.out.print("请输入你的钱包金额:");
Scanner sc = new Scanner(System.in);
int money = sc.nextInt();
/*
		if(money>=10000){
			System.out.println("吃海鲜大餐");
		}else if(money>=1000&&money<10000){
			System.out.println("吃大排档");
		}else if(money>=100&&money<1000){
			System.out.println("吃麻辣烫");
		}else if(money>=10&&money<100){
			System.out.println("吃快餐");
		}else{ //上面的条件都不成立,则执行else里的代码
			System.out.println("没钱吃饭,先饿一顿!");
		}*/

//优化:
if(money>=10000){
    System.out.println("吃海鲜大餐");
}else if(money>=1000){ //隐含了money<10000
    System.out.println("吃大排档");
}else if(money>=100){ //隐含了money<1000
    System.out.println("吃麻辣烫");
}else if(money>=10){ //隐含了money<100
    System.out.println("吃快餐");
}else{ //上面的条件都不成立,则执行else里的代码
    System.out.println("没钱吃饭,先饿一顿!");
}
//特点整理:
//if往往用于判断个范围; if判断要么从小到大,要么从大到小
//if多分支往往后面需要加else更完整

4.IF嵌套

//if嵌套:if语句中,又包含了if结构
//案例:输入学生的成绩,打印出对应的等级
/*
		   90-100   A
		   80~89    B
		   70~79    C
		   60~69    D
		   60以下   E
		*/
System.out.print("请输入百分制成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=0&&score<=100){
    if(score>=90){
        System.out.println("A");
    }else if(score>=80){
        System.out.println("B");
    }else if(score>=70){
        System.out.println("C");
    }else if(score>=60){
        System.out.println("D");
    }else{
        System.out.println("E");
    }
}else{
    System.out.println("输入有误~请重新输入!");
}
//if嵌套特点:先执行外层的if,再执行内层

四、switch分支

switch分支与if分支结构类似,都是用于选择结构;只是switch主要用于等值判断的匹配,而if主要用于判断一个范围

1.switch应用

//switch分支结构:
/*
		   swtich(变量){
			   case 值1:
			       语句1;
				   break;  //跳出switch
			   case 值2:
			       语句2;
				   break;  
			   ...
			   case 值n:
			       语句n;
				   break;
			    default:  //前面都不匹配,则执行default  类似if多分支的最后一个else
				   退出语句提示;
				   break;
		   }
		   执行流程:变量匹配case值,匹配上了,则执行里面的语句并退出;如果case都不匹配,则执行最后的default
		*/
//案例:请打印一周的伙食:
System.out.print("请输入一周的伙食(1~5):");
Scanner sc = new Scanner(System.in);
int week = sc.nextInt();
switch(week){
    case 1:
        System.out.println("鲍鱼");
        break; //如果没有break,则匹配上后,则会依次往下执行,直到遇到break
    case 2:
        System.out.println("猪脚饭");
        break;
    case 3:
        System.out.println("泡面");
        break;
    case 4:
    case 5:  //特殊场景
        System.out.println("馒头");
        break;
    default:
        System.out.println("输入有误~");
        break;
}

2.switch匹配字符串

在JDK1.7之后,switch匹配的变量可以是byte,short,int,char,String等

//switch变量匹配字符串案例:
//请输入四大美女的名字,打印对应的名号
System.out.print("请输入四大美女姓名:");
Scanner sc = new Scanner(System.in);
String name = sc.next();
switch(name){
    case "王昭君":
        System.out.println("落雁");
        break;
    case "貂蝉":
        System.out.println("闭月");
        break;
    case "杨玉环":
        System.out.println("羞花");
        break;
    case "西施":
        System.out.println("沉鱼");
        break;
    default:
        System.out.println("你的输入有误~");
        break;
}

小结:if和switch都是选择结构,但他们的应用场景不同:

往往if会更常用,if倾向于用在判断范围;switch倾向于用在等值匹配

五、局部变量

局部变量:在main方法中定义的变量,都是局部变量; 可以出现中方法的参数中,也可以出现在方法体中

特点:局部变量必须先赋值再使用,不赋值则会报错

作用域:就是有效范围,从定义处到方法体结束

变量重名问题:在重叠作用域下,不能用重名变量;否则冲突了

//int a;   //定义局部变量,必须先赋值再使用
{  //{}表示代码块区域  局部变量的作用域则在代码块里面
    int a = 3;  
    System.out.println(a);
}

int a = 5;  //定义了重名变量,会冲突
System.out.println(a);

六、循环

生活中的循环:重复的做某件事,做完后结束

程序中的循环:重复的执行某段代码,必须有退出的条件

1.while循环

//循环结构: while循环
/*
		    初始化语句;
			while(条件判断){
				语句体;
				增量语句;
			}
			执行流程:
			1.初始化语句---只执行一次
			2.条件判断,如果成立则执行语句体;如果不成立,则执行跳出循环
			3.条件判断成立,执行循环语句体
			4.执行增量语句,再进入条件判断中(为条件判断服务,会改变条件判断的变量值) 
		*/

//案例:打印100遍“我爱java”;
int i = 1;   //初始化语句
while(i<=100){ //条件判断;成立则执行循环体,不成立则跳出循环
    System.out.println("我爱java..."+i);  //循环语句体
    i++;   //增量语句,再回到条件判断
}
System.out.println(i); //最后i的值为101

七、总结

1.运算符
各种运算符应用
算数(重点),赋值,关系(重点),逻辑(重点),三目等运算符
2.类型提升与控制台录入
类型提升:算数运算的提升与字符串拼接的提升
3.IF分支语句(重点)
单分支,双分支,多分支,if嵌套
4.switch分支
switch的基本应用及匹配String变量的应用
5.局部变量(重点)
理解概述,特点,作用域,重名冲突问题
6.循环(重点)
循环概述,while循环结构

各位客官请听下回分解

创作不易,如果觉得还不错的话,可以点个赞给我个鼓励嘛🙌🙌🙌🙌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值