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==>类集 这是两个最重要部分,这两个部分理解 ...
随机推荐
- jquery与discuz冲去的解决方法
把相应的JQUERY代码天下如下代码: <script type="text/javascript"> jQuery.noConflict(); </script ...
- Python3 如何优雅地使用正则表达式(详解二)
使用正则表达式 现在我们开始来写一些简单的正则表达式吧.Python 通过 re 模块为正则表达式引擎提供一个接口,同时允许你将正则表达式编译成模式对象,并用它们来进行匹配. 小甲鱼解释:re 模块是 ...
- cocos2d-js 入门之碰撞
本文由qinning199原创,转载请注明:http://www.cocos2dx.net/post/223 1.cc.rectIntersectsRect(ra,rb) 判断两个矩形是否相交,若相交 ...
- android禁用光感按键
用RE浏览器打开/system/usr/keylayout下的qwerty.kl文件, 找到key 158 BACK key 139 MENU key 102 HOME 分别在其之前加下#号,如下: ...
- 转:VC中UpdateData()函数的使用
VC中UpdateData()函数的使用 UpdateData(FALSE)与UpdateData(TRUE)是相反的过程 UpdateData(FALSE)是把程序中改变的值更新到控件中去 ...
- pm2 安装使用
pm2 是全新开发的进程守护服务, 同时集成了负载均衡功能. 以及开机启动, 自动重启有问题进程. 还可以查看各服务进程状态. 使用方法参照:https://github.com/Unitech/pm ...
- 一句话输出网站404页面,REFER及相关排序
cat www.log|awk '$9~/404/ {print $7"," $11}'|sort|uniq -c|sort -nr > ./www404.csv
- Gridview中修改某列的背景色
Gridview中状态列的值是1,某列的背景是是绿色状态字段是:archivesStatus protected void gvInfo_RowDataBound(object sender, Gri ...
- VC++中调用cmd的集中方式
1. system方法: 原型: int __cdecl system(const char *); 例如: system("ipconfig"); 2. WinExec方法: 相 ...
- 【HDOJ】3316 Mine sweeping
简单BFS. #include <iostream> #include <cstdio> #include <cstring> #include <cstdl ...