java 二维数组_Java中二维数组和异常的内容及应用
一、二维数组
数组中嵌套数组就是二维数组
二维数组的声明
数据类型[][] 数组名; --推荐
数据类型 数组名[][];
初始化:
动态:
数据类型[][] 数组名 = new 数据类型[一维的长度][二维的长度];--每一个第二位的小数组长度相同
数据类型[][] 数组名 = new 数据类型[一维的长度][];--第二位的每一个小数组的长度可以不同,第二位的小数组还没有创建
每个数组 arr[外层数组索引]=new 数据类型[长度] |...一维数组创建方式
静态:
数据类型[][] 数组名 = new 数据类型[][]{{1,2},{1},{1,2,3}...};
数据类型[][] 数组名 = {{1,2},{1},{1,2,3}...};
二维数组的遍历:
双重for循环嵌套
1、例子
public class ArrayDemo02 {
public static void main(String[] args) {
//二维数组的声明
int[][] arr;
//动态初始化1
arr=new int[2][3];
//赋值
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;
//根据索引获取值
System.out.println(arr[1][2]);
//动态初始化2
String[][] arr2=new String[3][];
arr2[0]=new String[2];
arr2[0][0]="英";
arr2[0][1]="雄";
arr2[1]=new String[]{"教案"};
arr2[2]=new String[]{"哈哈","呵呵","嘻嘻"};
//arr2[2]={"哈哈","呵呵","嘻嘻"}; 不能使用这种简易方式创建第二维数组
System.out.println("------遍历1----------");
//i是外层第一维数组的索引
for(int i=0;i<arr2.length;i++){
for(String s:arr2[i]){
System.out.println(s);
}
}
System.out.println("---------遍历2-----------");
for(String[] a:arr2){
for(String s:a){
System.out.println(s);
}
}
System.out.println("---------通过遍历赋值arr数组-----------");
int num=101;
/*for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j]=num;
num++;
}
}*/
for(int[] i:arr){
for(int j=0;j<i.length;j++){
i[j]=num++;
}
}
System.out.println("---------遍历刚刚赋值的数组arr-----------");
for(int[] a:arr){
for(int s:a){
System.out.println(s);
}
}
//静态初始化1
int[][] arr3 = new int[][]{{1,2},{1},{1,2,3}};
for(int[] a:arr3){
for(int s:a){
System.out.println(s);
}
}
//静态初始化2
int[][] arr4 ={{1,2},{1},{1,2,3}};
print(new int[][]{{1,2},{1},{1,2,3}});
}
public static void print(int[][] arr){
for(int[] a:arr){
for(int s:a){
System.out.println(s);
}
}
}
}
二、异常
1、异常:
程序生病了
Throwable
/
Error Exception
/
CheckedException RuntimeException
Error:这类错误一般是虚拟机生产或脱出的,程序员无法控制,不需要管
Exception:
检查时异常|编译时异常 CheckedException:如果遇到,必须进行处理,否则程序无法运行,发生在编译期
运行时异常 RuntimeException:程序运行才知道是否有异常 增强程序的健壮性处理 if..
常见的一些运行时异常:
1.空指针异常NullPointerException
2.数组下标越界 ArrayIndexOutOfBoundsException
3.负数异常 NegativeArraySizeException
4.数学异常 ArithmeticException
5.字符串索引越界异常 StringIndexOutOfBoundsException
1、代码
public class ExceptionDemo04 {
public static void main(String[] args) {
String str=null;
//增强程序的健壮性
if(str!=null){
str.charAt(3);
}else{
str="haha";
str.charAt(6);
}
//ArrayIndexOutOfBoundsException
/*int[] arr=new int[3];
System.out.println(arr[5]);*/
int[] arr=new int[-3];
System.out.println(5/0);
//编译时异常
InputStream is=new FileInputStream("D:/test.txt");
}
}
2、throw :
制造异常
异常处理方式:
抛出异常: throws 把异常抛到上一层
捕获异常:
try{
可能会出现异常的代码
}catch(ClassNotFoundException e){ //= new ClassNotFoundException();
如果出现ClassNotFoundException类型的异常,执行这里的代码....
}catch(NullPointerException e){
如果出现NullPointerException异常,执行这里的代码
}...
catch(Exception e){
接收除了以上的其他的异常,执行这里的代码
}finally{
无论try中的代码是否出现异常,finally中这里的内容一定会执行
}
注意:
1.try后面可以接一个到多个catch,捕获不同类型的异常
2.把大范围的catch写在最后,小范围写在前面,否则永远执行不到
3.如果try中一旦出现异常,try中的后面的代码都不会执行,执行对应catch中的代码
(1)代码
public class ExceptionDemo05 {
public static void main(String[] args) {
try{
String[] s=null;
System.out.println(s[1]);
InputStream is=new FileInputStream("D:/test.txt");
System.out.println(5/0);
System.out.println("没有出现异常");
}catch(NullPointerException e){
e.printStackTrace();
System.out.println(e.getMessage());
System.out.println("出现了空指针啦");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("出现了文件未找到啦");
} catch(Exception e){
e.printStackTrace();
System.out.println("出现异常啦");
} finally{
System.out.println("一定会执行的代码");
}
//如果代码一旦出现异常,后面的代码执行不了
System.out.println("哈哈");
System.out.println("哈哈");
System.out.println("哈哈");
System.out.println("哈哈");
System.out.println("哈哈");
System.out.println("哈哈");
new Demo().hehe(4);
}
}
class Demo{
void test() throws ClassNotFoundException{
throw new ClassNotFoundException();
}
void haha() throws NullPointerException, ClassNotFoundException{
test();
}
void hehe(int a){
try {
if(a==5){
return;
}
String[] s=null;
System.out.println(s[1]);
} catch (NullPointerException e) {
e.printStackTrace();
}finally{
System.out.println("一定会执行的代码");
}
System.out.println("123235435464576");
}
}
//如果存在方法的重写, 子类重写方法抛出的异常<=父类的方法抛出的异常
class Fu{
void test() throws ClassNotFoundException{
}
}
class Zi extends Fu{
void test() throws ClassNotFoundException{
}
}
3、自定义异常:
除了java提供的异常类以外,可以自定义异常
学习异常:
1.异常分类,特点
2.异常处理 ***
编译时异常:1)throws 2)try..catch
运行时异常:1)增强程序健壮性 2)throws 3)try..catch
3.自定义异常,使用
(1)代码
public class DefinedException {
public static void main(String[] args) {
Person p=new Person();
p.setName("彭于晏");
try{
p.setAge(-35);
}catch(AgeException e){
System.out.println(e.getMessage());
e.printStackTrace();
}
System.out.println(p);
}
}
//自定义异常 继承异常类 Exception-->编译时异常 继承自RuntimeException-->运行时异常
class AgeException extends Exception{
//class AgeException extends RuntimeException{
private String message;
public AgeException() {
// TODO Auto-generated constructor stub
}
public AgeException(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
class Person{
private String name;
private int age;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) throws AgeException {
if(age>=1 && age<=150){
this.age = age;
}else{
throw new AgeException(age+"年龄不合法啦");
}
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
java 二维数组_Java中二维数组和异常的内容及应用相关推荐
- java二维数组 内存分配_java中二维数组内存分配
区分三种初始化方式: 格式一: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的元素有多少个. //例:int arr[] ...
- java web定义数组_Java基础之数组--数组常用操作
3.2一维数组 3.2.1声明数组 数组类型[] 数组名称:int[] username; 或者 数组类型 数组名称[];int username[]; 3.2.2初始化一维数组 一维数组初始化有两种 ...
- java声明和初始化数组_Java 中初始化数组
数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素.下面是如何有效地使用它们. -- Chris Hermansen(作者) 有使用 C 或者 FORTRAN 语言编程经验的人会对数 ...
- java中什么是数组_JAVA中关于数组的定义
前些日子,有网友问:在JAVA中 int[] a 这样定义的数组和 int a[] 定义的数组有什么区别? 当时没有细看,直接回复说,在JAVA中,两者是一样的,没有区别. 回头仔细看时,还是稍有区别 ...
- java四个数打擂_Java语言逻辑 数组
<Java语言逻辑 数组>由会员分享,可在线阅读,更多相关<Java语言逻辑 数组(42页珍藏版)>请在人人文库网上搜索. 1.数组,Java语言逻辑,1.为什么需要数组,一次 ...
- java如何遍历字符串数组_java遍历字符串数组
java中关于变量.数组的综合练习题_IT/计算机_专业资料.java中关于变量.数组的综合练习题,附有答案. 一.多项选择题(共1道小题,共5.0分) 1. 下列变量的...... Java数组练习 ...
- java实现初始化三角形数组_Java基础之数组初始化和数组JVM分析
什么是数组 所谓数组,是具有相同数据类型的若干变量或者数据按照一定排序规则组合起来的一种数据存储格式.数组中的数据称为数组元素,我们使用索引来标识数组元素在数组中的存储位置,索引从0开始,步长是1,其 ...
- java交错数组_Java和C#数组都可以交错的
Arrays Can Be Jagged In languages like C and C++, each subarray of a multidimensional array must hav ...
- java 声明数组_Java中的数组简介
对于Java来说,如果需要用一种数据结构来保存若干个同类型的元素,那么可以选择使用数组. 所谓数组就是用来保存若干个同类型的数据元素,在Java中也可以认为数据元素就是对象.也就是说,只要给定了一个数 ...
最新文章
- 程序设计类课程教学中创造技法的探索
- 鑿婂瓙鏇版祴璇曡崏绋縶29C28FD771BA4B0D8693}
- 强化学习(三)—— 策略学习(Policy-Based)及策略梯度(Policy Gradient)
- boost::cuthill_mckee_ordering用法的测试程序
- C++ decltype类型说明符(尾置返回类型使用)
- Linux 的帐号与群组:有效与初始群组、groups, newgrp
- Bootstrap FileInput(文件上传)中文API整理
- 使用gorilla/mux增强Go HTTP服务器的路由能力
- 《Entity Framework 6 Recipes》中文翻译系列 (42) ------ 第八章 POCO之使用POCO
- ZEMAX实例学习2:双透镜(a doublet)
- js中进行字符串替换的方法
- The Tao of Programing-编程之道
- 键盘鼠标录制哪个好用_美商海盗船Scimitar RGB Elite鼠标体验:再多技能也怕这把弯刀...
- FreeSurfer数据质量指标:欧拉数Euler Number
- 柯西飞行,瑞利飞行,莱维飞行,重尾分布、随机游走
- 基于QlExpress实现薪资计算
- 做scratch游戏心得3
- Android状态栏下拉处理
- 【Shell】执行shell脚本进入指定目录
- 一个驱动无法加载的分析
热门文章
- caxa画图怎么倒角_16个底部含圆弧倒角的宽槽编程案例
- 使用gpu(gtx1080) cudnn 5.1下编译faster rcnn
- Reverse Vowels of a String (反转字符串中的母音)
- CSS简介及常用标签及属性
- ASp.net中Froms验证方式
- Oracle中NVARCHAR2字符集不匹配问题
- cookie+memcached实现单点登陆
- C#.NET编程----Spring.NET NHibernate整合
- 浅谈Java中equals()和==的区别
- 批评代码而不是人!15年程序员的职场箴言