美文网首页
Java知识点整理

Java知识点整理

作者: 阳光下的狐狸 | 来源:发表于2017-02-22 11:33 被阅读0次
    1.Java 中的 SoftReference 是什么

    Java 中的 SoftReference 即对象的软引用。如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。使用软引用能防止内存泄露,增强程序的健壮性
    SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程对该Java对象的回收。也就是说,一旦SoftReference保存了对一个Java对象的软引用后,在垃圾线程对这个Java对象回收前,SoftReference类所提供的get()方法返回Java对象的强引用。另外,一旦垃圾线程回收该Java对象之后,get()方法将返回null

    2. finally final finalize的作用

    final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
    finally是异常处理语句结构的一部分,表示总是执行。
    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。

    3.String StringBuffer StringBuilder 的区别

    三者在执行速度方面的比较:StringBuilder > StringBuffer > String
    String 字符串常量,不可变
    StringBuffer 字符串变量(线程安全)
    StringBuilder 字符串变量(非线程安全)
    String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象。

    StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
    由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    5.Collection包结构,与Collections的区别。

    Collection是一个接口,它是Set、List等容器的父接口;
    Collections是一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。

    6.List, Set, Map是否继承自Collection接口?

    List和Set是,Map不是。

    7.Set和List的区别

    Set接口存储的是无序的、不重复的数据。
    List接口存储的是有序的、可以重复的数据。
    Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 ,实现类有HashSet、TreeSet。
    List元素无序,但元素不可重复,查找元素效率高,插入删除效率低,因为会引起其他元素位置改变,实现类有ArrayList、LinkedList、Vector。List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。

    8.Java 中 == 和 equals 和 hashCode 的区别

    ‘==’是用来比较两个变量(基本类型和对象类型)的值是否相等的, 如果两个变量是基本类型的,那很容易,直接比较值就可以了。如果两个变量是对象类型的,那么它还是比较值,只是它比较的是这两个对象在栈中的引用(即地址)。 对象是放在堆中的,栈中存放的是对象的引用(地址)。由此可见’==’是对栈中的值进行比较的。如果要比较堆中对象的内容是否相同,那么就要重写equals方法了。
    hashCode 为哈希算法
    当集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子能定位到它应该放置的物理位置上。如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。
    如果两个对象相同,那么它们的hashCode值一定要相同;
    如果两个对象的hashCode相同,它们并不一定相同。

    9.android中get方式和post方式提交数据到服务器的区别

    请求的URL地址不同
    get: [http://10.0.2.2:8080/HttpTest/index.jsp?option=getUser&uName=jerehedu]
    post: [http://10.0.2.2:8080/HttpTest/index.jsp]
    get方式的数据直接明文显示在URL地址中,是不安全的;而post方式则不会,安全性相对较高
    请求时携带的内容大小不同
    get:1k
    post:理论上无限制
    即post适合传大量数据

    10.TCP UDP的区别

    TCP面向有链接的通信服务 UDP面向无连接的通信服务
    TCP提供可靠的通信传输 UDP不可靠,会丢包
    TCP保证数据顺序 UDP不保证
    TCP数据无边界 UDP有边界
    TCP速度慢 UDP速度快
    TCP面向字节流 UDP面向报文
    TCP一对一 UDP可以一对一,一对多
    TCP报头至少20字节 UDP报头8字节
    TCP有流量控制,拥塞控制 UDP没有

    11.Overload和Override的区别

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。
    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
    区别点 方法重载 方法重写
    参数列表 必须修改 一定不能修改
    返回类型 可以修改 一定不能修改
    异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常
    访问 可以修改 一定不能做更严格的限制(可以降低限制)

    相关文章

      网友评论

          本文标题:Java知识点整理

          本文链接:https://www.haomeiwen.com/subject/iggpwttx.html