选择判断语句

选择判断语句:
1.if语句
2.switch语句

一、if语句
if语句有三种形式:
1.if结构
if(条件){
代码块
}
2.if选择结构
if(条件){
代码块
}else{ //else意为:除了以上所有if条件之外的情况
代码块
}
3.多重if选择结构
该类型应用于多种情况
if(条件){
代码块
}else if(条件){
代码块
}
注:条件中的值必须为布尔值,代码块只有一条语句时,可省略{},但是为了增加可读性,建议不要省略

例子:

import java.util.Scanner;

public class Demo1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入您的4位会员卡号:");
		int member = input.nextInt();
		double num = Math.random();					//生成一个0.0xxx~9.9xxxx的随机数
		int result = (int)(num*10);					//生成0~9的随机数
		int baiwei = member/100%10;
		System.out.println("这次的幸运数字是:"+result);
		if(baiwei==result){
			System.out.println("您是我们的幸运会员!奖励一个MP3!");
		}else{
			System.out.println("谢谢参与!");
		}
	}
}

运算符的优先级:
最高优先级:()
最低优先级:=
优先级:!>算术运算符>关系运算符>&&>||
复杂条件使用()提高可读性
例:
javaScore>90&&musicScore>70 || javaScore100&&musicScore>60
(javaScore>90&&musicScore>70) || (javaScore
100&&musicScore>60)

为什么使用多重if选择结构:
单个if选择结构无法完成任务,多个if选择结构麻烦且效率低下

多重if选择结构中各个条件的顺序可以任意排列吗?
答:不可以,使用多重if选择语句处理问题时需要注意顺序
例:

		if(score>=80){
			System.out.println("优秀");
		}else if (score>=60){
			System.out.println("良好");
		}else{
			System.out.println("不及格");
		}

因为if选择结构也是从上到下依次运行,若第一个条件就完成了 ,下面的条件是不会在运行的,所以顺序不能搞乱,除非各个条件毫无关联

嵌套if选择结构
String的比较用equals。
equals与==的区别:
1.= =:直接比较的是两个对象的堆内存地址,如果相等,则说明这两个引用实际上指向的是同一个对象地址的,对于基本的数据类型(byte,int ,short,char ,float ,double,long,boolean )来说 ,它们是作为常量在方
法区的常量池里面以HashSet策略存储起来的,对于字符串"abc" 来说,一个常量只会对应一个地址,无
论有多少个"abc",都只会存储在一个地址,因此它们的引用都只会指向同一个地址, 基本的数据类型和String常量是可以用 == 直接比较的
————————————————
版权声明:本文为CSDN博主「MIMOCH」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MIMOCH/article/details/88700219
2.equals:JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了,而是比较数值。(他们的值相同,但是位置不同)
3.instanceof:instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

package Demo;
//需求:定义一个函数可以接受任意类型的动物对象,在函数内部要调用到动物特有的方法
abstract class Animal{
	String name;
	public Animal(String name){
		this.name=name;
	}
	public abstract void eat();
}
class Dog extends Animal{
	public Dog(String name){
		super(name);
	}
	public void eat(){
		System.out.println(name+"在吃肉");
	}
	public void run(){
		System.out.println(name+"在奔跑");
	}
}
class Fish extends Animal{
	public Fish(String name){
		super(name);
	}
	public void eat(){
		System.out.println(name+"在喝水");
	}
	public void swim(){
		System.out.println(name+"在游泳");
	}
}
class Demo4 {
	public static void main(String[] args) {
		Animal a=new Dog("哈士奇");
		a.eat();
		Dog d=(Dog)a;
		d.run();
		Fish f=new Fish("小丑鱼");
		print(f);
	}
	public static void print(Animal a){
		if(a instanceof Fish){
			Fish f=(Fish)a;
			f.swim();
			f.eat();
		}else if(a instanceof Dog){
			Dog d=(Dog)a;
			d.eat();
			d.run();
		}
	}
}

随机数:Random
新建随机数对象:
Random ran = new Random();//新建随机数对象
int r=ran.nextInt(10); //声明一个r来接受产生的随机数,10是随机数的范围0~10

int random=(int)(Math.random()*10);//声明一个random来接受产生的随机数,Math.random()为生成一个0.00xxx~0.9xxxx的随机数,*10后为0.0xxx ~9.9xxxx的随机数,由于是从double转换成int,所以需要强制转换(int),最后为0 ~9的随机数
嵌套if语句例子:

package Day01;

import java.util.Scanner;

public class Demo2 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的百米赛跑成绩");
		double time = input.nextDouble();
		Scanner input1 = new Scanner(System.in);
		System.out.println("请输入你的性别:");
		String name = input1.nextLine();
		if(time<10.0){
			System.out.println("您进入了决赛");
			if(name.equals("男")){
				System.out.println("您进入了决赛男子组");
			}else if(name.equals("女")){
				System.out.println("您进入了决赛女子组");
			}else{
				System.out.println("您输入的数据有误");
			}
		}else{
			System.out.println("很抱歉,您被淘汰了");
		}
	}
}

switch选择结构:
当选择判断的情况较少,且不那么复杂时,可以用到switch选择语句
用if选择语句:缺点:结构复杂,啰嗦
用switch语句:特点:条件为等值判断,随之产生的缺点也很明显,当条件数过多,就非常麻烦,比如条件为某个连续区间

switch结构为:

switch(表达式){	
	case 常量1:		//case后的常量不能相同
		语句;
		break;	//跳出语句,不可省略
	case 常量2:
		语句;
		break;
	...
	default:		//default块顺序可以变动,但要注意其执行顺序。通常,default块放在末尾,也可以省略
		语句;
}

注:default语句可以提前,但是如果不加上break跳出语句,会按顺序把下面的case内容输出,直至遇到break语句,所以若default提前则必须添加break语句

switch与多重if

相同点:都是用来处理多分支条件的结构
不同点:
switch:只能处理等值条件判断的情况
if:没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值