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. 一行代码远离Google浏览器兼容问题的困扰

    跟Html相比,Web Flash开发的最大优势就在于兼容性好,因为FlashPlayer的开发商只有Adobe一家.但自从Google插了一脚进来,改版出自己的FlashPlayer以后,这一优势就 ...

  2. 深入Java核心 Java内存分配原理精讲

    深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...

  3. [No000065]python 获取当前时间

    要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年到现在时间相隔的时间.用下面的方式来取得当前时间的时间戳: import time print(time.time()) 输出的结果是 ...

  4. Oracle Update 语句语法与性能分析 - 多表关联

    Oracle Update 语句语法与性能分析 - 多表关联   为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 --客户资料表 create ...

  5. ESXi 5.5 命令行克隆虚拟机

    1. 开启ESXi的SSH功能,用vSphere Client登录ESXi, 选中服务器, 在右侧标签栏选择Configuration->SecurityProfile->Services ...

  6. httpserver

    改了下 # -*- coding:utf-8 -*- from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler HOST = &quo ...

  7. JavaScript弹出窗口技巧

    window.open ('faces/newPage.jsp','newwindow','height=300,width=700, top=50,left=50,toolbar=no,menuba ...

  8. Alpha版本测试报告

    请根据团队项目中软件的需求文档.功能规格说明书和技术规格说明书,写出软件的测试计划.测试过程和测试结果,并回答下述问题. 1. 在测试过程中发现了多少Bug? 2. 你是怎么进行场景测试(scenar ...

  9. 更好的逐帧动画函数 — requestAnimationFrame 简介

    本文将会简单讲讲 requestAnimationFrame 函数的用法,与 setTimeout/setInterval 的区别和联系,以及当标签页隐藏时 requestAnimationFrame ...

  10. ffmpeg在shell循环中只执行一次问题

    最近写了一个shell脚本,发现 ffmpeg 命令只执行了一次就停了,最后找到原因: ffmpeg有时会读取标准输入流,导致命令出错,解决办法是在ffmpeg命令之后添加 #xxx ffmpeg x ...