Java学习笔记(五)

本文讲解了Java中的多态性原理,包括方法的重载和覆盖,以及对象的动态绑定。重点介绍了`instanceof`关键字的作用,以及如何检查对象是否为Object类或其子类。此外,详细剖析了String对象的创建方式,讨论了字面量与new操作符在内存上的差异。
摘要由CSDN通过智能技术生成

多态性

多态性是面向对象中最为重要的概念,在Java中有两种体现

  • 方法的overload和overwrite
  • 对象的多态性:Java引用变量有两个类型:编译时类型和运行时类型、编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给变量的对象决定,若编译时和运行时不一致,则称之为多态(Polymorphism)
    1. 向上转型(upcasting):父类类型的引用可以指向子类的对象,但此时不能访问子类添加的属性和方法,但父类转化为子类必须通过强制类型转换
      在这里插入图片描述

    2. 成员方法如果在实际对象中有,则实际调用实际对象类中的重写方法,称为动态绑定

instance of

x instance of A检验x是否为类A或者其子类的对象

Object类

Object是所有Java类的根父类,如果类的声明中未使用extends,则默认继承Object类。当 一个方法不确定传进来的类时,可以将这个方法的形参可以定义为Object类。
Object类中的主要方法有:

  • public boolean equals(Object obj):一般情况下比较两个引用类型是否指向同一个对象,当为File、String、Date以及包装类时,比较的是类型以及内容(原因是这些类中都重写了equals方法)
  • public int hashCode()
  • public String toString()

String对象的创建

在这里插入图片描述

在堆中有一个字符串常量池, 根据上图可知三种创建方式如下:

  1. 字面量创建String对象,此时只在常量池中创建一个对象
  2. 通过new创建,常量池有对象,堆中也有对象
    可以看出,字面量方式创建要更省内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值