Java学习周总结
-
![]()
-
内存中有2个区域,一个是堆一个是栈,栈中存储的是一些方法压栈和引用,堆中存放的是方法区和对象的一些属性值和方法。
-
栈中存储的对象名是一个指向堆的内存地址,通过对象名.属性值和对象.方法名来对属性进行修改或者对方法进行调用
-
-
面向对象:简单小结类与对象
1. 类与对象
类是一个模版:抽象,对象是一个具体的实例
2. 方法
定义,调用!
3. 对应的引用
引用的类型: 八大基本类型以外的都可以叫引用类型
对象是通过引用来操作的:栈--->堆
4. 属性: 字段Field 成员变量
默认初始化:
数字: 0 0. 0
char: u0000
booleon: false
引用类型为: null
修饰符 属性类型 属性名 = 属性值!
(5)方法注意点:“避免死循环”!
5. 对象的创建和使用
- 必须使用new 关键字创建对象,构造器 Person kuangshen = new Person();
- 对象的属性 kuangshen.name
- 对象的方法 kuangshen.sleep()
6. 类:
静态的属性 属性
动态的行为 方法
面向对象的三大特征: 封装,继承,多态 -
面向对象:封装详解
封装:属性私有,用get、set方法
封装的意义:
1.提高数据的安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4.系统的可维护性增加了
-
面向对象:什么是继承
继承是面向对象三大特征之一,java中的继承描述的是两个类之间的关系,被继承的类称为父类,继承的类成为子类 继承使用关键字extends关键字来描述。在java里面只支持单继承及一个类只能有一个父类,子类可以继承的非private修饰的成员方法和成员变量,构造方法不能被继承,如果一个类没有显示的继承其他类,那么这个类会默认继承object类 object是sun公司提供的java中的根类*
继承的优点:
提高代码的复用性 提高代码的维护性 让类与类之间产生关系,是多态的前提
继承的缺点: 增强了类之间的耦合 软件开发的一个原则是高内聚、低耦合 内聚是一个模块内各个元素彼此结合的紧密程度 耦合是一个软件里面不同模块之间的互相连接的数量
-
面向对象:Super详解
super注意点: 1. super调用父类的构造方法,必须在构造方法的第一个 2. super 必须只能出现在子类的方法或者构造方法中! 3. super和 this 不能同时调用构造方法!
Vs this: 代表的对象不同: this:本身调用者这个对象 super:代表父亲对象的应用 前提
this:没有继承可以使用 super:只能在继承条件才可以使用 构造方法 this():本类的构造 super():父类的构造!
-
面向对象:方法重写
子类中出现和父类中一模一样的方法(包括返回值类型,方法名,参数列表)
方法重写的注意事项:
1.重写的方法必须要和父类一模一样(包括返回值类型,方法名,参数列表)
2.重写的方法可以使用@Override注解来标识
3.子类中重写的方法的访问权限不能低于父类中方法的访问权限
为什么需要重写: 1.父亲的功能,子类不一定需要,或者不一定满足!
-
面向对象:什么是多态
多态注意事项: 1.多态是方法的多态:属性没有多态 2.父类和子类, 有联系 类型转换异常 ClassCastException! 3.存在的条件:继承关系,方法需要重写,父类引用指向子类对象! father f1 = new Son(); (1)不能被重写的方法 1.static 方法,属于类,不属于实例 2.final 常量; 3.private方法;
-
面向对象:instanceof和类型转换
1.父类引用指向了类的对象 2.把子类转换成父类,向上转型;直接转换 3.把父类转换成子类,向下转型;强制转换 4.方便方法的调用,减少重复的代码!可以使代码变的简洁
封装,继承,多态!
-
面向对象:static关键字详解
-
static修饰的类、方法、变量、静态块会在类别被初次加载的时候执行,且只执行一次。
-
用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;
-
用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;
-
类加载顺序: 继承关系:父类静态-->子类静态-->父类构造-->子类构造-->父类方法-->子类方法
引用关系:主类静态-->成员变量静态-->成员变量构造-->主类构造
-
-
面向对象:抽象类
通过abstract修饰的一个类,就是抽象类
abstract 抽象类: 类 extends: 单继承~ java没有多继承(接口可以多继承)
特点:
1.不能new这个抽象类,只能靠子类去实现它:约束! 2.抽象类中可以写普通方法~ 3.抽象方法必须在抽象类中~ 抽象的抽象:约束~
存在的意义 抽象出来~ 提高开发效率
-
面向对象:接口的定义与实现
作用: 1.约束 2.定义一些方法,让不同的人实现~ 10 ---> 1 3.public abstract 4.public static final 5.接口不能被实例化~,接口中没有构造方法~ 6.implements可以实现多个接口 7.必须要重写接口中的方法~
-
面向对象:N种内部类
内部类就是在这一个类中再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。
一个Java类中可以有多个class类,但只能有一个public class!
-
异常:Error和Exception
异常类分为两大类,错误Error和异常Exception。
Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
1.在Exception分支中有一个重要的子类RuntimeException(运行时异常) ArraylndexOfBoundsException(数组下标越界) NullPointerExceptino(空指针异常) ArithmeticException(算数异常) MissingResourceException(丢失资源) ClassNotFoundException(找不到类)等异常,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。 这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这些异常的发生;
2.Error和Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程; Exception通常情况下是可以被程序处理的,并且在程序中应该仅可能得去处理这些异常。
-
异常:捕获和抛出异常
抛出异常:如果程序中出现了异常,没有办法将具体的异常打印出来,不做任何处理
捕获异常:如果程序出现了异常,就能够详细的打印是什么原因导致了异常并且能够做出相应的处理,能够显示详细的Log
如果异常出现的话,会立刻终止程序,所以我们得处理异常:
-
该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。
-
在方法中使用try-catch的语句块来处理异常。
-
-
异常:自定义异常及经验小结
处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理 在多重catch块后面,可以加上一个catch(Exception)来处理可能会被遗漏的异常。 对于不确定的代码,也可以加上try-catch,处理潜在的异常 尽量去处理异常,切记只是简单的调用printStackTrace()去打印输出,在printStackTrace()前面,增加一些处理异常的代码块~(把我们的损失降到最低) 具体如何处理异常,要根据不同的业务需求和异常类型去决定 尽量添加finally语句块去释放占用的资源,比如:IO、Scanner~
-


浙公网安备 33010602011771号