一、corejava阶段
1.理解面向对象的含义及其三大特征 (继承,封装,多态)
封装:使属性(特征)私有化,外部不能直接访问,需要访问属性,为外部提供公开的方法(行为)进行访问。
继承: 是一种是的关系,子类对父类进行扩展, 对父类的复用,java只允许单继承。
多态: 一种事物多种形态,对象的多态,把一个对象复制给不同的引用方法的多态,重写 重载。
2.Java是单继承多实现的理解抽象类和接口的区别,了解四个访问修饰符的访问范围(public protected default private)
单继承:更明确,一个子类就应该是其父类代表的事物中的某个更具体的类别,不应该即是这种东西又是那种东西,而从实用角度上来说 单继承易读 易维护 语义清晰 逻辑清楚。
多实现:继承的拓展,接口只定义一些公共行为 比如有两个接口 一个定义了跑这个动作 另一个定义了走这个动作,人这个类就可以同时实现这两个接口所定义的行为。
抽象类 (abstarct class)
抽象类都表示的是现实的事物。
抽象类所有方法是public abstarct。
抽象类跟普通类差不多,比普通类多了一些抽象方法.
抽象类只能被继承,一个具体类继承(extends)一个抽象类,必须实现所有 的抽象方法。(单继承)
抽象类有构造方法 。
抽象类的构造方法给子类构造方法调用。
抽象类不能直接创建实例。
接口(interface)
接口表示的是规范。
接口里的所有属性是public static final。
接口没有普通方法。
接口只能被实现(implements),一个具体类实现接口,必须使用全部的抽象方法。 (多实现)
接口没有构造方法。
接口之间可以继承。
接口不能直接创建实例。
区别:
抽象类可以有构造方法,接口中不能有构造方法。
抽象类中可以有普通成员变量,接口中没有普通成员变量
抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
抽象类中可以包含静态方法,接口中不能包含静态方法
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
一个类可以实现多个接口,但只能继承一个抽象类。
同类 同包 不同包子类 不同包非子类
public (公开的) √ √ √ √
protected(受保护的) √ √ √ x
default (默认的) √ √ x x
private (私有的) √ x x x
3.了解方法重载和方法重写的区别 重载和重写都能体现多态
重载:
是在一个类中,方便了调用者
方法名相同,参数列表不同(参数类型不同,参数个数不同)
返回值可以相同,也可以不相同。
重写:
是父子类之间,如果创建的是子类对象,
调用重写的方法,执行的是子类的,
方法名相同,返回类型相同,参数列表相同,
抛出的异常不能更大,访问权限不能更小。
4.熟悉String类 并熟练掌握一些常用方法(笔试大题一般常出现此类的灵活运用)
字符串转数组 .toCharArray()
字符串中取指定位置 .charAt()
字符串与btye数组转换 .getBytes()
计算字符串的长度 .length()
注意:数组中的length不带()是属性不是方法
查找指定字符串是否存在 .indexof()
去空格 .trim()
字符截取 .substring()
拆分字符串 .split()
小写转大写 .toUpperCase()
大写转小写 .toLowerCase()
常用的还有 .toString() .equals()
5.了解一些反射机制,垃圾回收机制(例如框架配置文件只读取类名就可以获取对应类中的方法即利用了反射)
反射机制:
框架配置文件只读取类名就可以获取对应类中的方法即利用了反射。
垃圾回收机制:
java程序员不需要关心,内存对象释放问题;
由jvm来负责释放内存,如果一个对象没有任何引用指向他;
这个对象被视为垃圾,jvm会在空闲时,释放这些空间;
而程序员不能控制,只能建议
System.gc()Runtime.getRuntime().gc()
6.了解线程的生命周期和其中常用方法(可以结合线程生命周期图记忆)
线程完整的生命周期有:
新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead)。
new时为新建状态,
调用start()方法进入就绪状态,
当cpu分配了时间片进入运行状态,
时间片用完回到就绪状态,
直到运行结束进入销毁状态,
其中在运行状态遇到sleep()方法或等待io操作进入阻塞状态,
阻塞状态结束进入就绪状态,再有cpu分配时间片执行,
线程运行时如果代码被加了锁,当前线程没有获得锁,
当前对象进入锁池,当锁被释放,线程获得了到锁回到就绪状态,
当有锁的线程调用wait()方法,当前线程进入等待池,释放锁,
直到有其他线程调用notify()或notifyAll()方法时等待的线程被唤醒,进入锁池。
有几种方式实现多线程
实现Runnable接口,实现run()方法
继承Thread类,重写run()方法
怎么解决同步问题
加锁,synchronized,锁方法,锁代码块
7.熟记八大基本数据类型及其字节长度了解它们的包装类
原始数据类型 大 小 包 装 类
boolean(布尔型) 1 Boolean
byte(字节型) 8 Byte
char(字符型) 16 Character
short(短整型) 16 Short
int