JAVASE复习
面向对象 +设计类+内存解析
面向对象 +重载+递归
面向对象 +封装+构造器
异常处理
计算机的性能指标
----面向对象1.0
p3和p1事实上是引用到堆空间同一个对象实体
当main方法结束后 c2弹出 c1弹出 堆空间进行gc回收
----面向对象1.1
p1.setPid( new Pid() )
- 主要是参数个数,参数类型的差别,返回值的不同是无效的
- 重点 他的形参列表只能由不同的类型来改变,比如String…A 和 String[] B就不构成重载
JAVA里实参只有一种值传递的方法,即将复制品传入方法内,而参数本身不受影响。
不难看出O2和O1指向了同一个对象实体,引用被赋值
- 所以我们真的写的话是不能修改值的!
- 为什么这样写可以呢?其实这就是一开始是值复制,现在是对象复制,这样就copy了地址,然后地址指向堆里面同一个对象,所以可以改!
- 如何理解整个值传递的过程?执行完second之后val,v都弹出,然后回到first里面,v.i就是没被弹出的的v,就是20
- 递归
- 重载同类,同方法名,参数列表不同,看参数列表
面向对象 +封装+构造器
- SetLegs就是一个具有封装性的代码
- 设定为private的数据
- 使用get set进行获得和q设定
- 除此之外其实还有调用也是封装性的一种体现
- 有些只对内使用一些私有方法不对外暴露的也是封装性的体现
- 封装性其实就是和权限修饰符有很大的关联
- 总结:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。
- 接下来记得看构造器!09!
内部类
异常处理
- 异常不是语法和逻辑错误!
- error和exception才是真正的异常
- error:比如stackoverflowerror和oom是jvm系统错误,需要改错误的代码进行处理
- exception:其他编程错误或偶然的外在因素导致的一般性问题,可以用针对性代码处理
- 第一种处理方法:直接终止程序。
- 第二种处理方法:编写时考虑错误的检测、提示和处理
- 这就需要捕获错误
- 最佳的捕获是在编译期间,因为有的错误只有在运行时才会发生
- 所以分为runtime exception和exception
- error和exception有一个父类叫做throwable
- 在java源文件编译到字节码文件的时候出现问题时编译异常(javac.exe)
- 在字节码文件运行到内存里加载或者运行类的时候出现的错误就是运行时异常
- 而unchecked异常和checked异常不太一样,checked的异常在一开始就会告诉你你不处理就不能编译
- 异常的体系结构:
- error don’t need try to catch看后缀就行
- exception need try to catch
- 常见的checked异常:IO exception & file not found exception
- 常见的unchecked runtime异常:array index outof bounds exception class cast exception nullpointer exception in put mismatch exception
- 除了runtime exception都是编译时异常
- 可能会问的问题:常见的异常都有哪里?
运行时异常
- 空指针异常
String str = "abc";
str = null;
print(str);
- 数组边界异常
int[] arr = new int [10];
print(arr[10]);
- 类型转换异常(ClassCastException)
String str = new date(); // 不能通过编译
Object obj = new date(); // 向上转型 & 多态
String str = (String)obj; // 报错
- NumberFormatException
String str = "123";
int num = Interger.parseInt(str); // 此时可以转
str = "abc";
int num = Interger.parseInt(str); // 报错
- InputMismatchException
Scanner scanner = new Scanner(System.in);
int score = scanner.nextInt();
print(score); //如果enter不是Int就会报错了
scanner.close();
- ArithmeticException
int a = 10;
int b = 0;
print(a/b); //报错
编译时异常
- 不同于运行时异常 连.class文件都出不来
- FileNotFoundException
File file =new file("hello.txt");
FileInputStream fis = new FileInputStream();
- 看09