java面试题总结

链接: https://www.nowcoder.com/questionTerminal/10afeae4a5c24a35898c0771fb5995b1
来源:牛客网
在牛客网做题,收录一些题目与优秀回答。

1,有如下一段代码,请选择其运行结果()

1
2
3
4
5
6
7
8
9
10
public class StringDemo{
   private static final String MESSAGE= "taobao" ;
   public static void main(String [] args) {
    String a = "tao" + "bao" ;
    String b= "tao" ;
    String c= "bao" ;
    System.out.println(a==MESSAGE);
    System.out.println((b+c)==MESSAGE);
   }
}
  • true true
  • false false
  • true false
  • false true

链接:https://www.nowcoder.com/questionTerminal/10afeae4a5c24a35898c0771fb5995b1
来源:牛客网

2,static类型的变量存在内存的哪个位置

方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。

3,final变量定义是需要初始化吗?

      被final修饰的变量必须要初始化,赋初值后不能再重新赋值。

     final修饰的变量必须显示的初始化,初始化可以以三种方式:1)定义时初始化,2)在构造器中设置值,3)在非静态块中为final实例变量设置值。

4,Java中接口和抽象类的区别是什么?

      抽象类可以有构造函数,接口不可以有构造函数

      抽象类中可以有普通成员变量,接口中没有普通成员变量,只能有常量  

      抽象类中的方法可以被static修饰,接口中的方法不可以被static修饰

      抽象类中可以有普通方法和抽象方法,接口中的方法全是抽象方法

      抽象中的方法可以被public,protected等修饰符修饰,接口中的方法全都是public abstract的方法,如果省略修饰符,则默认的也都是public abstract修饰

       一个类只能继承一个抽象类,接口可以被多实现,即一个类只能继承一个类,可以实现多个接口

5,抽象类和接口如何选择?

     如果要创建不带任何方法定义和成员变量的基类,就应该选择接口而不是抽象类;

     如果知道某个类是基类,第一个选择的应该是让它成为接口,只有必须要方法定义和成员变量时才可以选择抽象类,因为抽象类允许存在一个或多个被具体实现对的方法,只要方法没有完全被全部实现则该类仍是抽象类。

6,抽象类可以实例化吗?

     参考:http://blog.sina.com.cn/s/blog_7ffb8dd5010120oe.html

    抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,而是通过父类的引用来指向子类的实例来间接地实现父类的实例化(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化).

   但是:接口是不能被实例化的(接口压根就没有构造函数),与上面的原理相似同样  接口类型的引用可以指向其子类的对象

public abstract class A

{
    private String str;
   
    public A(String  a)
    {
        System.out.println("父类已经实例化");
        this.str=a;
        System.out.println(str);
    }
    public abstract void play();
}


package com.etc;

public class B extends A
{
    public B(String a)
    {super(a);
        System.out.println("子类已经实例化");
    }

    public void play()
    {
        System.out.println("我实现了给方法");
    }
    public static void main(String[] args)
    {
        A aa = new B("aa");
    }
}
运行B类结果如下: 父类已经实例化
                  aa

                 子类已经实例化







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值