判断相等_Java入门笔记1/1(if 判断)

0c104f954272f6020ecb46b1abec34a0.png

0.基本语法:

if (条件) {
	//条件满足时执行
}

1.if else{...}

if (条件) {
	//条件满足时执行
} else {
	//条件不满足时执行
}

2.if ... else if ...串联

if (条件1) {
	//程序1
} else if (条件2) {
	//程序2
} else {
	//程序3
}

3.注:

(0).if 语句从上到下执行时,第一个判断成功,则后续的else就不再执行。

(1).使用 if 时,还要特别注意边界条件,如:原因是 > 和 >= 效果是不同的。

(2).浮点数在计算机中常常无法精确表示,并且计算可能出现误差,因此,判断浮点数相等用 == 判断不靠谱:

public class Main {
	public static void main(String[] args) {
		double x = 1 - 9.0 / 10;
		if (x == 0.1) {
			System.out.println("x is 0.1");
		} else {
			System.out.println("x is NOT 0.1");
		}
	}
}

正确的方法是利用差值小于某个临界值来判断:

public class Main {
	public static void main(String[] args) {
		double x = 1 - 9.0 / 10;
		if (Math.abs(x - 0.1) < 0.00001) {
			System.out.println("x is 0.1");
		} else {
			System.out.println("x is NOT 0.1");
		}
	}
}

4.判断引用类型相等:

在Java中,判断值类型的变量是否相等,可以使用==运算符。但是,判断引用类型的变量是否相等,== 表示“引用是否相等”,或者说,是否指向同一个对象。

例如,下面的两个String类型,它们的内容是相同的,但是,分别指向不同的对象,用==判断,结果为false:

public class Main {
	public static void main(String[] args) {
		String s1 = "hello";
		String s2 = "HELLO".toLowerCase();
		System.out.println(s1);
		System.out.println(s2);
		if (s1 == s2) {
			System.out.println("s1 == s2");
		} else {
			System.out.println("s1 != s2");
		}
	}
}

要判断引用类型的变量内容是否相等,必须使用equals()方法:

public class Main {
	public static void main(String[] args) {
		String s1 = "hello";
		String s2 = "HELLO".toLowerCase();
		System.out.println(s1);
		System.out.println(s2);
		if (s1.equals(s2)) {
			System.out.println("s1 equals s2");
		} else {
			System.out.println("s1 not equals s2");
		}
	}
}

注意: 执行语句 s1.equals(s2) 时,如果变量 s1为 null ,会报 NullPointerException :

public class Main {
	public static void main(String[] args) {
		String s1 = null;
		if (s1.equals("hello")) {
		        System.out.println("hello");
		}
	}
}

要避免 NullPointerException 错误,可以利用短路运算符 && :

public class Main {
	public static void main(String[] args) {
		String s1 = null;
		if (s1 != null && s1.equals("hello")) {
			System.out.println("hello");
		}
	}
}

还可以把一定不是 null 的对象 "hello" 放到前面:

if ("hello".equals(s)) { ... }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值