1.异常的体系
---------|Throwable
--------------| Error (错误) 错误一般是由于jvm或者是硬件引发的问题,所以我们一般都不会通过代码去处理。
--------------| Exception (异常) 异常我们一般都会通过代码去处理的。

----------------------|运行时异常:方法可以不声明,可以不处理

----------------------|编译时异常:必须声明,调用者必须处理异常

(1)异常的处理方式

方式一:捕获处理

捕获处理的格式

try{

可能发生异常的代码

}catch(捕获的异常类型 变量名){
                处理异常的代码
              }

捕获处理要注意的细节:
      1. 如果一个try块中出现了异常的代码,经过处理之后,那么try-catch块外面的代码可以正常执行。
      2. 如果一个try块中出现了异常的代码,那么在try块中出现异常的代码后面 的语句无法执行。
      3. 一个try块后面可以跟多个catch块,也就是一个try块可以捕获多种异常的类型,但是捕获的
      异常类型必须从小到大进行捕获。

方式二:抛出处理(throw throws)

抛出处理要注意的细节:
          1. 如果一个方法内部抛出了一个编译时异常对象,那么该方法必须要声明抛出。
          2. 如果调用了一个声明抛出编译时异常的方法,那么调用者必须要处理。
          3. 如果一个方法抛出了一个异常对象,那么该方法也会马上停止(一个方法遇到了throw关键字,那么该方法就会马上停止)
          4. 在一种情况下只能抛出一种异常对象。

throw 关键字是用于方法体之内抛出异常对象 的,throws是用于方法 声明上声明抛出异常类型的。

(2)自定义异常类

需求:模拟xiaoping上线时没有插网线,此时抛出一个异常

步骤:a.定义一个异常类需要继承Exception类(有些类不清楚可以查看API说明文档)

//定义一个异常类
class NoIpException extends Exception{
public NoIpException(String message){
Super(message);//调用父类构造函数
}
}

b.现在有一个方法调用时可能发生这个异常声明这个异常,这个方法我们将它放在一个Test测试类中

class Test{
publc static void main(String[] args){
String ip="192.1.1.124";
ip=null;
try{
fangFa(ip);//这个方法可能会发生一个异常在定义这个方法时需要声明
}catch(NoIpException e)
{System.out.println("请插入网线!")} public static void fangFa(String ip) throw NoIpException{
if(ip==null)
{throw NoIpException("没有插入网线boy")}
System.out.print("正常显示")
}
}
}

总结:调用一个方法可能会发生一个异常-》自定义这个异常-》方法声明这个异常-》方法体写出是么情况下抛出这个异常

(3)final可以释放代码资源

try{

}catch(){}

finally{

//只有执行try时这里才始终要执行

}

(4)权限修饰符: 权限修饰符就是控制被修饰的成员的范围可见性。

(5)jar打包

a.作用:1.方便用户快速运行一个项目

2.提供工具类以jar包形式给别人使用

在解压文件中就可以看到这些工具类了,都是通过jar打包的

b.用法:

jar cvf jar文件的名字 class文件或者文件夹

注意事项:

1.一个程序打包完后,需要在清单文件上指定入口类,格式:Mian-Class: 包名.类名

2.使用时,只能打开图像话界面,不能打开控制台程序

例子:

(6)Object类常用的方法:

toString(); 返回该对象的字符串表示。 返回一个字符串用于描述该对象的。
            疑问: toString() 有何作用? 重写toString之后,我们直接输出一个对象的时候,就会输出符合我们所需求的格式数据;我们可以试下object.toString()看看结果:结果是一个类完整名+hashcode值

equals(Object obj) 用于比较两个对象的内存地址,判断两个对象是否为同一个对象。

hashCode() 返回该对象的哈希码值(大家可以把哈希码就 理解成是对象的内存地址)/

java中的规范:一般我们重写了一个类的equals方法,我们都会重写它的hashCode方法。

java是开源....源代码公开...

查看源代码的方式:
                 方式一: 按住ctrl键,单击你需要看的源代码.

方式二:把光标移动到你需要查看代码处按下F3.

为什么我们要查看源代码:
                1,查看源代码可以了解别人是如何写出这个技术的,让我们了解的更加的深入。
                2. 吸收大牛的思想。

看源代码最忌讳的一点: 不要每行代码都弄懂是什么意思,能看个大概 猜出他意思就足矣。
           */

/下面例子主要意图:
          我们要也可以重写Object父类的方法;
          重写时需要加个@Override;
         一般重写一个类的equals方法时,也重写其HashCode方法

class Person{

int id;

String name;

public Person(int id, String name) {
                     this.id = id;
                     this.name = name;
                }

public Person() {
               }

//目前我需要直接输出一个对象的时候,输出 的格式是: 编号:110 姓名: 狗娃 这种格式。 目前Object的
               // toString方法无法满足子类的需求,那么这时候我们就应该对Object类的toString进行重写。
              @Override
              public String toString() {
              return "编号:"+ this.id + " 姓名:"+this.name;
              }

//为什么要重写:Object的equals方法默认比较的是两个对象的内存地址,我目前需要比较的是两个对象的身份证,所以Object类的equals方法不符合我                                     现在的需求。
              @Override
                 public boolean equals(Object obj) {
                    Person p = (Person)obj;
                    return this.id== p.id;
                 }

@Override
               public int hashCode() {
                   return this.id;
                }

}

(7).StringBuffer
            当改变字符串内容时,采用StringBuffer能获得更好的性能
            如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer)
            StringBuffer:一个存储字符的容器
            面试题目:使用StringBuffer无参构造函数创建一个对象时,默认初始容量为多少?如果长度不够了自增长多少倍?
            StringBuffer底层是依赖一个字符数组才能存储数据的,初始容量16,如果长度不够了,自动增长1倍。
            具有增删改判断等方法。
            StringBuilder是被设计为StringBuffer的简易替换
            不是线程安全的在单线程中性能比StringBuffer高

如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;当然,如果要保证线程安全,自然非                           StringBuffer莫属了。
            StringBuilder实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。

java入门了解04的更多相关文章

  1. Java入门指南-04 顺序、分支、循环

    顺序结构 从上至下,依次执行 if 语句在 Java 里,用 if 语句来实现“当满足 XXX 条件时,执行 YYY”这样的逻辑判断.例如,在使用共享单车时需要检查人的年纪.如果在 12 岁以下,则禁 ...

  2. Java入门 - 面向对象 - 04.抽象类

    原文地址:http://www.work100.net/training/java-abstract.html 更多教程:光束云 - 免费课程 抽象类 序号 文内章节 视频 1 概述 2 Java抽象 ...

  3. 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和

    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...

  4. 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结

    038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...

  5. 037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构

    037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构 本文知识点:Java中的switch结构 选择结构分类 选择结构只有如下2种 ...

  6. 036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构

    036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构 本文知识点:Java中的嵌套if结构 什么是嵌套if结构? 概念: 嵌套if结构 ...

  7. 035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构

    035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构 本文知识点:Java中的多重if结构 选择结构回顾 if选择结构 注意: 1.条 ...

  8. 034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述

    034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述 本文知识点:Java中的流程控制相关概念的认识 三大流程控制语句结构的简介 顺序 ...

  9. Java 入门进阶

    Java 入门进阶 發表於 2015-04-16 http://xielong.me/2015/04/16/%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%B7%A5%E7%A8%8B% ...

随机推荐

  1. Win7系统安装 MySQL 8.0.11

    1. 下载 MySQL 8.0.11 版本 下载地址: https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 2. 下载 ...

  2. form表单提交中文乱码(前台中文到JAVA后台乱码)问题及解决

    form表单提交中文乱码(前台中文到JAVA后台乱码)问题及解决 一.问题: 页面输入框中的中文内容,在后台乱码,导致搜索功能失效:(详细可以见后面的重现) 二.原因: 浏览器对于数据的默认编码格式为 ...

  3. Object.defineProperties()

    w https://docs.microsoft.com/en-us/scripting/javascript/reference/object-defineproperty-function-jav ...

  4. JavaScript确定一个字符串是否包含在另一个字符串中的四种方法

    一.indexOf() 1.定义 indexOf()方法返回String对象第一次出现指定字符串的索引,若未找到指定值,返回-1.(数组同一个概念) 2.语法 str.indexOf(searchVa ...

  5. Connection cannot be null when 'hibernate.dialect' not set

    严重: Exception sending context initialized event to listener instance of class [org.springframework.w ...

  6. C 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法(gcc使用zh_CN.GBK,或者zh_CN.UTF-8,VC++使用Chinese_People's Republic of China.936或者65001.)

    转自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ [在此向原文作者说声谢谢!若有读者看到文章转载时请写该转载地址 ...

  7. Vue.js之组件嵌套

    Vue.js中组件嵌套有两种方式 第一种:注册全局组件 例如在components文件夹下新建一个User.vue组件,然后在main.js文件中注册全局组件 //注册全局组件 Vue.compone ...

  8. 我的Android进阶之旅------>Android 众多的布局属性详解

    Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料,希望对读者有用. 第一类:属性值为true或false android:layout_centerH ...

  9. 前端基础-html(3)

    一.列表标签 1.ul(无序列表)标签 ul(unordered list)无序列表,ul下的子元素只能是li(list item),如下示例: <ul> <li>第一项< ...

  10. ReentrantLock VS synchronized

    ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票.定时锁等候和可中断锁等候的一些特性. 此外,它还提供了在激烈争用情况 ...