数组 二维数组 遍历 异常
创建对象的原则: 先父类后子类
加载内容原则: 先静态后成员
this:当前new的对象
运行: 找new的对象
方法:多态情况 调用重写方法
属性:就近原则
new 的步骤:
- 开辟空间 初始成员变量并赋默认值
- 为成员变量赋值(int a=5)
- 调用构造器为为对象初始化信息
值传递:基本数据类型是值传递
引用数据类型:地址值的传递
测试面向对象的使用:
- 多态使用成员变量,编译运行看父类
- 多态使用成员方法,调用子类重写的方法,子类没有找父类
- 多态不能使用子类新增方法,如果想要调用,需要通过向下转型,变成子类引用指向子类对象,可以向下调用
数组
数组 [ ] : 相同数据类型的数据的有序集合
变量: 存储单个数据
数组: 存储多个数据
数组的特点:
- 数组是一个引用数据类型 , 类和接口也是
- 数组长度一旦确定不可改变
- 相同数据类型的数据
- 有序(索引|下标)
声明:
数据类型 [ ] 数组名; 优先使用
或 数据类型 数组名[ ] ;
数据类型 : 数组中所有数据的数据类型,数据类型可以为基本或者引用数据类型
动态初始化: 创建数组对象,后续赋值
数据类型 [ ] 数组名 = new 数据类型[长度];
静态初始化: 创建数组对象的同时并赋值
数据类型 [ ] 数组名 = new 数据类型 [ ]{数据1,数据2,数据3…};
索引|下标: 从0开始,每次+1
操作数组中的数据 : 数组名[下标]
属性: 数组名.length 获取数组中数据的个数
数组中最后一个数据的下标 : 数组名[数组名.length-1]
数组中的数据不赋值存在默认值, 整数0 小数0.0 char’ ’ boolean false 引用数据类型 null
数组的遍历方式 : for 和 for …each
例如:
int []arr3={5,6,7,2}; for(int i=0;i<arr3.length;i++){//arr3.length 数组的长度,不用-1,所以是< System.out.println(arr3[i]); }
或者是:
int []arr3={5,6,7,2}; for(int i:arr3){//增强for System.out.println(i); }
二维数组
数组中的每一个数据还是一个数组
创建
声明 :
数据类型 [ ][ ] 数组名 ;优先使用
或者:数据类型 数组名 [][]; 数据类型[] 数组名 [];
动态初始化:
数据类型[ ][ ] 数组名 = new 数据类型[一维的长度][二维的长度]; 二维的小数组长度已经固定
数据类型[ ][ ] 数组名 = new 数据类型[一维的长度][ ];
数组名[0] = new int [二维的长度] ----意思是第0位的一维数组,定义它的长度
静态初始化: 创建的同时赋值
数据类型[][] 数组名 = new 数据类型[][]{{1,2,3},{4,5},{6}};
也可以写成 : 数据类型[][] 数组名 = {{1,2,3},{4,5},{6}};
二维数组的遍历:
int[][]arr=new int[2][2]; arr[0][0]=1; arr[0][1]=5; arr[1][0]=8; arr[1][1]=7; for(int[] in:arr){ for(int i:in){ System.out.println(i); } }
数组打印 : Arrays.toString(arr)
数组升序排序 : Arrays.sort(arr) ;
查找数组索引具体位置:Arrays.binarySearch(arr2, 9) 注意:需要先升序排序
数组的拷贝:Arrays.copyOf(arr2, 13)
数组的指定范围复制到一个新数组:Arrays.copyOfRange(arr2, 2,4))
public static void main(String[] args) { String[] arr={"c","ab","a","bc"}; System.out.println(arr.length); System.out.println(arr); //把数组中的内容以字符串的形式返回 Arrays.toString System.out.println(Arrays.toString(arr)); //sort 默认升序排序 Arrays.sort(arr); System.out.println(Arrays.toString(arr)); //binarySearch()二分查找法 存在数据返回索引,不存在返回-(插入点)-1 int[] arr2={3,6,1,2,7,5}; System.out.println(Arrays.toString(arr2)); //先升序排序 Arrays.sort(arr2); System.out.println(Arrays.toString(arr2)); System.out.println(Arrays.binarySearch(arr2, 9));; //数组的拷贝 //tatic int[] copyOf(int[] original, int newLength) System.out.println(Arrays.toString(Arrays.copyOf(arr2, 13)));; //static int[] copyOfRange(int[] original, int from, int to) //将指定数组的指定范围复制到一个新数组。 结束素银不包含 System.out.println(Arrays.toString(Arrays.copyOfRange(arr2, 2,4)));; }
异常
异常的分类:
Error:错误,一般不需要程序员管理,一般为虚拟机生成并脱出的,程序员无权管理
Exception:异常
RuntimeEception:运行时异常 : 运行期间才会发现的异常; 一般通过增强程序的健壮性处理 if语句
CheckedException检查时|编译时异常 :编译期会发生的异常,只能通过异常处理方式来解决,如果不解决程序无法运行
异常处理:
如果出现异常,肯定会影响代码的执行,编译时异常,无序无法运行,运行时异常程序无法继续向下执行
抛出异常:throws 把问题抛出到上一层,使用的人(方法)来解决
异常捕获:try…catch
* try{ * 有可能会出现异常的代码; * }catch(FileNotFoundException e){ //局部变量的声明,赋值的内容是这个类型的异常对象 是try中可能出现的异常对象 * 如果出现异常,执行的代码; * }catch(FileNotFoundException e){ //局部变量的声明,赋值的内容是这个类型的异常对象 是try中可能出现的异常对象 * 如果出现异常,执行的代码; * }catch(Exception e){ //局部变量的声明,赋值的内容是这个类型的异常对象 是try中可能出现的异常对象 * 如果出现异常,执行的代码; * } * ... * finally{ * 无论是否try出现了异常,都会执行的代码 * } * * 一个try后可以添加多个catch,至少一个catch * 如果try出现了异常,try中下面的代码都不执行了,只能去找对应的catch * finally可以添加,可以不添加 * catch捕获的异常较小,定义在上面,catch捕获的异常类型范围大,定义在下面 * 如果出现异常,肯定会影响代码的执行,编译时异常,无序无法运行,运行时异常程序无法继续向下执行 * 无论是编译时异常还是运行时期异常,异常的两种处理方式都可以进行处理
实例:
public static void main(String[] args) { String s=null; if(s!=null){ System.out.println(s.length()); }else{ System.out.println("字符串为null"); } //System.out.println(4/0); try { System.out.println("try开始啦!!!"); test(); System.out.println(4/2); System.out.println("try结束了!!!"); } catch (FileNotFoundException e) { //e.printStackTrace(); System.out.println("出现文件为寻找到异常啦"); } catch(Exception e){ System.out.println("异常出现"); e.printStackTrace(); } finally{ System.out.println("最后的最后我们都要离开..."); } System.out.println("main结束"); } public static void test() throws FileNotFoundException,ArithmeticException{ //编译时异常 InputStream is=new FileInputStream("D:/test.txt"); }
- 点赞 1
- 收藏
- 分享
- 文章举报
- 15 API-集合(Collection(功能,迭代器),List(List特有迭代器,并发异常),常见数据结构图示(栈,队列,数组,链表))&对象数组
- 课堂练习2: 从命令行输入5个整数,放入一整型数组,然后打印输出。要求: 如果输入数据不为整数,要捕获输入不匹配异常,显示“请输入整数”;如果输入数据多余5个,捕获数组越界异常,显示“请输入5个整数”
- JNI 数组 异常处理 引用 缓存策略 方法访问 字符串乱码
- Java 数组 异常 exception 及其练习
- 《黑马程序员》java笔记->数组两种运行异常
- 第7章 C#中的文件,数组和异常
- (2)int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
- Java中数组不为空时也可能出现ArrayIndexOutOfBoundsException: 0异常
- iOS 关于数组、字典等数据类型异常操作crash的解决办法
- [笔记]关于split的数组越界问题以及java.lang.ArrayIndexOutOfBoundsException异常
- 墨菲定律与 IndexOutOfBoundsException(数组越界异常)
- 数组转换为List后add或remove出现UnsupportedOperationException异常分析
- 数组中常见的异常
- 读取纯真IP数据库QQwry.dat的java版程序报数组越界异常问题
- 黑马程序员--数组,索引器与集合(泛型) 异常(07)
- 经典问题1RE运行异常---将耗费内存的数组定义为成员变量
- java中两大异常:空指针异常和数组越界异常
- Fork/Join框架介绍IV-异常处理及取消任务【在数组中找指定数值,一旦找到立马停止任务的运行】
- Java第四天(抛出异常解决、数组、冒泡排序)
- Scala进阶源码实战之一——数组、函数基础、流程控制、文件、异常