首页 > 编程语言 >java学习笔记008 面向对象(四)多态

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

时间:2022-08-13 19:56:38浏览次数:69  
标签: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
From: https://www.cnblogs.com/zhengcg/p/16581426.html

相关文章

  • Java第七周
    Java堆(JavaHeap)是java虚拟机所管理的内存中最大的一块java堆被所有线程共享的一块内存区域虚拟机启动时创建java堆java堆的唯一目的就是存放对象实例。java堆是垃圾......
  • Three---面向对象与面向过程/属性和变量/关于self/一些魔法方法的使用/继承/super方法
    python的面向对象面向对象与面向过程面向过程面向过程思想:需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码(自己来做)......
  • 使用网关Zuul的时候,报java.lang.NoSuchMethodError: org.springframework.boot.web.s
    最近遇到一个困扰了我很久的问题(关于Zuul):报错界面如下:  原因是因为:Zuul与SpringBoot版本冲突,而SpringCloud又和SpringBoot版本关联,SpringCloud与SpringBoot......
  • 面向对象:多态
    多态就是同一个方法根据不同的发送对象而采取多种不同的操作(属性没有多态!)一个对象的实际类型是确定的例如:newPerson();newStudent();但是可以指向对象的引用的类......
  • Java反射原理和实际用法
    背景反射在Java中非常重要,是Java区别于其他编程语言的一大特性。Java中的AOP切面、动态代理等看起来像黑魔法一样的技术,就离不开反射、字节码等。这些技术能在不侵入原有......
  • Java学习 (19) Java数组篇(03)数组的使用
    目录数组使用数组使用一般分四种情况1.普通For循环2.For-Each循环(增强For循环)3.数组作方法入参4.数组作返回值语法实例多维数组语法实例数组使用数组使用一般分四......
  • Java – 网络编程
    使用Java进行网络编程时,由虚拟机实现了底层复杂的网络协议,Java程序只需要调用Java标准库提供的接口,就可以简单高效地编写网络程序。Java提供的这些标准库存在于java......
  • RS256 - java具体使用 非对称加密算法 - 总结心得
    1.背景有个需求需要在java使用非对称加密RS256算法,网上博客都翻篇了,基本都是赋值粘贴,没有个是可用的,80%都是粘贴了一篇c#语言写的代码,什么风气?以前的博客氛围哪里......
  • [JAVA]eclipse常用快捷键
    ①alt+/   (代码自动补全)    main然后alt+/补全main方法    syso然后alt+/补全输出语句②选中一行后ctrl+/     (对单行......
  • java第七周学习总结
    第一天:实现调用函数:importjava.util.Scanner;publicclassTestBMI{   publicstaticvoidmain(String[]args){       System.out.print("请输入您......