java记录(1)
仅个人记录
1、一个object对象有对应的hashCode值,重写了toString方法如何知道hashCode值?
object原生的toString()方法:返回单前对象的类名及hash值。相当于getClass().getName() + '@' + Integer.toHexString(hashCode())
。
当子类重写了toString()方法后可以用hashCode()方法获取到hash值。
hashCode()根据对象的字段值等进行计算。
java中利用对象的hashCode值来配合一些散列集合HashMap等(判断对象存在)。
2、java数组定义,数组长度不可变?
java中定义数组在定义时可以不标注长度,如int[] array
,但在初始化数组的时候必须给定数组长度,且该数组长度不可改变,
定义长度不确定的数据集时采用集合:list、map等实现。
3、@contoller在框架中的作用?
在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返回给对应的View进行展示。
常和@RequestMapping等注解一起使用,mvc模式中的controller层负责业务组合和跳转,具体实现逻辑在service层。
4、java只能继承一个类,但能实现多个接口?
在java中一个类只能继承(extends)一个父类,一个类却能实现(implents)多个接口。
接口与接口之间却能实现一个接口继承(extends)多个接口。
5、private修饰的属性,外部引用应该怎么使用?
实现该类的实例对象,调用该类中关于该属性的get和set方法。
6、finalize() 方法
java中垃圾回收机制回收一个对象时调用的第一个方法,finalize方法(只执行一次)在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
当GC准备释放一个对象所在的内存的时候,将调用finalize()方法,且在下一次垃圾收集过程中,才会真正回收对象的内存。
7、向上和向下转型,父类与子类之间
向上转型:通过子类对象(小范围)实例化父类对象(大范围),属于自动转换。例:Parent p = new Son(); //子类中的重写方法会覆盖父类中方法。
向下转型:过父类对象(大范围)实例化子类对象(小范围),属于强制转换。例:Son s = (Son) p;//调用一些子类中特有的方法。
8、java内部类、匿名类
内部类:在一个类中定义另一个类,内部类可以调用外部类的变量和方法(无论是否静态),内部类中不可以声明类变量和类方法。
编译字节码文件名为外部类名$内部类名。
匿名类:没有名称的类,形式一般为:new 父类(){子类内容};//‘父类’为子类需要继承或实现的类和接口,匿名类可以访问外部的成员变量和方法,
但不可以声明static变量和方法
9、Hash算法
散列算法,将任意长度的消息压缩某一个固定长度的消息摘要的函数。
10、HashMap
数组+链表形式存储,HashMap由一个主干数组和每个数组元素连接的链表组成。
主要应用了一些hash函数对存储位置进行了计算,hashCode()、equals()等。
每一个数组元素包含key,value,next,其中key是唯一的。