java学习笔记008 面向对象(四)多态
2022/8/14 14:54:06
本文主要是介绍java学习笔记008 面向对象(四)多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.向上转型
//向上转型再向下转型 可
2.instanceof关键字
Object person = new Person(); if(person instanceof Person) { Person p = (Person)person;//Person类引用p指向Object类的对象person }
3.equals(Object obj) 与 ==
//==比较基本数据类型时,比较的是保存的数据是否相等,数据类型不一定相等 //==比较引用数据类型时,比较的是对象的地址是否相同 System.out.println(10 == 10.0);//true System.out.println('A' == 65);//true //equals()只适用于比较引用数据类型,Object类中equals()方法具体实现就是== //重写equals() public boolean equals(Object obj){ if(this == obj){ return true; //对象的地址相同 } if(obj instanceof 类名){ return 比较逻辑; } return false; }
4.关于return this == obj;的理解
/* 根据多态性,不同类型的引用a和b可以指向同一个对象,但是a和b所属的类必须有继承关系 比较两个对象的地址,如果相等,那么说明this和obj的类具有继承关系 */ if(this == obj)return true; //下面分析为什么是这样 //因为this==obj为true,那么this和obj指向同一个对象的地址,也就是说只有一次new,只可能是new子类对象,然后父类引用指向子类对象 Student stu = new Student("name"); Person person = stu; //可以向上转型 //指向同一个子类的对象,子类对象的某些属性和方法虽然可能在父类对象中是不可见的,但是可以通过后面的instanceof判断后强转拿出来比较。总之,指向同一个对象,肯定是“相等”的。
5.Object类中的toString()
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
6.JUnit单元测试
//好处:不用创建对象再调用方法,可以直接写方法名调用类中方法 //1.创建测试类 //2.创建测试方法 @Test public void 方法名(){ //测试代码 } //3.测试代码 //双击方法名,右键->run as junit
7.JDK5.0新特性 自动装箱拆箱
//自动装箱 int a = 12; Integer num = a; //自动拆箱 Integer num = new Integer(12); int a = num;
7.基本数据类型、String、包装类之间的相互转换
基本数据类型、String-->包装类 Integer a = new Integer(12); Integer b = new Integer("12"); 包装类<-->基本数据类型 Integer a = new Integer(12); int value = a.intValue;//或int value = a;自动拆箱 基本数据类型、包装类-->String String value = 12 + ""; String value = String.valueOf(12); String-->基本数据类型、包装类 int num = Integer.parseInt("1234");
8.一道面试题
Object obj = true ? new Integer(1) : new Double(2.0); System.out.println(obj);//1.0 三元操作符类型的转换规则:对两个结果的数据类型,进行自动的类型提升,若两个操作数不可转换,则不做转换,返回值为Object类型 这里相当于Object obj = true ? new Double(1) : new Double(2.0);
9.另一道面试题
Integer i = new Integer(1); Integer j = new Integer(1); System.out.println(i == j);//false Integer m = 1; Integer n = 1; System.out.println(m == n);//true //Integer类中的IntegerCache类里面有一个Integer[],-128~127直接从这个数组里面找 Integer x =128; Integer y = 128; System.out.println(x == y);//false
10.一个小tip
Vector vec = new Vector(); vec.addElement(new Integer(1)); Object o = vec.elementAt(0);//以上三行也可以用Object o = new Integer(1);替代 int num = (int)o; System.out.println(num);//1
这篇关于java学习笔记008 面向对象(四)多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行