2021-09-04 每天学一点奇怪知识

本文介绍了Java中的增强for循环(foreach)及其与普通for循环的区别,强调了其在简化代码和处理数组及集合时的优势。接着讲解了instanceof关键字的用途,展示了如何判断对象是否属于特定类或实现特定接口。最后,探讨了Object类的基本用法,特别是equals方法的重写及其五个特性,并对比了equals与==的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、增强for循环丨foreach

语法

与普通for循环的区别:

总结:

二、instanceof

语法:

三、Object类

用法:

equals方法重写时的五个特性:

equals和==的区别:


一、增强for循环丨foreach

foreach其实是for循环的一个特殊简化版。

语法

for(元素类型  元素名称 : 遍历数组){ }
如果元素类型是类,可以利用 元素名称.  调用相关信息

与普通for循环的区别:

int arr[] = { 4,5,2,9 };
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}//输出4,5,2,9

for(int a:num){
System.out.println(a);
}//输出4,5,2,9

①foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到for循环效率更高。
②foreach不支持在循环中添加删除操作,因为在使用foreach循环的时候数组(集合)就已经被锁定不能被修改,否则会java.util.ConcurrentModificationException异常。


总结:

for的优点是变量可控,操作起来方便直观,缺点是较为繁琐,随处可用。 
foreach的优点是代码较为简洁,缺点是过于简洁,不便于对其遍历的元素进行复杂的操作,一般用于数组和集合。

二、instanceof

用来判断某个对象是否是指定类的实例,返回一个boolean类型数据

class Person implements Listen{ }
class Student extends Person implements Sound{ }
//在main方法中:
		Person per1 = new Person();
		Person per2 = new Student();
//		Student stu1 = new  Person();//编译报错
		Student stu2 = new Student();
		Listen lis1 = new Person();
		Listen lis2 = new Student();
//		Sound sou1 = new Person();//编译报错
		Sound sou2 = new Student();
//测试instanceof:
per1 instanceof Person   : true
per2 instanceof Person   : true
per1 instanceof Student  : false
per2 instanceof Student  : true
stu  instanceof Person   : true
stu  instanceof Student  : true
lis1 instanceof Person   : false
lis1 instanceof Student  : true

实例化对象 instanceof 类/接口

三、Object类

Object类是所有类的父类


用法:

① toString:
Object的toString方法, 返回对象的内存地址 
②equals():
指示某个其他对象是否“等于”此对象


equals方法重写时的五个特性:

自反性 :对于任何非空的参考值x , x.equals(x)应该返回true 。
对称性 :对于任何非空引用值x和y , x.equals(y)==true时,y.equals(x)==true 。
传递性 :对于任何非空引用值x , y和z ,如果x.equals==true && y.equals(z)==true ,则x.equals(z)==true 。
一致性 :对于任何非空引用值x和y ,多次调用x.equals(y)始终返回true或始终返回false ,前提是未修改对象上的equals比较中使用的信息。
非空性 :对于任何非空的参考值x , x.equals(null)应该返回false 。


equals和==的区别:

1、==是判断两个变量或实例是不是指向同一个内存空间 
   equals是判断两个变量或实例所指向的内存空间的值是不是相同 
2、==是指对内存地址进行比较 
   equals()是对字符串的内容进行比较 
3、==指引用是否相同 
   equals()指的是值是否相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值