zoukankan      html  css  js  c++  java
  • 记录一次面试

    1.== 和equals

    int x = 10;
    int y = 10;
    String str1 = new String("abc");
    String str2 = new String("abc");
    System.out.println(x == y); // 输出true
    System.out.println(str1 == str2); // 输出false

    (1)==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值

    equals()方法存在于Object类中,因为Object类是所有类的直接或间接父类,也就是说所有的类中的equals()方法都继承自Object类

    Object类中equals()方法底层依赖的是==号,那么,在所有没有重写equals()方法的类中,调用equals()方法其实和使用==号的效果一样,也是比较的地址值

    Java提供的所有类中,绝大多数类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值

    java内存中的常量池属于方法区的一部分,当运行到new String("abc");

    如果常量池中没有,就在常量池中创建一个对象”abc”,第二次创建的时候,就直接使用,所以两次创建的对象其实是同一个对象,它们的地址值相等。

    (2)java中的数据类型,可分为两类: 
    1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
      他们之间的比较,应用双等号(==),比较的是他们的值。 
    2.复合数据类型(类) 
      当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
      对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

     (3)在JVM中 内存分为栈内存和堆内存。二者区别:

    当我们创建一个对象(new Object)时,就会调用它的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用,还需注意的一点,基本数据类型是存储在栈内存中。

    2.int 和integer

    1、Integer是int的包装类,int则是java的一种基本数据类型 
    2、Integer变量必须实例化后才能使用,而int变量不需要 
    3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 
    4、Integer的默认值是null,int的默认值是0

    3.反射

    通过反射,Java 代码可以发现有关已加载类的字段,方法和构造函数的信息,并可以在安全限制内对这些字段,方法和构造函数进行操作。

    简而言之,你可以在运行状态中通过反射机制做到:

    • 对于任意一个类,都能够知道这个类的所有属性和方法;

    • 对于任意一个对象,都能够调用它的任意一个方法和属性;

    这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

    在我看来我们平时使用 Java 反射主要涉及两个类(接口) Class, Member,如果把这两个类搞清楚了,反射基本就 ok 了。

    多线程

    run和start 区别

    索引

    锁表

    重写和重载

    子类和父类的方法谁先实例化

    泛形

    设计模式用过哪些

    jvm

    单例

    list set map 的区别

    HTTP TCP UDP 区别

    避免死锁

  • 相关阅读:
    初拾Java(问题一:404错误,页面找不到)
    新年新气象--总结过去,展望未来
    接口测试[整理]
    [转]SVN-版本控制软件
    浅谈黑盒测试和白盒测试
    Bug管理工具的使用介绍(Bugger 2016)
    P2805/BZOJ1565 [NOI2009]植物大战僵尸
    近期学习目标
    P3643/BZOJ4584 [APIO2016]划艇
    P5344 【XR-1】逛森林
  • 原文地址:https://www.cnblogs.com/alter888/p/9135339.html
Copyright © 2011-2022 走看看