9、异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系。最顶端是Throwable,接着是Error,Exception,其中Exception又明显分为两类:RunTimeException和其他。

 public class Exceptions {
public static int function(int[] arr,int index) throws FuShuIndexException //自定义错误类声明抛出
{
/*注意Java自带错误处理类不需要throws关键字进行声明抛出就可以使用,
* 是因为这些类继承自RunTimeException,该异常及其子类编译时不被检测
* 但是运行时会报错,并且直接中断程序运行
*/
if(arr==null){
throw new NullPointerException("传入数组为空指针!");
}
if(index>arr.length-1){
throw new ArrayIndexOutOfBoundsException("哥们,数组角标越界了!");
}
if(index<0){
throw new FuShuIndexException("不能使用负数角标");
}
return arr[index];
}
public static void main(String[] args) throws FuShuIndexException //调用处抛出
{
int[] arr={1,2,3,4};
/*经过catch的处理就相当于解决异常,后续操作可以继续执行
* 并且如果一段代码可以检测多个异常,则需要多个catch语句,但是只能接受第一个错误
* catch语句如果接受Exception类型的对象,由于多态特性(子类可以替代父类使用)
* 此时,该语句可以接受任意类型的异常,所有如果有该句应该放在最后
*/
try{
int a=function(null,2);
System.out.println(a);
}catch(FuShuIndexException F){
System.out.println("负数角标异常!");
System.out.println("message:"+F.getMessage());
//sop会将内容转换为字符串在输出,对象也不例外,所以会自动执行toString()操作
System.out.println("string:"+F.toString());
/*getStackTrace()方法可以获取错误的详细信息
* printStackTrace()是将错误信息打印到控制台上,这是jvm默认使用的方法
*/
F.printStackTrace();
}catch(NullPointerException N){
System.out.println("传入数组为空指针!");
}catch(Exception E){
System.out.println("其他错误");
}
//finally语句总会执行,所有通常用于关闭/释放资源
finally{
System.out.println("over");
}
System.out.println("end");
}
}
/*Java中错误最顶端是Throwable类 ,所有的可用方法都在其中定义了,子类可以直接使用。
* 自定义错误类必须继承异常体系(通常是Exception/RuntimeExcetion),以便可以抛出,
* 并且按照规范应该以父类作为类名的结尾,提高阅读性
* 自定义的错误类如果想要被Java处理,必须使用两种操作:
* 1、声明抛出:就是在需要抛出错误的函数参数后用 throws关键字+自定义错误类名 作为声明抛出,注意可以多抛出
* ()
* !!!注意这里的抛出和Java处理机制中的抛出一样,调用处也需要抛出。
* 2、使用try{}catch(异常类型 变量){}finally{}结构处理
* 上面两种方式如果自己能处理就用2,不能处理就抛出
* !!!注意:错误处理类一般不用进行太多操作,而且超累已经进行了封装,所以可以直接调用就行,
* !!!创建自定义的错误处理类是方便将错误进一步分类
*/
class FuShuIndexException extends Exception{
FuShuIndexException(){ }
FuShuIndexException(String msg){
super(msg);
}
}

异常

1、

2、

3、

4、

10、Object对象简介:这个对象是所有对象的父类,所包含的方法是所有对象抽象出来的,所以其中方法每个对象都可以使用

 public class ObjectSuper {
public static void main(String[] args){
ObjectSuperDemo o1=new ObjectSuperDemo();
ObjectSuperDemo o2=new ObjectSuperDemo();
System.out.println(o1==o2);
//其实equals方法就是将o1==o2操作给封装了
System.out.println(o1.equals(o2));
/*Class对象:java中一切皆对象(类也一样,因为包含相同的内容被抽取为类对象)
* 类/接口在加载后会生成一个class文件(即字节码文件),也会在内存中生成一个相应的字节码文件对象(Class对象)
* 注意:一个类在内存中只会存在一份字节码文件对象,new的时候是根据这个对象生成新对象的。
* 使用对象的getClass()可以获取这个对象,也叫运行时Class对象
*/
/*toString():下面的println()的参数是字符串类型,所以所有类型都会进行转换
* 其中基本类型直接转换,而对象类型是调用toString()实现的。和equals()一样,
* Object对象对该方法进行了实现,但是子类可以对其进行覆盖
*/
System.out.println(o1.getClass());
}
}
class ObjectSuperDemo{ }
class ObjectSuperDemo1{
ObjectSuperDemo1(int num){
setNum(num);
}
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
/*覆盖Object的equals()的操作是常见操作,因为其是根据地址来进行判断
* 而在实际中往往需要判断对象特有内容是否相同,此时不必重建新方法,而是重写equals()
* 由于多态和类型转换问题,需要进行健壮性判断
* 总会被重写,而Object中仍有equals方法是因为它是所有对象的父类,如果没有实现(是抽象方法)
* 以后每个类中,不管是否有其他功能,都有先实现该功能,不方便
*/
public boolean equals(Object obj){
if(!(obj instanceof ObjectSuperDemo1)){
//return false;
throw new ClassCastException("类型不匹配");
}
ObjectSuperDemo1 o=(ObjectSuperDemo1)obj;
return this.num==o.num;
}
public int hashCode(){
return num;
}
}

Object对象

11、包package:使用编译器(如eclipse等)时,当建立一个类,会提示选择包对类进行管理,在windows系统中是以文件夹形式体现的。如果没有使用编译器手动建立Java文件,其中使用package时应该建立相应的文件夹(可以使用javac.exe中的命令/手动建立),并将class文件移入文件夹中才能运行。

使用包之后的注意点:

1、注意类名前应该加包名,

2、注意路径为包的路径,

3、想要被包外的类访问,必须将类的权限设置为public;并且其中的方法必须是public才能被其他包访问

使用包的一个问题就是写类时需要加上包名,不方便。Java中可以使用import关键字导入这个包.类文件,然后就可以直接使用类名访问。

jar包:是将Java中的包文件进行压缩形成的jar文件,jar文件不需要解压就可以被用来访问其中的包

Java学习笔记三.3的更多相关文章

  1. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  2. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  3. Java学习笔记三:Java的变量、常量、变量的类型及使用规则

    Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...

  4. Java学习笔记三.2

    5.继承 //Java中所有对象都显式/隐式的继承子Object类 class fu{ fu(){ System.out.println("fu..."+getNum()); sh ...

  5. Java学习笔记三——数据类型

    前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...

  6. Java学习笔记三---unable to launch

    环境配置好后,在eclipse下编写HelloWorld程序: ①创建新工程 ②创建.java文件,命名为HelloWorld ③在源文件中添加main方法,代码如下: public void mai ...

  7. Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  8. Java学习笔记三:运算符

    1.算术运算符: GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/OperPrac01.java +  -  *  /  ...

  9. Java学习笔记三

    1.面向过程思想,强调的是过程(即动作,函数):面向对象思想,强调的是对象. 2.类与对象关系:类是对事物的描述(属性和行为-方法),对象是类的实例.对象通过new生成.属性也称成员变量;方法也称成员 ...

随机推荐

  1. 解决Struts中文乱码问题总结

    在进行struts开发的过程中.总也是出现非常多的乱码问题.但归根究竟,也仅仅是下面三种情况:  ㈠页面显示中文乱码  ㈡传递參数中文乱码  ㈢国际化资源文件乱码  以下就这三中情况介绍怎么在详细项目 ...

  2. 基于CC2530的ZigBee转以太网网关的设计与实现

    *已刊登至:<无线电>8月刊 物联网技术的实现中,无线技术是必不可少的部分. 近年无线技术的发展,将ZigBee推入人们的视线中.那么ZigBee是如何的一种技术呢?带着疑问.我查询了它的 ...

  3. oracle job有定时执行功能

    oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务.   oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的 ...

  4. centos7 keepalive双机热备~

    简单实现Keepalive双击热备~ 摘要:准备两台虚拟机A:192.168.161.7  B:192.168.161.35  虚拟ip:192.168.161.10 keepalive进程 具体关于 ...

  5. 局域网ARP病毒的清理

    局域网ARP病毒的清理 作者:IT动力源  来源:IT动力源收集整理     现在局域网中感染ARP 病毒的情况比较多,清理和防范都比较困难,给不少的网络管理员造成了很多的困扰.下面就是个人在处理这个 ...

  6. 使用iVMS-4200 存储录像数据时的设置

    1.安装软件时,选择:存储服务器 2.对存储服务器进行配置,具体配置见 配置手册.

  7. VS Code在本地进行调试和打开本地服务器

    进行本地调试 1.在扩展中搜索插件 Debugger for Chrome 进行安装.我已经进行了安装,就没有出现安装字样. 2.配置launch.json文件,根据步骤来.file就是你在浏览器中需 ...

  8. 学习《Python金融实战》中文版PDF+英文版PDF+源代码

    学习python处理金融数据,建议学习<Python金融实战>,比较实用,只不过Yahoo财经的API改了,书里的方法不再有效要改一改,还有就是会有一些代码缩进小问题,总体上对金融分析很实 ...

  9. modelForm所遇问题

    1. 通过modelForm创建表单所遇问题 id 在modelForm中无法创建使用 因为它是django的设置,自增的字段,而不是模型中所设置的字段. 当关联外键时,创建多选的下拉框时,需要注意此 ...

  10. 重新安装python2.6 和 yum (不可以直接安装yum yum 依赖于python2.6)

    (升级或卸载Python导致 yum出错) 一: 升级python导致yum出错 1. cd  /usr/bin/yum 2.  #!/usr/bin/python 修改为    #!/usr/bin ...