关于java的一些相关知识点
2018-03-03 14:08
417 查看
1.JVM ClassLoader加载机制
1.启动类加载器 bootstraploader,在jvm与运行的时候加载java核心的api 2.用java程序实现的两个ClassLoader 扩展类Extclassloader和AppClassloader 3.类加载的过程中使用了父类委托机制,避免重复加载,安全,不不可以让自定义的String类来取代系统自带的核心类
2. jvm使用统一编码Unicode characters来表示
3. i++和++i的区别
i++ :先引用后增加 ++i :先增加后引用 i++ :先在i所在的表达式中使用i的当前值,后让i加1 ++i :让i先加1,然后在i所在的表达式中使用i的新值
java中使用了中间缓存变量的机制 所以i=i++;其实i值不变 temp=i; i=i+1; i=temp; 而i=++i;i值会改变 i=i+1; temp=i; i=temp;
4. length和length()的区别
String[] a = {"a", "b"}; System.out.println(a.length); System.out.println(a[0].length()); length是数组长度, length()是字符串长度
5.强制类型转换d
1.低级变量可以直接转化为高级变量, byte b; int i = b; long c = i; 2.高级变量转化为低级变量,需要强制类型转换 int i; byte b = (byte)i; 3.系统默认的浮点数是double型 float z=1.0f 要加个f,不能直接写成float z = 1.0; 4.进制转换 int a = 078,错误的表达的方式, 0 是八进制,以0开头,由0~7组成的数 0x 是十六进制 ,以0x开头,由0~9,A~F或a~f组成的数 5. short e = 1;e=e+1;是错误的, 因为e+1会变成int形式,而e还是short形式,所以编译错误。 6. java的移位操作是 32>>32还是32,没有变,因为32位是int整形变量,即一个循环,回到原来的位置
6.ASCII码表基本数值
0为48 A为65 a为97
7.final ,finally, finalize的区别
1.声明为final的变量,意味着不能再派生新的字类, 2.finally负责异常的最后资源的释放。 3.finalize是方法名,子类覆盖finalize()方法以整理系统资源或者 其他清理操作 4.try{}里面有一个return代码,则finally代码块会在return之前运行。
8.反射机制
反射主要指可以访问,检测和修改自身的状态或行为的一种能力, 它使java能够灵活地创建代码,这些代码可以在运行时装配, 无需在组件之间链接,反射允许在编写和执行时, 使程序代码能够装载到jvm的内部代码信息, 而不是源代码中选定的类协作的代码。 java的类反射Reflection是java开发语言的特征之一, 它运行将java程序对自身进行检查。并能操作程序的内部属性。
9.java传值和传引用
str=“aaa”; 先生成一个变量 对于基本类型变量,java是传值的副本,变量值不会改变 对于一切对象型变量,java是传引用的副本。
10.默认初始值
boolean 默认初始值为false; static int 默认初始值为0;
11.字符串和整数的互换
String s = "11"; int a = Integer.parseInt(s);
12.垃圾收集器的标准
两个: (1) 给对象赋予了空值null,以后再也没有调用过, (2) 给对象赋予了新值,即重新分配了空间。
13.java是如何管理内存的
java通过new来创建对象, 然后通过垃圾收集器来管理,对象的释放由GC决定和执行的 GC为了能够正确释放对象,必须监控每一个对象的运行状态,包括对象的申请, 引用,被引用,赋值等,GC都需要进行监控。 对象不再引用,被GC回收。
14.java的内存泄露
1.对象是可达的,即在有向图中,存在通路与其相连, 2.对象是无用的,程序以后不会在使用这些对象。 (1)忘记“释放”之前分配的内存,有可能引起内存泄漏。
15.java创建对象的几种方法
(1)用new来创建对象 (2)运用反射手段,调用java.lang.class或者java.lang.reflect.Construction类 的newInstance()实例方法。 (3)调用对象的clone()方法 (4)运用反序列化手段,调用ObjectInpputStream的readObject方法
16.java的Collections针对集合的帮助类
- 排序 Collections.sort(list); - 混排 Collections.shuffling(list); - 反转 Collections.reverse(list); - 使用指定元素替换列表中所有的元素 Collections.fill(li,"a"); - 返回最小值 Collections.min(list); - 返回最大值 Collections.max(list); - 查询指定元素在集合中出现的次数 static int frequency(Collection coll,Object o);
17.如何选择容器类
1. 在各种list中,默认是ArrayList;当插入删除频繁时,选用LinkList 2. 在各种Set中,HashSet通常优于HashTree(插入,查找), 当需要一个已 经排序的序列,用TreeSet
18.派生类调用父类构造函数
1. 派生类被构造时一定会先调用父类的构造函数 2. 若不指定,就会调用无参数的构造函数 3. 普通的类方法是可以和类名同名的,和构造方法唯一的区别是,构造方法没有返回值
19.继承与接口
1. 静态方法不能被覆盖 2. super调用继承父类构造函数 3. this指向当前对象 4. 接口的方法默认是public abstract 5. 接口的属性默认是public static final常量 6. final和abstract不能同时出现;
20.”==”和“equals”的区别
==判断符号左右两个变量是否指向同一地址 equals 判断两个object是否一样
21. 字符串的操作
String a= "ABCDEFG" substring(3,5)是输出DE,substring 是包括前面不包括后面
22.java的常量池,被放到了堆空间
1. String a = "aaa"; String b = "aaa"; a==b为true,因为"aaa"已经存储在常量池中 String a= "aaa"; String b = new String("aaa"); a==b为false,因为会new一个新对象 2. int a=5; Integer b=5; a==b为true,因为这涉及到装箱和拆箱的过程,包装类。 3. String s = "a"+"b"+"c"+"d"; 就创建了一个对象, 对于常量,编译时直接存储它们的字面值,而不是它们的引用,在编译时直接 将它们的连接的结果提取出来变成了"abcd". 4. String s = “hello”; JVM先根据“hello”的内容来查找对象,如果没有找到,就在heap上创建新的对象,并将其赋给s1,否则使用已经存在的对象。 String s = new String("hello"); 直接new一个新的对象,会产生内容相同而地址不同的String对象。
23.intern()方法
查找内容相同的字符串(equals()) String s1="hello"; String s2=new String("hello"); s2=s2.intern(); //查找内容相同的字符串并将其指向给s2, 所以s1和s2指向同一个s1; s1==s2为true.
24.String和StringBuffer()方法的区别
1. String result = "hello"+"world"; StringBuffer result = new String() .append("hello").append("world"); 使用"+"比StringBuffer好些,因为StringBuffer还有个append操作 2. StringBuffer str = new StringBuffer(); for(i=0;i<5000;i++){ str.append("a"); }d //StringBuffer内部实现的是char数组,默认初始长度为16; //每当长度大于char数组的长度时,JVM会产生更大的数组, //再将原来的数组复制到新的数组中。所以用StringBuffer, //最好是给它指定合适的大小, StringBuffer str = new StringBuffer(6000); 3. 使用"+="会多创造新的String对象,造成浪费
25.GC线程是否为守护线程
线程分为守护线程和非守护线程(用户线程) 只要当前JVM实例中还有一个非守护线程存在时,所有的守护线程就全部工作, 只有当最后一个非守护线程结束时,守护线程随着JVM一起结束,守护线程最 典型的时GC线程
相关文章推荐
- 自己关于java的一些知识点的笔记
- [Thinking in JAVA] 关于内部类的一些知识点
- 在ACM中Java关于大数的一些相关操作
- java的一些相关知识点(1)
- java 中关于I/O操作一些相关类的使用
- 关于java SSH的一些知识点的解析
- 关于java中的==,equal,new,= 的一些相关知识(有点乱)
- 关于css中的伪类first-child的一些相关知识点
- 关于java一些知识点的总结
- 给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)
- 关于java的一些还不是特别了解的知识点
- 一些关于Java的琐碎基本知识点
- 在ACM中Java关于大数的一些相关操作
- 一些关于Java的琐碎知识点
- 关于一些java的零碎的知识点
- java 关于继承的一些重要知识点(面试易考点)
- 一些关于java的琐碎知识点
- 关于java的一些相关源码
- 关于treeview的一些知识点
- java学习笔记,关于java的一些基础知识,适用于初学者,第一节