目录
一、增强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()指的是值是否相同