JAVA新手学习笔记——Java实战经典(李兴华)第二部分D

  Object 类

  一个类只要没有写明继承除了某个类,那么它默认继承的是object类。下面两行代码是一样:

  class  Person extends Object{

  }

  class Person{}

  Object 作为父类,有如下常用几种方法作为默认方法。

  方法名称                                     类型                                               描述

public Object()                                  构造                                               构造方法

public Boolean equals(Object obj)              普通                                               对象比较

public int hashCode()                            普通                                               取得Hash码

public String toString()                         普通                                               对象打印时调用

  简单介绍上述几种方法:

  toString 用于打印对象的内容信息

  equals Object类默认提供的是用于对象地址比较的,实际使用时候可以覆写

  Object类是所有类的父类,所有的对象可以向上向object类对象转换,包括数组和接口。

  包装类:

  包装类与基本数据类型一一对应

  Java设计提倡一种思想叫一切都是对象,JAVA数据类型包括基本数据类型和引用数据类型两种,基本数据类型不能称为对象,需要将基本数据类型进行包装。

基本数据类型                              包装类                                        父类

char                                     Character                                      Object

boolean                                  Boolean                                        Object

byte                                     Byte                                           Number

int                                      Integer                                        Number

short                                    Short                                          Number

long                                     Long                                           Number

float                                    Float                                          Number

double                                   Double                                         Number

  除了Character和Boolean两个类直属于Object类外,其他的数值型的类均属于类Number。Number类是一个抽象类,里面有很多抽象方法。

  装箱与拆箱

  装箱是将基本数据类型打包成对象,拆箱是将对象转换成基本数据类型。

  自动装箱:用包装类声明一个数值

  自动拆箱:用基本数据类型声明一个数值

  包装类的应用

  包装类应用最多的是将字符串与基本数值类型的转换

  第七章:异常的捕获与处理

  异常处理的格式:

try{

//可能出现异常的语句

} catch(异常类 异常对象){
//编写异常语句

}catch(异常类 异常对象){

//编写异常语句

}finally{

//一定会运行到的程序代码

}

  如果在try中产生异常,程序会自动跳转到catch语句中找到匹配的异常类型进行相应的处理。最后不管程序是否会产生异常,则肯定都会执行到finally语句,finally语句作为异常的统一出口。不管finally语句是可以省略的,如果省略了finally块,则在catch()块运行结束后,程序会跳到try-catch块之后继续执行。有多少个异常,就写上多少个catch语句,写上catch的语句,是为了抓到这些异常的信息

  异常处理的标准格式有:try….catch和try…catch….finally两种

  异常类的继承结构:

  在整个java异常结构中,有两个最常用一个是Exception,一个是Error,这两个类均是Throwable的子类。Exception是程序中出现的可能异常,可以用try。。。catch来处理,而Error是涉及到程序运行的环境JVM的问题,程序是无法处理的。通常把Exception和Error都称为异常,算术异常,数字格式化异常都是Exception的子类。

  异常信息的输出方式:在catch语句输出异常时,可以用System.out.println(异常对象)方式打印异常信息,也可以用Exception的子类的printStackTrace()方法输出异常信息,代码是:e.printStackTrace(),使用e.printStackTrace打印方式打印的方法是最完整的。

  JAVA的异常处理机制

  JAVA异常处理机制是面向对象方式处理的,处理步骤如下:

  1、一旦产生一个对象,首先会产生一个异常类的实例化对象

  2、在try语句中对此对象进行捕捉

  3、产生的异常对象与catch语句中的各种异常类型进行匹配,如果该异常对象属于异常类的实例,则执行catch中的代码。

  由对象的多态性可知,所有的子类实例可以全部使用父类接收,那么可以利用向上转型的概念,让所有的异常对象使用Exception类接收,这样可以处理所有异常。需要注意的是Exception处理的异常必须放在最后,因为它能处理的异常是最大的。也可以只用Exception来处理所有异常,但是不建议这样做。由于Exception和Error都是Throwable的子类,所以理论上也可以用Throwable来处理所有异常,但是Error异常是JVM的问题,已经超出了程序本身的处理能力,因此没有必要使用Throwable来处理所有异常。

  最好的异常捕获方式是:如果有多个异常最好分别捕获,最后再用Exception处理剩余的异常。

  throws 和throw关键字:

  throws关键字使用语法:

  public 返回值类型 方法名称(参数列表)throws 异常类{}

  public int div(int I,int j) throws Exception{

   int temp = I / j;

        return  temp;

 }

  throws 关键字代笔的语法意思是:使用throws修饰的方法,可能会产生异常,也可能没有产生异常,不管有没有异常产生,调用此方法处的方法都必须进行异常处理。

  使用关键字throw抛出异常:

  与throws不同的是,可以使用throw手动抛出一个异常类对象。

  使用语法:

  throw new Exception(“自己抛出异常”)

  一般throw不单独使用

  一般try-catch与throw搭配使用

  在被调用处生成一个异常类对象,然后传给主方法,由主方法处理

  Exception类和RunTimeException类

  异常的 继承关系:

  Exception——→RuntimeException——→IllegalArgumentException——→NumberFormatException

  NumberFormatException属于RuntimeException子类,Exception在程序中必须使用try-catch处理,RuntimeException如果有异常可以不使用try catch处理,将由JVM处理,但最好使用try——catch来处理

  断言

  断言的意思是程序到某个阶段一定会有某个中间结果出现,如果这个结果没有出现,那么程序必然出现了某种错误。

  使用语法:

  1、assert boolean表达式(即逻辑表达式,逻辑表达式返回的值是true或false)

  2、加上详细信息的断言表达式。assert boolean表达式 详细信息

  注意:虽然断言返回的是boolean值,但是不能作为逻辑条件在条件判断句中使用

  断言有运行结果检查功能,但开发中一般不使用。

  第八章 包及访问控制权

  本章介绍包及类的封装性

  包和windows中的文件夹是类似的,不同的文件夹下面可以有相同文件,类似的,不同的包下面可以有相同的文名文件。

  包的定义:package 包名.子包名

  编译时候带上参数:-d .

  javac -d . 类名

  -d:表示生成目录以package名为准

  .:表示在当前package中生成class文件

  import关键字:

  即导包。使用语法:

  1、import 包名.子包名...类名 //手动加载所需要的类

  2、import.包名.子包名.*//自动加载JVM所需要的类

  带有import的java文件编译时候,先编译import的类,再编译当前java文件中的类。被import的类,必须是public访问权限,否则会报访问权限错误。

  1和2两种方式导入的方式使用时性能是一样的,没有区别。使用2时自动加载所需的类,不需要的类不会被加载。

  当加载的包不止一个,并且不同的包下面有重名的类,如果用重名的类来实例化对象,就会报ambiguous(模棱两可的)错误,这时候,解决办法是实例化对象时候,用完整的包名+类名来实例化对象。

  JAVA提供的系统包常见的有:

  包名称            作用

  java.lang           JAVA的基本包,使用时侯自动导入

  java.reflect         反射包

  java.util        工具包,一些常见的类库和日期包都在此,掌握此包一些常见的设计思路会很好理解

  java.text          java文本处理类库

  java.sql          数据库操作包,提供数据库操作及接口

  java.net           完成网络编程

  java.io            输入输出处理

  java.awt           构成输入输出窗口工具包

  javax.swing        建立图形用户界面

  静态导入:

  import static 包.类.*

  导入的全部是一个类的静态方法,这样使用的好处是,调用时候,不用使用类.静态方法名(参数列表),直接使用:静态方法名(参数列表

  class文件的打包:jar命令的使用

  一套系统里面包含很多java文件,编译后会对应很多class文件,这样很麻烦,通常会将这些class文件进行打包压缩成.jar文件。使用命令jar。

  使用语法:jar -cfv 文件名.jar 包名  如:jar -cvf abc.jar abc

  查看jar包详细信息:jar -tvf jar文件名  如:jar -tvf  abc.jar

  java的封装性

  java封装性或访问控制权级别有四个关键字:private,default(或不写),protected,public

  private:本类内访问(文件内)

  default:本包内访问(文件夹内访问)

  protected:本包内及不同包的子类访问

  public:无访问限制

 

 

 

 

 

 

  

 

  

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值