OOP复习/JAVASE巩固

JAVASE复习

面向对象 +设计类+内存解析
面向对象 +重载+递归
面向对象 +封装+构造器
异常处理
计算机的性能指标

----面向对象1.0

在这里插入图片描述在这里插入图片描述在这里插入图片描述

java中变量、对象的存储
对象的内存解析

在这里插入图片描述

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
  • 递归
  • 在这里插入图片描述在这里插入图片描述
  1. 重载同类,同方法名,参数列表不同,看参数列表

面向对象 +封装+构造器

  • 在这里插入图片描述
  • SetLegs就是一个具有封装性的代码
    1. 设定为private的数据
    2. 使用get set进行获得和q设定
    3. 在这里插入图片描述
  • 除此之外其实还有调用也是封装性的一种体现
  • 有些只对内使用一些私有方法不对外暴露的也是封装性的体现
  • 封装性其实就是和权限修饰符有很大的关联
  • 在这里插入图片描述
  • 在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 总结:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。
  • 接下来记得看构造器!09!

内部类

  • 在这里插入图片描述在这里插入图片描述在这里插入图片描述

异常处理

  • 异常不是语法和逻辑错误!
    1. error和exception才是真正的异常
    2. error:比如stackoverflowerror和oom是jvm系统错误,需要错误的代码进行处理
    3. exception:其他编程错误或偶然的外在因素导致的一般性问题,可以针对性代码处理
  • 第一种处理方法:直接终止程序。
  • 第二种处理方法:编写时考虑错误的检测、提示和处理
    1. 这就需要捕获错误
    2. 最佳的捕获是在编译期间,因为有的错误只有在运行时才会发生
    3. 所以分为runtime exception和exception
  • error和exception有一个父类叫做throwable
    1. 在java源文件编译到字节码文件的时候出现问题时编译异常(javac.exe)
    2. 在字节码文件运行到内存里加载或者运行类的时候出现的错误就是运行时异常
    3. 而unchecked异常和checked异常不太一样,checked的异常在一开始就会告诉你你不处理就不能编译
  • 异常的体系结构:
    1. error don’t need try to catch看后缀就行
    2. exception need try to catch
    3. 常见的checked异常:IO exception & file not found exception
    4. 常见的unchecked runtime异常:array index outof bounds exception class cast exception nullpointer exception in put mismatch exception
    5. 除了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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值