ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java学习笔记008 面向对象(四)多态

2022-08-13 20:02:31  阅读:170  来源: 互联网

标签:obj String java Object 数据类型 多态 new Integer 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

标签:obj,String,java,Object,数据类型,多态,new,Integer,008
来源: https://www.cnblogs.com/zhengcg/p/16581426.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有