java面试基础题2

   java面试基础题2

    是否可以从一个static方法内部发出对非static方法的调用?

      答:不可以,非static方法的调用需要对象的参与,而static方法是通过类来进行访问的

 

    Integer与int的区别

      答:从数据类型上来看,Integer属于引用数据类型,int属于基本数据类型。

        从存储方式上来看,Integer实际上是对象的引用,指向存储在堆内存中的Integer对象;而int是直接存储数据。

        Integer的默认值是null;int默认值是0。

 

    Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

      答:Math.round(11.5)=12;Math.round(-11.5)=-11

        Math.round的规则:  

          当小数点后一位=5时,正数运算结果为整数部分+1,负数为整数部分

          当小数点后一位<5时,无论正负数结果都是整数部分

          当小数点后一位>5时,无论正负数运算结果是整数部分绝对值+1,符号不变

 

    Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

      答:Overload是方法重载,Override是方法重写(覆盖);

        overload存在于同一个类中,override只能存在于父类和子类中。

        overload参数类型、参数个数、返回值至少一个不同,override方法名、参数、返回值必须相同。

        overload中方法的异常类型和数目不会对重载造成影响,override中子类不能抛出比父类更多的异常

        overload中重载的方法与修饰符无关,override在进行继承时子类的访问权限不能比父类低

        由于方法的重载与修饰符和返回值是无关的,所以overload是可以改变返回值类型的    

      

    接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

      答:接口可以继承接口

        

        

 

 

 

         

        抽象类可以实现接口

        

        

 

 

         抽象类可以继承实体类

        

        

 

        抽象类中可以有静态的main方法

        

 

 

    Java中实现多态的机制是什么?

      答:子类继承父类,类实现接口。方法的重写Overriding和重载Overloading是Java多态性的不同表现,只不过重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

 

    abstractclass和interface语法上有什么区别?

      答:

        抽象类可以写所有的方法,只是抽象类的构造方法在实例化的时候必须赋值子类对象;接口不能写构造方法

        抽象类可以定义普通的成员变量;接口只能定义public static final修饰的变量,即常量

        抽象类中可以写静态方法;在jdk8之前,接口只能写抽象方法,但从jdk8开始,接口中就可以定义静态方法了

        抽象类的方法的访问类型可以是public、protected和default;接口中方法的访问类型只能是public,即默认的public abstract

        一个类可以实现多个接口,但只能继承一个抽象类;并且接口可以继承多个类,但抽象类只支持单继承。

 

    abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

      答:

        方法不能同时被static和abstract修饰:

          一是由于static修饰的方法必须有方法体而abstract修饰的方法没有方法体,两者互相矛盾;

          二是因为abstract修饰的方法必须被重写(overwrite)而static修饰的静态方法不能被重写(overwrite)

        

 

        方法不能同时被native和abstract修饰:

          native修饰方法只有方法的声明,没有方法的实现,它将方法的实现交给本地操作系统

          abstract修饰的方法也只有方法的声明,没有方法的实现,但它将方法的实现交给子类

          如果这两者同时修饰同一个方法就会产生矛盾:究竟是把方法交给本地实现还是类实现,

          所以这两者不能同时修饰一个方法

          

 

 

        方法不能同时被synchronized和abstract修饰:

          synchronized修饰的方法称为同步代码块,必须拥有方法体;而abstract修饰的方法没有方法体

          

 

 

 

 

    内部类可以引用它的包含类的成员吗?有没有什么限制?

      答:

        只有静态内部类有例外:

          静态内部类:当内部类是静态内部类时,可以引用包含类的成员变量,但必须有static修饰

          

 

          内部类:当内部类时普通的成员内部类时,可以访问包含类中的所有任何成员变量

          

 

    String s = "Hello";s = s + "world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

      答:没有变,当我们执行第一条语句String s = "Hello"时,引用s第一次指向的内容是“Hello”;当执行了+操作后,引用s的内存地址发生改变,并指向“World!”,此时String对象中的内容并没有改变。

        

 

原文地址:https://www.cnblogs.com/javaisbest/p/11606980.html