Exception

1.java 异常是java提供的用于处理程序中错误(指在程序运行的过程中发生的一些异常事件)的一种机制

2.java程序的执行过程中如果发生异常事件则自动生产一个异常类对象,该对象封装了异常事件的信息并被提交给java运行时系统,这过程称为throw异常;

当java运行时系统接收到异常对象时会寻找能处理这一异常的代码并交其处理,这过程称为catch异常

 public class TestEx1 {
     public static void main(String[] args) {
         TestEx1 test = new TestEx1();

         //捕获异常
         try {
             test.m(0);
             System.out.println("a");    //不会被执行
         } catch(ArithmeticException e) {
             e.printStackTrace();
             //System.out.println(e);
         }

         //try{}里面包含可能会出错的代码,如果里面出错了,他会交给catch{}处理,不影响你之后的代码运行
         //但是如果你try{}里面有多行代码第一行,第二行,第三行,如果第二行出错了,第三行是不执行的
         //如果有finally{},finally里面代码是处理后事的。比如说,你try里面有操作工作流的,那么如果出错了fianlly
         //可以关闭工作流对象,避免浪费资源。finally{}是必须执行的,不管是出错了,还是不出错。
         System.out.println("b");    //会被执行

     }

     //声明该方法可能抛出的异常
     public void m(int j) throws ArithmeticException {
         //手动往外抛异常
         if(j == 0) {
             throw new ArithmeticException("分母不能为0");
28         }
29     }
30 }

3.在一个try语句块中,父类异常的捕获语句不可以写在子类异常捕获语句的上面

4.重写方法需要抛出与原方法相同的异常或者不抛出

5.自定义异常:

  -1 通过继承Exception类声明自己的异常类

  -2 在方法的声明部分用throws语句声明该方法可能抛出的异常

  -3 在方法适当的位置生成自定义异常的实例并用throw语句抛出

 public class TestEx3 {
     public static void main(String[] args) {
         TestEx3 t = new TestEx3();
         t.manager();
     }

     public void manager() {
         try {
             regist(-3);
         } catch(MyException e) {
             System.out.println("登记失败,出错类型码:" + e.getId());
             e.printStackTrace();
         }

         System.out.println("操作结束");
     }

     //在方法的声明部分用throws语句声明该方法可能抛出的异常
     public void regist(int num) throws MyException {
         //在方法适当的位置生成自定义异常的实例并用throw语句抛出
         if(num < 0) {
             throw new MyException("人数为负值,不合理", 3);
         }
         System.out.println("登记人数:" + num);
     }
 }

 //自定义异常,通过继承java.lang.Exception类声明自己的异常类
 class MyException extends Exception {
     private int id;

     public MyException(String message, int id) {
         super(message);
         this.id = id;
     }

     public int getId() {
         return id;
     }
 }

Array

 public class TestArr2 {
     public static void main(String[] args) {
         Date[] days = new Date[3];

         for(int i=0; i<days.length; i++) {
             days[i] = new Date(2016, 7, i+1);
         }

         for(int i=0; i<days.length; i++) {
             days[i].info();
         }
     }
 }

 class Date {
     int day;
     int month;
     int year;

     public Date(int year, int month, int day) {
         this.year = year;
         this.month = month;
         this.day = day;
     }

     public void info() {
         System.out.println("year:" + year + " month:" + month + " day:" + day);
     }
 }

例程内存分析

 public class TestArr10 {
     public static void main(String[] args) {

         int[][] arr3 = {{3, 4}, {4, 4, 5}, {1, 2}, {5, 6}};
         int[][] arr4 = new int[4][];

         System.arraycopy(arr3, 0, arr4, 0, arr3.length);
         arr4[3][0]= 100;

         for(int i=0; i<arr4.length; i++) {
             for(int j=0; j<arr4[i].length; j++) {
                 System.out.print(arr4[i][j] + " ");
             }

             System.out.println();
         }
     }
 }

内存图如下:

穿插一下选择排序

 import java.util.*;

 public class $TestArr4 {
     public static void main(String[] args) {
         int[] arr = new int[args.length];

         //将从命令行键入的9个值转换为int并赋给int数组
         for(int i=0; i<args.length; i++) {
             arr[i] = Integer.parseInt(args[i]);
         }

         sort(arr);
         print(arr);
     }

     public static void print(int[] a) {
         for(int i: a) {
             System.out.print(i + " ");
         }
     }

     public static void sort(int[] a) {
         //排序
         //Arrays.sort(arr);

         //初版.每一趟排序中进行了多次交换显得没效率
         /*for(int i=0; i<a.length; i++) {
             for(int j=i+1; j<a.length; j++) {
                 if(a[i] > a[j]) {
                     int temp = a[i];
                     a[i] = a[j];
                     a[j] = temp;
                 }
             }
         }*/

         //★改进.
         int k = 0, temp = 0;

         for(int i=0; i<a.length; i++) {
             k = i;
             for(int j=k+1; j<a.length; j++) {
                 if(a[k] > a[j]) {
                     k = j;
                 }
             }

             if(k != i) {
                 temp = a[i];
                 a[i] = a[k];
                 a[k] = temp;
             }
         }
     }
 }

简单分析一下:

改进前的方法的思路(讨论的是第一躺排序),第一个数依次和后面的每一个元素比较大小,若第一个数小于该元素则交换位置若大于则继续和下一个数字比较,可想而知,确定最小的数并将其放置到第一位可能会有多次交换。那么,能不能把小于第一个数字的数做个标记,然后用这个标记的数和后面的继续比较,若还有更小的就标记更小的,重复上个步骤,等到全部比较完了后,再把这个标记数和第一个数交换,不就可以达到同样的目的了吗,而且就只交换了一次。这也就是改进后的排序的思路了。

Java Se 基础系列(笔记) -- Exception && Array的更多相关文章

  1. Java Se 基础系列(笔记) -- OO

    记录所学到的关于Java Se的一些基础知识 1.对象是通过“属性(成员变量)”和“方法”来分别对应事物所具有的静态属性和动态属性 2.类(Class)是对某一类事物的抽象,对象(Object)为某个 ...

  2. Java Se 基础系列(笔记) -- BasicDataType

    java.lang.String类代表不可变的字符序列 String类常用方法:1.public char charAt(int index); -- 返回下标为index的字符 2.public i ...

  3. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

  4. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  5. Java SE 基础:常用关键字

    Java SE 基础:常用关键字 常用关键字表

  6. Java SE基础知识

    Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ...

  7. 《写给大忙人看的java se 8》笔记

    现在才来了解java8,是不是后知后觉了点? 新的编程技术,个人不喜欢第一时间跟进. 待社区已有实践积淀再切入似乎更划算些? 一点点精明的考虑. 不多说,上代码. //读<写给大忙人看的java ...

  8. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  9. [零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    转自:http://redking.blog.51cto.com/27212/114976 重点要会以下两个方面: 1. 抽象类与接口 2. API==>类集 这是两个最重要部分,这两个部分理解 ...

随机推荐

  1. nodejs学习记录

    一.环境搭建 1.安装express 局部安装 npm i express 全局安装 npm i -g express (命令行express无法使用) 环境变量 npm i -g express-g ...

  2. dede 删除栏目文章后, 让ID从1开始

    1)删除所有栏目,新建ID从1开始: ALTER TABLE `dede_arctype` AUTO_INCREMENT =1; 2)删除所有文章,新发布文章ID从1开始: ALTER TABLE ` ...

  3. CSS3+HTML5学习笔记(1)

    box内阴影: -moz-box-shadow:inset 30px #; -webkit-box-shadow:inset 30px #; box-shadow:inset 30px #; 多重文字 ...

  4. oldboy第一天学习

    oldboy第一天学习 一.听Alex Li 吹牛逼! 1.老男孩附加的功能.每节课都有鸡汤.节省时间,投资自己.结识更多的朋友. 2.python的创始人为吉多·范罗苏姆(Guido van Ros ...

  5. Swift —构造函数与存储属性初始化-备

    构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化.在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和height后,那么在定义他们时就不需要初始化了. ...

  6. Notepad++ Java开发环境配置

    1. 安装JDK 下载JDK 6下载 http://developers.sun.com.cn/download/java_se.html 运行安装程序,按照屏幕提示完成JDK 6的安装,下面为安装路 ...

  7. ASP.NET Email + WebConfig

    这里演示如果把 Email provider 的资料写在 WebConfig 里和调用它. 如果整个项目只需要使用一个 Email, 可以写入system.net里, 微软已经帮我们设计好了 < ...

  8. 《OpenCL异构计算》新版中译本派送中!

    <OpenCL异构计算1.2>新鲜出炉,目前市面上仍一书难求!我们已向清华出版社订购到第一批新书.关注异构开发社区,积极参与,就有可能免费获取新书! 1.如果您异构社区的老朋友,请关注:1 ...

  9. COJ 0359 xjr考考你数据结构(根号2)线段树区间增加

    xjr考考你数据结构(根号2) 难度级别:C: 运行时间限制:3000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 请你编写一个数据结构,完成以下功能: 1)求出第 ...

  10. 如何把SKYPE的发送消息由enter改为ctrl+enter?

    如果您的skype是tom-skype3.8正式版.您可以在skype面板中,选择"工具"-"选项"-"会话"-"会话设置&quo ...