1、1、 JDK 和 jre 的区别?JDK : Java development kit 包括 jre 和编译器等程序Jre :Java runtime environment 指的是 java 运行时环境。负责启动虚拟机,加载和运行 class 文件。2、 JVM:java virtual machine JVM 是 SUN 公司定义的规范。3、 GC:Garbage collection 垃圾回收器。没有被引用的对象需要回收。程序员不能调用 GC,system.gc()是通知调用垃圾回收器。4、 一个 java 源文件可以定义多个 class(类) ,可以定义多个public 类,但只能有一
2、个 main()方法。5、 Java 基本 8 种数据类型1 个字节: byte、Boolean2 个字节:short 、char(unicode 编码,可用于存储汉字)4 个字节:int 、float8 个字节:double、long引用数据类型 4 个 类 接口 数组6、编译器会自动装箱 存储变量时代码变为 Integer a=new Integer(3);拆箱 :int a=new Integer(3);int 是基本类型,Integer 是引用类型。怎么会没区别呢?基本类型存放在栈里面, 引用类型放在堆里面。 装箱安全性更高。例如 list 只能存放引用类型,可以使用 list.add
3、(new Integer(1)存放到 list 里面。10、常见的异常IoException 数组越界异常 nullpointerException ClassNotFoundException RuntimeException NoSuchMethodException11、成员变量和静态变量成员变量:从属于对象,存放在堆 如果要调用需 new 一个对象出来。静态变量:从属于类,存放在方法区,调用时直接 类.变量名12 、重载和重写重载:一个方法名多个方法 方法名相同 参数类型、个数、顺序不同重写:子类覆盖父类的方法13包含抽象方法的类一定是抽象类 抽象类不一定包含抽象方法。14、多态 父类
4、的引用指向子类对象 例如 Person person=new Student(); spring 中面向接口编程( Aop 动态代理使用的就是多态) 15、面向对象的三大特征 封装 继承 多态16、String 不可变字符,只能初始化一次,StringBuilder 和StringBuffer 前者线程不安全,后者线程安全。17、Java 不支持类之间的多继承,即一个子类只能有一个父类。单继承性使得 Java 简单,易于管理程序,不会出现逻辑错误以及多继承自身的缺陷。为了克服单继承的缺点,Java 使用了接口,一个类可以实现多个接口,从而在另一个更合理的角度来实现纯粹的多重继承性,实现接口使用
5、关键字 implements。子类与父类之间只可以单继承,类可以实现多个接口,接口之间可以实现多继承,即一个子接口可以使用 extends 关键字继承多个父接口,拥有多个父类,只需用逗号将接口名一一分开即可 18、若每个线程中对全局变量 、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。 19、容器之间的关系20、map 的遍历public static void main(String args) Map map = new HashMap();map.put(“1“, “value1“);m
6、ap.put(“2“, “value2“);map.put(“3“, “value3“);/第一种:普遍使用,二次取值System.out.println(“通过 Map.keySet 遍历 key 和 value:“);for (String key : map.keySet() System.out.println(“key= “+ key + “ and value= “ + map.get(key);/第二种System.out.println(“通过 Map.entrySet 使用 iterator 遍历 key 和 value:“);Iterator it = map.entryS
7、et().iterator();while (it.hasNext() Map.Entry entry = it.next();System.out.println(“key= “ + entry.getKey() + “ and value= “ + entry.getValue();/第三种:推荐,尤其是容量大时System.out.println(“通过 Map.entrySet 遍历 key 和 value“);for (Map.Entry entry : map.entrySet() System.out.println(“key= “ + entry.getKey() + “ an
8、d value= “ + entry.getValue();/第四种System.out.println(“通过 Map.values()遍历所有的 value,但不能遍历 key“);for (String v : map.values() System.out.println(“value= “ + v);当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。22、set 的遍历1. 1.迭代遍历: 2. Set set = new HashSet(); 3. Iterator it = set.iterator(); 4. while (it.hasNext(
9、) 5. String str = it.next(); 6. System.out.println(str); 7. 8. 9. 2.for 循环遍历: 10. for (String str : set) 11. System.out.println(str); 12. 13. 14. 15. 优点还体现在泛型 假如 set 中存放的是 Object 16. 17. Set set = new HashSet(); 18. for 循环遍历: 19. for (Object obj: set) 20. if(obj instanceof Integer) 21. int aa= (Inte
10、ger)obj; 22. else if(obj instanceof String) 23. String aa = (String)obj 24. 25. 26. 22、冒泡排序public static void main(String args) int array=2,1,4,10,3,8,6,5;sort(array);System.out.println(Arrays.toString(array);public static void sort(int array)int temp;for(int i=0;iarrayj+1)temp=arrayj+1;arrayj+1=arrayj;arrayj=temp;23、