- 浏览: 69314 次
- 性别:
- 来自: 天津
文章分类
最新评论
第一:向下转型
1.向下转型:
Animal a=new Dog(); Dog d=(Dog)a;这就是向下转型,注意Dog d=(Dog)a中必须是Dog类型的a才行。向下转型以后就不是多肽了
2.instanceof 关键字的引出:
向下转型以后将失去多肽的效果,向下转型指向转变成具体的子类,因此不能统一写的能力了(不能统一写成animal类了,只能把animal分别写成dog,cat,pig)。但是此对象到底是dog、cat、pig中的哪个呢?为了解决这个问题,我们引入了instanceof 关键字,用instanceof 做出判断
3.instanceof 关键字的使用:
if(ani instanceof Dog),这是向下转型的时候用到的。判断ani这个变量是不是dog类型,如果是dog的话,就可以向下转型成dog:Dog d=(Dog)ani
第二:object类:
1.object类的定义
object类是所有类的父类,所有类都实现这个类的方法。一个类间接或者直接的继承了object类。
2.object类的声明
Object obj=new 任何对象。
注意:object类可以声明成任何类型的对象,因为object类是根类,此时就相当于发生了向上转型了。因为任何类默认情况下就继承了object类
3.object类的常用方法:
1).==:比较的是栈内存的地址
2).equals:默认(object类)比较的也是栈内存的地址,我们可以重写object(父类)中的equals方法,让他比较堆内存的属性值(数据).
3).tostring是输出对象的地址,我们可以重写,重写获得对象属性值(具体值)
4).finalize:垃圾回收器,释放系统资源:当对象的引用消失了就把该对象回收了。也就是栈内存没有了,相应的堆内存数据就是垃圾了。堆内存数据不会立马回收
5).System.gc(),这是启动垃圾回收器,立马回收。如果不写这个方法的话,就由java虚拟机来回收,但是不是立马回收。
当程序结束的时候,该程序在内存中对应的.class文件将消失,当垃圾回收器确定不存在该对象的引用的时候,由垃圾回收器调用object类的finalize方法将此对象回收。释放资源
4.==是比较的地址,那么equals为什么也是比较地址呢?
因为object类中的equals方法是这样写的:
public boolean equals(Object obj){return (this==obj)},其中this就是调用equals方法的那个对象,所以虽然用了equals,但是最后还是用==进行比较的。
5.obejct类的equals默认比较的是地址,那么子类继承object类之后需要重写equals方法来比较两个对象的具体数据。
//重写父类中的equals方法,比较两个对象的属性值或者内容
public boolean equals(Object obj)
{
if(this==obj)
return true;
if(!(obj instanceof Student))
return false;
Student s =(Student)obj;
if(this.sno==s.sno&&this.age==s.age)
{
return true;
}
return false;
}
6.toString()方法在object类中默认比较的也是栈内存的地址,为了让tostring方法比较具体数据,就需要对tostring进行重写(当打印一个对象的时候,会默认调用toString(),默认获得对象的地址:system.out.print("s="+s)相当于system.out.print("s="+s.toString()))
//重写toString ,返回对象的内容
public String toString()
{
return "学号:"+sno+" 年龄:"+age;
}
7.finalize方法在object类中是这样定义的:
protected void finalize throws Throwable(){},
该方法不是抽象方法,但是方法体中没东西。
1.向下转型:
Animal a=new Dog(); Dog d=(Dog)a;这就是向下转型,注意Dog d=(Dog)a中必须是Dog类型的a才行。向下转型以后就不是多肽了
2.instanceof 关键字的引出:
向下转型以后将失去多肽的效果,向下转型指向转变成具体的子类,因此不能统一写的能力了(不能统一写成animal类了,只能把animal分别写成dog,cat,pig)。但是此对象到底是dog、cat、pig中的哪个呢?为了解决这个问题,我们引入了instanceof 关键字,用instanceof 做出判断
3.instanceof 关键字的使用:
if(ani instanceof Dog),这是向下转型的时候用到的。判断ani这个变量是不是dog类型,如果是dog的话,就可以向下转型成dog:Dog d=(Dog)ani
第二:object类:
1.object类的定义
object类是所有类的父类,所有类都实现这个类的方法。一个类间接或者直接的继承了object类。
2.object类的声明
Object obj=new 任何对象。
注意:object类可以声明成任何类型的对象,因为object类是根类,此时就相当于发生了向上转型了。因为任何类默认情况下就继承了object类
3.object类的常用方法:
1).==:比较的是栈内存的地址
2).equals:默认(object类)比较的也是栈内存的地址,我们可以重写object(父类)中的equals方法,让他比较堆内存的属性值(数据).
3).tostring是输出对象的地址,我们可以重写,重写获得对象属性值(具体值)
4).finalize:垃圾回收器,释放系统资源:当对象的引用消失了就把该对象回收了。也就是栈内存没有了,相应的堆内存数据就是垃圾了。堆内存数据不会立马回收
5).System.gc(),这是启动垃圾回收器,立马回收。如果不写这个方法的话,就由java虚拟机来回收,但是不是立马回收。
当程序结束的时候,该程序在内存中对应的.class文件将消失,当垃圾回收器确定不存在该对象的引用的时候,由垃圾回收器调用object类的finalize方法将此对象回收。释放资源
4.==是比较的地址,那么equals为什么也是比较地址呢?
因为object类中的equals方法是这样写的:
public boolean equals(Object obj){return (this==obj)},其中this就是调用equals方法的那个对象,所以虽然用了equals,但是最后还是用==进行比较的。
5.obejct类的equals默认比较的是地址,那么子类继承object类之后需要重写equals方法来比较两个对象的具体数据。
//重写父类中的equals方法,比较两个对象的属性值或者内容
public boolean equals(Object obj)
{
if(this==obj)
return true;
if(!(obj instanceof Student))
return false;
Student s =(Student)obj;
if(this.sno==s.sno&&this.age==s.age)
{
return true;
}
return false;
}
6.toString()方法在object类中默认比较的也是栈内存的地址,为了让tostring方法比较具体数据,就需要对tostring进行重写(当打印一个对象的时候,会默认调用toString(),默认获得对象的地址:system.out.print("s="+s)相当于system.out.print("s="+s.toString()))
//重写toString ,返回对象的内容
public String toString()
{
return "学号:"+sno+" 年龄:"+age;
}
7.finalize方法在object类中是这样定义的:
protected void finalize throws Throwable(){},
该方法不是抽象方法,但是方法体中没东西。
发表评论
-
二分法、冒泡排序
2017-03-03 10:31 323import java.util.Scanner;/** ... -
for、while循环,打印三角形、菱形
2017-03-03 09:54 514import java.util.Scanner;publi ... -
单线程与多线程
2016-01-16 12:10 587单线程:按照程序 ... -
字节流,字符流,对象流,序列化,持久化
2016-01-15 11:25 638第一:读写字符串 input(读文件里的内容) 的步骤: ... -
深入反射、IO文件、字节流
2016-01-15 11:11 435第一:反射相关的概念 1.反射中调用构造函数默认都是调用 ... -
百度字符串
2016-01-07 17:41 5231、length() 字符串的长度 例:char char ... -
map集合转化成list集合
2015-12-28 15:52 1612package emp; public class Emp ... -
反射
2015-12-28 15:47 387第一:反射的概念 1.(1).java程序源文件(属性和 ... -
泛型
2015-12-28 15:24 375第一:泛型:问题:1.在运算时候必须要向下转型。向下转型存 ... -
map集合和他的实现类hasHmap(不安全)和hashTable(安全)
2015-12-28 15:15 576第一:初步认识map 1.键值对(key与value是一一 ... -
set接口和它的实现类treeset和hashset
2015-12-01 22:50 511第一:set接口:set接口里面的元素不能重复,因此nul ... -
Collection集合根接口、两个子接口list和set
2015-11-30 22:29 586第一:由数组的 ... -
String与StringBuffer、Date日期与SimpleDateFormat 简单的日期格式化
2015-11-29 22:31 612第一:String类:字符串常量1.String是一个类, ... -
异常与异常类
2015-11-25 22:58 367第一.异常的概念:异常就是程序在运行中的错误,程序中的异常用异 ... -
快捷键
2015-11-24 23:06 2591.导包:ctrl+shift+O 2.找类:ctrl+shi ... -
接口,抽象类与接口的关系。多肽、向上转型与动态绑定的引出
2015-11-23 22:04 425第一:在引入接口之前 ... -
关键字:extends继承、abstract 抽象,继承与抽象类之间的关系、final最终的
2015-11-22 17:02 826----继承 1.extends的是继承或者扩展的意思。父类写 ... -
由static引出单例模式
2015-11-22 16:20 283单例模式的特点:保证在整个应用程序中只存在一个对象 单例模式的 ... -
this和static关键字,javadoc文档的产生
2015-11-22 15:51 301----this和static关键字 public class ... -
java内存分析
2015-11-22 15:16 2321.局部变量中的引用类型是把地址存到栈内存中,由栈内存中的地址 ...
相关推荐
因为在项目中遇到了instanceof,因此总结了对instanceof关键字的理解,有需要的可以下载来看看。
第05章 面向对象(下) 09 Instanceof关键字
java学习-java中的继承extents和instanceof关键字
Java中instanceOf关键字的用法及特性详解.rar
day10_22_用instanceof关键字进行类型判断
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。这篇文章主要介绍了老生常谈Java中instanceof关键字的理解,需要的朋友可以参考下
向下转型和instanceof运算符的应用.pdf
主要介绍了PHP中instanceof关键字详解及instanceof关键字有什么作用的相关资料,需要的朋友可以参考下
第21天,super,instanceof关键字的使用以及多态的认识
Java 实例 - instanceof 关键字用法源代码-详细教程.zip
288.286.JAVA基础教程_面向对象(中)-instanceof关键字的使用(288).rar
介绍了java final 和instanceof 关键字的区别,有需要的朋友可以参考一下
计算机后端-Java-Java核心基础-第14章 面向对象06 05. instanceof关键字的使用.avi
instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。 instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留...
instanceof 马克-to-win java视频的详细的描述介绍
NULL 博文链接:https://chaoyi.iteye.com/blog/2079574
RednaxelaFX,从事JVM研发戴翔、咚咔、evenX86 等人赞同在进入正题前先得提一句:既然楼主提问的背景是“被面试问到”,那很重要的一点
主要介绍了Java instanceof关键字的的进一步理解,本文用一些实例讲解了instanceof操作符的一些知识,需要的朋友可以参考下