Java Se 基础系列(笔记) -- Exception && Array
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的更多相关文章
- Java Se 基础系列(笔记) -- OO
记录所学到的关于Java Se的一些基础知识 1.对象是通过“属性(成员变量)”和“方法”来分别对应事物所具有的静态属性和动态属性 2.类(Class)是对某一类事物的抽象,对象(Object)为某个 ...
- Java Se 基础系列(笔记) -- BasicDataType
java.lang.String类代表不可变的字符序列 String类常用方法:1.public char charAt(int index); -- 返回下标为index的字符 2.public i ...
- Java SE 基础:注释
Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...
- Java SE 基础:标识(zhì)符
Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...
- Java SE 基础:常用关键字
Java SE 基础:常用关键字 常用关键字表
- Java SE基础知识
Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ...
- 《写给大忙人看的java se 8》笔记
现在才来了解java8,是不是后知后觉了点? 新的编程技术,个人不喜欢第一时间跟进. 待社区已有实践积淀再切入似乎更划算些? 一点点精明的考虑. 不多说,上代码. //读<写给大忙人看的java ...
- Java SE 基础知识(一)
一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...
- [零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置
转自:http://redking.blog.51cto.com/27212/114976 重点要会以下两个方面: 1. 抽象类与接口 2. API==>类集 这是两个最重要部分,这两个部分理解 ...
随机推荐
- 【回忆1314】第一次用AngularJS
1.创建指令的4种方式(ECMA) var appModule = angular.module('app', []); appModule.directive('hello', function() ...
- Css3从IE6-IE9的支持查看
http://msdn.microsoft.com/en-us/library/cc351024%28v=vs.85%29.aspx http://caniuse.com/
- 常用的JavaScript正则匹配规则代码收藏,很实用
收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水平菜,老是自己写不出 ...
- 《python基础教程》笔记之 其它语句1
print 相关 print可以打印多个表达式,只要将它们用逗号隔开就好,结果中每个参数之间都会插入一个空格,使用+可以避免空格,如 >>> print 'age:',42age: ...
- python实现tailf
# -*- coding:utf-8 -*- ''' Created on 2016年10月28日 @author: zhangsongbin ''' import time class file_r ...
- 针对苹果最新审核要求为应用兼容IPv6-备用
在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务.2016年初开始所有提交到App Store的应用必须支持IPv6.为确保现有的应用是兼容的,我们需要注意下面几点. 不建议使用底层的网 ...
- 转;VC++中Format函数详解
Format是一个很常用,却又似乎很烦的方法,以下是它的完整概貌,以供大家查询之用: 一.字符串 首先看它的声明: function Format(const Format: string; cons ...
- 开个CS5.4编译编译,调试错误贴
记录各种编译,调试中遇到问题.
- (摘自ItPub)物理standby中switchover时switchover pending的解决办法
http://www.itpub.net/thread-1782245-1-1.html DataGuard一主一物理备,sid为primary和standby,现在要把primary切换成备库,st ...
- Yii数据库
http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar http://zhengdl126.iteye.com/blog/1460779 ...