1. 什么是编程
编程是人和计算机交流的方式。我们通过编程告诉计算机某个问题的解决思路、方法、手段,让计算机根据编程指令去完成,解决问题。
2. jre、jdk、jvm概念
- jre:包含了java运行所需的基本内容(运行所需的基础类库,包括了jvm)
- jdk:包含了jre、java代码编译工具、开发工具(监控工具、打包工具等)
- jvm:java程序运行所必须的环境
3. 四种访问修饰符访问范围
- public:当前类
- protected:当前包、同包
- default:当前类、同包、子类
- private:当前类、同包、子类、其他包
4. this 关键字三种用法
- 直接引用:相当于指向当前对象本身
- 形参与属性名重复,使用this区分
- 构造函数中使用
5. static关键字
- 关键作用:形成静态代码,优化程序性能(static只会在类加载时执行一次,一些只需进行一次的初始化操作都放在static代码块中进行)
- 特点:static修饰的变量/方法都不属于任何一个实例对象,而是所有该类的对象所共享
6. 面向对象
- 特性:抽象、封装、继承、多态
抽象:一般用于方法,将方法抽象成接口,只需关注属性、行为,无需关注细节内容
封装:将底层的类等信息封装成私有,防止暴露重要信息
7. 抽象类和接口
- 抽象类用abstarct修饰、接口用interface修饰
- 类只能继承一个父类(extends),但是可以实现多个接口(implements)
- 接口不能有构造器,且字段默认是static和final
8. hashCode 与 equals
概述
- hashCode():用于获取hash码(int整数),定义在JDK的object类中,java任何的类都有hashCode()函数。
当将对象放入hashSet中时,会根据对象的hashCode作为标识进行位置查重等操作,若是发现有相同的,则会调用equals()方法检查对象是否也相同,如若都相同,则将其作为同一对象处理。
- 两个对象相同,则hashcode相同且调用equals()为true。因此,若重写(覆盖)equals()方法,则hashCode()方法也必须覆盖,否则该类的不同对象,就是指向的数据相同也永远都不会相等。
9. BIO 、 NIO 、 AIO
- BIO:同步阻塞IO
传统IO,使用简单,并发处理能力低
- NIO:同步非阻塞IO
通过Channe通信,实现多路复用
- AIO:异步非阻塞IO
基于事件、回调机制
10. 反射机制
使用举例
- JDBC连接数据库时
Class.forName()
:通过反射加载数据库的驱动程序 - Spring通过XML配置模式转载Bean过程,根据字符串名称反射获取类
- 将XML/properties 配置文件加载入内存;
- 解析配置内容,获取对应字节码字符串、相关属性信息
- 利用反射机制,根据字符串获取类实例
11. 反射的三种方式
//方式一: getClass()方法
MyClass demo = new MyClass();
CLass instance = demo.getClass();
//方式二:forName(类路径)方法
Class instance2 = Class.forName(com.cn.MyClass);
//方式三:类名.calss
Class instance3 = MyClass.class;
12. String特性
- 不变性:String是只读字符串,任何写操作都是创建新对象,在被多线程访问时能够保证数据一致性;
- 常量池优化:String对象创建后,会在常量池中缓存,若下次创建相同字符内容,则会直接指向常量池缓存内容;
- final修饰:String类不能被继承,提高系统安全性
- HashMap中,String作为key能够确保key唯一、安全,且有常量池缓存,访问无需重新计算,效率高。