- JDK常用包:
- java.lang:存放系统的基础类,比如:String、Math、Integer和Thread等,提供常用功能
- java.io:存放与输入输出有关的类
- java.net:存放与网络有关的类,比如URL、URLConnection等
- java.util:存放系统辅助类,特别是集合类
- java.sql:存放数据库操作有关的类,比如:Connection、ResultSet、Statement等
- get和post的区别
- get从服务器获取数据,post是向服务器传送数据
- get传送的数据量较小,不能大于2kb,post传送数据量较大,默认无限制
- get安全性低,post安全性高,但get执行效率高于post
- 执行文件上传时只有用post
- java多态的具体体现
- 面向对象的四个特征:抽象、继承、封装、多态
- 多态的四种体现:
- 接口和接口的继承
- 类和类的继承
- 重载
- 重写
- 重载:发生在同一个类中,多个方法名一致,但参数类型和参数个数不一致,则该方法被重载了
- 重写:发生在子类继承父类的关系中,子类继承父类方法,方法名、参数、返回值类型一致,但方法体不一致,则该方法被重写了
- Hashtable和HashMap区别
- Hashtable和HashMap都是Map的实现
- Hashtable是线程安全的,HashMap是线程非安全的
- Hashtable不允许有空(null)的键值对,而HashMap允许
- HashMap的效率高于Hashtable
- 九大隐式对象
- 输入输出对象:request、response、out
- 作用域通信对象:session、application、pageContext
- Servlet对象:page、config
- 错误对象:exception
- List和Set
- List和Set都继承于Collection接口,List是一个有序可重复的集合,Set是一个无序不可重复的集合
- List接口实现类有ArrayList、LinkedList、Vector。
- ArrayList和Vector是基于数组实现的,所以查询快,增删慢(Vector是线程安全的,所以查询效率低于ArrayList)。
- LinkedList是基于链式存储结构,所以查询慢,增删快。
- Set接口实现类有HashSet,LinkedHashSet,TreeSet。
- HashSet是无序不可重复的,顺序可能变化,元素可以为null,但只能有一个null
- LinkedHashSet按放入顺序有序不可重复的
- TreeSet默认以自然排序方式排序,还有定制排序。存放的为同一个类的对象,不允许为null
- 冒泡排序
public class Sort { public static void sort() { Scanner input = new Scanner(System.in); int sort[] = new int[10]; int temp; System.out.println("请输入10个排序的数据:"); for (int i = 0; i < sort.length; i++) { sort[i] = input.nextInt(); } for (int i = 0; i < sort.length - 1; i++) { for (int j = 0; j < sort.length - i - 1; j++) { if (sort[j] < sort[j + 1]) { temp = sort[j]; sort[j] = sort[j + 1]; sort[j + 1] = temp; } } } System.out.println("排列后的顺序为:"); for(int i=0;i<sort.length;i++){ System.out.print(sort[i]+" "); } } public static void main(String[] args) { sort(); } }
- 实现线程的两种方式
- 继承Thread类:重写run()方法,调用start()开启线程
- 实现Runnable接口:实现run()方法,调用start()开启线程
- jvm内存结构
- 堆(heap):存放对象的实例,即new出来的对象
- 栈(stack):存放基本数据类型和引用数据类型的地址
- 单例设计模式(23种设计模式详解):私有化的构造函数、私有静态全局变量、公有静态方法
- 恶汉式:线程安全
public class Singleton1 { private Singleton1() {}; private static Singleton1 single = new Singleton1(); public static Singleton1 getInstance() { return single; } }
- 赖汉式:线程不安全
public class Singleton2 { private Singleton2() {} private static Singleton2 single=null; public static Singleton2 getInstance() { if (single == null) { single = new Singleton2(); } return single; } }
- 线程安全:
public class Singleton3 { private static class LazyHolder { private static final Singleton3 INSTANCE = new Singleton3(); } private Singleton3 (){} public static final Singleton3 getInstance() { return LazyHolder.INSTANCE; } }
- 线程安全:
- 恶汉式:线程安全
- error和exception
- error:程序无法处理的错误,发生错误时jvm一般会选择线程终止
- exception:程序本身可以处理的异常
- 运行期异常:
- ArithmeticException:数学计算异常
- NullPointerException:空指针异常
- ArrayOutOfBoundsException:数组索引越界异常
- ClassNotFoundException:类文件未找到异常
- ClassCastException:类型转换异常
- 编译期异常:
- EOFException: 文件结束异常
- FileNotFoundException:找不到文件异常
- 运行期异常: