Day10基础不牢地动山摇?Java基础( 三 )
java.lang.Objectjava.lang.Throwablejava.lang.Exceptionjava.lang.RuntimeExceptionjava.lang.IllegalArgumentExceptionjava.lang.NumberFormatException
发现NumberFormatException属于RuntimeException的子类,而在Java之中明确规定了,对于RuntimeException的异常类型可以有选择型的来进行处理,在开发之中,如果,没有处理,那么出现异常之后将交给JVM默认进行处理 。
Exception和RuntimeException的区别?请你举出常见的RuntimeException?
- Exception是RuntimeException的父类,使用Exception定义的异常必须使用异常处理
- RuntimeException可以由用户选择性的异常处理
- 常见的Exception:NumberFormatException,ClassCastException,NullPointException,ArithmeticException,ArrayIndexOutBoundException 。
1.6 断言:assert断言指的是程序执行到某行之后,其结果一定是预期的结果,而在JDK1.4之后增加了一个assert关键字 。
public class DuanYan{ public static void main(String args[]){int x = 10;//假设经过了很多操作assert x == 30:"x的内容不是三十";System.out.println(x); }}
默认情况下,Java之中的断言不会在正常执行的代码中出现,如果想要启用断言,则应该早呢更加一些选项 。
1.7 自定义异常在Java之中本省已经提供了大量的异常类型,但是在开发之中,这些异常类型根本就不能满足开发的需要,所以在一些系统架构之中往往会提供一些新的异常类型,来表示一些特殊的错误,而这种操作就称为自定义异常类,而要想实现这种自定义异常类,那么可以让一个类继承Exception或RuntimeException 。
class MyException extends Exception{ public MyException(String str){super(str); }}public class TestDemo5{ public static void main(String args[]) throws Exception{throw new MyException("自己的异常类"); }}
如果以后见到了一些没见过的异常类型,那么基本都是自定义的异常类 。
2、链表链表是一种基本的数据结构,但好似对于数据结构的部分,强调一下几点:
在整个Java开发领域之中,没有一本书去真正讲解数据结构的书,只能去看C语言的数据结构:在所有开发之中,都会存在数据结构的身影,可以这样去解释:数据结构的精通与否,完全决定于以后 。数据结构的核心:引用数据类型操作 。
链表实际上可以理解为遗传数据,或者按照专业性的说法,可以理解为动态的对象数组,对象数组的最大优点:是表示“多”的概念,例如:多个雇员 。但是传统的对象数组有一个最大的问题在于,里面保存的数据长度是固定的 。思考:如果现在想要扩大一个对象数组的范围?
建立一个新的对象数组,而后将原本的内容拷贝到新的数组之中,再改变原数组的引用方式 。
public class TestLinkDemo{ public static void main(String args[]){Object ob[] = new Object [3]; }}
但是再实际的开发之中,要面临的一个问题是:数组是一个定长的线性结构,也就是说虽然以上代码可以满足于存放多个内容,但是一旦我们呢的内容不足或者是内容过多,可能会导致资源的浪费 。要想解决此类问题最好的做法就是不定义一个固定长度的数组 ,有多少数据就保存多少数据 。
2.1 链表基本的结构class Node{//因为只有Node类才可以在保存数据的同时设置数据 private Object data;//真正要保存的数据 private Node next;//定义下一个节点 public Node(Object data){this.data = https://www.yf-zs.com/redian/data; } public void setData(Object data){this.data = data; } public Object getData(){return this.data; } public void setNext(Node next){this.next = next; } public Node getNext(){return this.next; }}public class TestLinkDemo{ public static void main(String args[]){//1.封装几个节点Node root = new Node("火车头");Node n1 = new Node("车厢1");Node n2 = new Node("车厢2");Node n3 = new Node("车厢3");//2.设置节点关系root.setNext(n1);n1.setNext(n2);n2.setNext(n3);//3.输出链表print(root); } public static void print(Node node){if(node != null){//表示当前是有节点的System.out.println(node.getData());print(node.getNext());//继续向下取出}}}
在整个链表的实现过程中,Node类的作用:保存数据和保存下一个节点,但是我们发现客户端需要自己来进行节点的创建操作以及关系的配置 。所谓的链表就是需要有一个单独的类,假设叫Link,通过Link类来实现Node的数据保存和关系处理 。
2.2 链表实现结构说明通过之前的分析,可以发现链表的最大作用类就是Node,但是以上程序都是由用户自己去匹配节点关系的,但是这些节点的匹配工作不应该由用户完成,应该由一个程序专门去负责 。
那么专门负责几点操作的类,就成为链表类——Link,负责处理几点关系,而用户不用关心节点的问题,只需关心Link的处理操作即可 。
推荐阅读
- 花边的常用材料有哪些
- 养羊成本 养羊需要什么基础条件?
- 美术技法 美术基础理论知识
- 三基是指哪三基
- 原神武器池多少发保底
- lo裙有哪些基础知识-生活百科知识
- 乳液和面霜的区别
- 地台电视柜怎么做的
- 面霜什么时候用
- 基础补水和深层补水区别
