1、创建数组并赋初值
new String[]{"acb","adc","aaa"}
2、数组的反射
具有相同维数和数据类型的数组,属于同一个类型,拥有相同的Class实例对象
int[] a1=new int[4];
int a2[] =new int[3];
//判断俩个int类型的一维数组的字节码是否相同
System.out.println(a1.getClass()==a2.getClass());
返回结果为TRUE
3、反射中的invoke(Object obj,args...arg) 方法:
当第一个参数为null时,表示该方法为静态方法
4、hashcode()方法的作用:
提高从集合中查找元素的效率。这种方式将集合分成若干个存储区域对象,每个对象可 以计算出一个哈希码,将哈希码分组,每组分别对应某个存储区域,根据该对象的哈希 码就可以确定该对象存储在哪个区域,然后再在这个区域去查找。
5、java中的内存泄露:
当一个对象不再被使用,却没有被垃圾回收机制释放时,就会造成内存泄露
6、HashSet
HashSet是采用hashcode()算法存取对象的集合,它内部都是采用对某个数字N进行取 余的方式将哈希码进行分组和划分对象的存储区域
7、hashcode()导致内存泄露
当一个对象被存储进HashSet集合后,就不能再修改这个对象中的参与计算哈希值的字 段了(对象的属性值)。否则,对象修改后的哈希值与最初存储进HashSet集合中的哈 希值就不同了,在这种情况下,使用该对象的当前引用去HashSet集合中检索,将找不 到结果,这将导致无法从HashSet中删除该对象,从而造成内存泄露。
8、JavaBean:
(1)JavaBean是特俗的java类
(2)Int getAge(){} void setAge(){},有以上代码规范的java类为JavaBean类,JavaBean 类的属性是根据方法的名称来获取的,去掉方法的set、get后,剩下的就是JavaBean 的属性(如果方法的第二个字母是大写,去掉set、get后将其变小写)
9、BeanUtils工具:
BeanUtils工具操作JavaBean中的get、set方法来获取、设置其中的属性非常的方便
10、BeanUtils与PropertyUtils的区别:
BeanUtils是通过字符串来操作JavaBean中的属性,而PropertyUtils是通过属性原本的 类型来操作的
11、Anatation(注解)
(1)系统内建的三个Annotation类型:@Override(覆写)、@Deprecated(不赞成使用的)、@SuppressWarnnings(压制安全警告的)
(2)自定义的Annatation格式:@interface A {}
12类的加载器:
(1)作用:将.class文件的内容加载到硬盘中,再对其进行一些处理,处理完的结果就是字 节码
(2)Class类的getResourceAsStream(相对路径)、getResourceAsStream(绝对路径)
(3)java虚拟机中可以安卓多个类加载器,系统默认三个主要类加载器,每个类加载也是java类,因为加载器也要被类加载器加载,所以第一个java类加载器不是java类,
这就是BootStart(用C++写的一段二进制代码)类
13、类加载器的委托机制:
每个类加载器加载类时,又先委托给其上级类加载器,当所有父类没有加载到类时,回到发起者类加载,发起者还是加载不了时,则抛出ClassNotFoundException异常
14、编写加载类的原理:
(1)自定义的类加载器必须继承ClassLoader类
(2)覆写父类中的findClass()方法
15、类加载器加密文件的方法:
加密时用一个简单的算法,将文件的输入流转换,然后将加密后的输出流保存到另一个文件中,呈现给用户的就是加密后的文件
16、StringBuffer与StringBuilder类的区别:
俩者在应用之中都差不多,都是动态的往类中添加对象。在单线程的情况下,StringBuilder的效率要高点,在多线程的情况下,StringBuffer的效率要高点。因为
StringBuilder不是被共享的类,线程安全;StringBuffer是被共享的类,要考虑线程安全。