Java编程中两个重要的类Object 和 Class及java异常编程

(1)是所有Java类(API提供的类、自定义类)的最终父类.

(2)作用:在JVM管理对象中的过程中,有一套统一的类型检查和管理标准,便于建立较为清晰的单继承关系体系,可以在Object中定义一组可被子类继承、重写的通用方法.

(3)Object中的方法:

publicString toString():将对象内容转换为字符串的形式来表达;默认实现返回:类名@对象地址 . 与字符串变量结合运算时会自动调用(ex:”String”+object).

注意:建议重写toString方法.

 publicint hashCode():要根据对象的信息生成一个唯一的编码(哈希码),用于唯一标识对象;默认实现:根据对象在虚拟机中内部定义来生成哈希码。但默认实现可能存在的问题:不能根据对象的实际存储的数据来唯一标识对象.

注意:建议重写hashCode()方法【获取对象的所有属性,若属性为引用类型,则调用属性hashCode();将所有基本类型属性的值和引用类型的hashCode()值结合到一起运算;公式:值=素数*值(属性的hashCode())累加;重写后可以实现,若两个对象的属性值完全一样,则两个对象的HashCode值也相同】。在重写hashCode()过程中,若遇到引用类型的属性,必须保证其hashCode也被重写才可靠。

public Boolean equals(Object obj):用当前对象与指定对象比较相等的方法。equals比较的对象的“内容”(所有属性值)相等,默认实现是比较两个对象的内存地址是否相等。建议重写!重写的方法:判断传入的对象,是否与当前对象为相同类型(instanceof判断对象的类型),然后一个一个属性比较,看是否相等,若所有属性都相等,则结果为true,只要有一个属性不相等,结果为false.特点:equals方法的执行结果与hashCode()执行结果必须一致,两个对象的hashCode相同,则equals方法的执行结果为true,反之为false.

注意:equals与==的区别:

什么时候用==:若比较的值为基本数据类型(简单类型),若是引用类型,在需要比较两个引用是否指向同一地址时,使用==

什么时候用equals:比较两个引用类型的值,其内容(各个属性)是个相等.

注意:在重写equals方法时,其属性若是引用类型,则必须保证在定义时重写过hashCode方法.

public class getClass():返回运行时对象的类型信息,不建议重写.

public void finalize():资源回收方法,在垃圾回收机制执行时,会调用该方法释放内存资源,且只能在JVM垃圾回收器工作时,被自动调用.

作用:为JVM提供类的结构信息,每一个被JVM加载的字节码文件,都对应一个Class对象,对其进行描述。(使用主要体现反射机制)

注意:Class对象由JVM自动创建,编程人员无法通过API直接new对象.

对象克隆:

(1) 概念:Object.clone():创建当前对象的副本;前提条件:实现的Cloneable接口

(2) 意义:简化对象的拷贝,通过JDK平台统一一个对象副本的创建方式.

(3) super.clone():是java本地的方法,通过虚拟机JVM内部机制自动完成对象内容的复制。

(4) java对象的克隆方式:

1浅度克隆

特点:只完成当前对象这一层次上的拷贝复制,其属性值并没有真正意义上的拷贝,而是继续使用原对象的属性值.

优点:克隆性能较高.

缺点:拷贝出的对象对原有对象的依赖度较高.

2深度克隆

特点:对对象的所有全部拷贝出来(所有属性的值也都是拷贝结果,而非原值).

优点:拷贝出来的对象独立性高.

缺点:拷贝过程消耗性能,复杂度高

(5)克隆使用的场景

1对象的批量复制.

2有大量数据需要进行备份时.

对象数组及排序:

(1)   数组:

java平台上数组是一个特殊的对象类型

语法定义:new int[长度] 或{值,值,值} ,任意类型的数组都有length属性

(2)   对象类型的数组:

特点:对象类型的数组,可以用来组织多个类型相同对象引用

语法定义:new 类名[长度] 或{new 类(),new 类(),new 类()……}

(3)   利用数组有序的特点对数据进行排序:

对象数组排序的特点:下标中存储的数据时复杂数据类型,需要结合排序场景进行对数据属性进行比较.

对象数组排序方法:java.lang.Comparable接口

实现比较接口java.lang.Comparable提供的比较方法compareTo()方法:

1当前对象比比较对象小,则返回负数.

2当前对象比比较对象大,则返回正数.

3当前对象等于比较对象,则返回0.

优点:封装了同类对象比较大小的规则,让对象比较更加简便,java平台的标准比较接口,可以与Collections.sort()相结合,可以与Arrays.sort()相结合【使用归并排序】.

(三)Java异常编程

(1) 什么是异常?

异常是指在程序执行的过程中,没有按照预期执行情况运行的状态。

(2) 与错误的区别:异常可以避免,通过代码挽救,让程序继续执行;但错误

是可以影响程序继续执行的严重问题。

(3) 异常类:java.lang.Throwable–所有错误或异常的超类,两个子类:

java.lang.Exception –合理的应用程序想要捕获的异常条件.

java.lang.Error –不应该试图捕获的严重问题.

注意:运行时异常不需要强制声明,不需要强制捕获.

(5)   处理异常:

抛出异常:

1.throws

作用:用来在方法的声明部分,定义可以抛出的异常类型,可以指导方法实现者,告诉其声明情况可以将异常抛出,通知方法的调用者,这个方法有可能会出现所定义的这些异常,请注意捕获。

注:若在main方法的声明中进行定义,该类异常会抛出给虚拟机处理;若异常传递到虚拟机层面,则java程序有可能终止执行。

2.throw

作用:生成一个异常对象,并将它向外抛出。

捕获异常:

try/catch:

try:用来组织正常执行的代码实现,并随时准备对可能出现的异常进行处理(默认情况下try语句块总会执行,但一旦出现异常就会马上中止,跳转到catch块中执行).

catch:一旦在try中捕获到异常,则交给catch语句块来负责处理。

finally:该语句块中的代码总会被执行(难点:在try或catch语句块中通过return终止当前代码继续向下,或者在catch语句块中通过throws终止当前代码继续向下的情况,finally总会被执行到).

(6)   设置自定义异常:定义构造方法

1.无参构造器

2.带String参数的构造器

3.带Throwable参数的构造器

(7)   异常父子类关系对catch语句块设计的影响:影响catch语句块捕获异常的顺序,根据继承的特征,子对象在类型检查时也可以被认为是父类对象。

规则:从小异常捕获到大异常,从异常的子类捕获到异常的大类(调用父类的字符串或Throwable参数的构造方法(super)).

java基础2.0:Object、Class、克隆、异常编程的更多相关文章

  1. 7天学完Java基础之0/7

    笔记-7天学完Java基础之0/7 1.常用命令提示符(cmd) 启动:Win+R,输入cmd​

  2. java基础之 超类Object

    一.概述:       Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法.在不明确给出超类的情况下,Java会自动把Object作为要 ...

  3. java基础面试题:运行时异常与一般异常有何异同?error和exception有什么区别? 请写出你最常见到的5个runtimeexception?

    Throwable是Java错误处理的父类,有两个子类:Error和Exception. Error:无法预期的严重错误,导致JVM虚拟机无法继续执行,几乎无法恢复捕捉的 Exception:可恢复捕 ...

  4. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

  5. java基础知识总结--对象的克隆

    前提:在Java语言中所有的类的都是缺省的继承Java语言中的Object类的, protected native Object clone() throws CloneNotSupportedExc ...

  6. Java基础教程(19)--Object类

      Object类位于类结构树的最顶端,所有的类都是它的直接或间接子类,因此所有的类都继承了Object类的方法,我们可以在需要的时候覆盖这些方法.下面是一些将会在本文中讨论的Object类的方法: ...

  7. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  8. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  9. Java 基础 常用API (Object类,String类,StringBuffer类)

    Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...

随机推荐

  1. MYSQL基础知识总结

    !注释方式 #    --    单行 /*     */  多行 1.SELECT  column1,column2,column3  FROM tablename WHERE id <= 5 ...

  2. ubuntu14安装Qt

    首先下载Qt源码 https://download.qt.io/archive/qt/4.8/4.8.4/ 这里我下载的是qt-everywhere-opensource-src-4.8.4.tar. ...

  3. Noip2000 T3 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...

  4. 使用javascript实现的雪花飞舞的效果

    原作者是在body中不停的插入多个小div雪花来向下慢慢飘,一直飘到body的底部后,将雪花移除,于是,将原来的代码稍加修改,让他只是从屏幕的顶部飘落到屏幕底部(不是body的底部)后,就将雪花移除, ...

  5. FiveChess笔记

    //为0,表示该位置没有棋子:1表示该位置下过黑子:2白子 int[][] allChess = new int[19][19];//同时还通过下标记录了棋子的相对位置 1.对话框: 确认对话框(0是 ...

  6. Java读写文本文件

    1 字符输入(FileReader , char) import java.io.IOException; import java.io.FileReader; public class ep10_1 ...

  7. IntelliJ IDEA 编译maven项目以及运行测试前编译项目

    Maven编译及命令行输出 右侧Maven Projects, 打开, 选取某个Project打开至Lifecycle/package 或其他任何一个lifecycle选项, 在上面右键Run Mav ...

  8. DEDECMS之九 文章采集

    到很多网友都为织梦(DEDECMS)的采集教程头疼,的确,官方出的教程太笼统了,什么都没说,换个网站你什么都做不了,这个教程是最详尽的教程,让你一看即会! 一.列表采集 第一步.我们打开织梦后台点击采 ...

  9. BZOJ 1009 【HNOI2008】 GT考试

    Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学A1A2...Am(0< ...

  10. usb驱动开发14之设备生命线

    直接看代码吧. /*-------------------------------------------------------------------*/ /** * usb_submit_urb ...