Java面试宝典 1.13~1.31【2020.5 Beta版】

Java面试宝典 1.13~1.31【2020.5 Beta版】

<a name="14cb060b"></a>

1.Java基础

<a name="22b8b366"></a>

1.13 静态变量与实例变量的区别?

静态变量 实例变量
定义 使用static关键字声明的 实例变量在类中声明,但是在方法,构造函数或其他块之外
初始化 属于类,只要加载了类的字节码,就会被分配空间 必须创建实例对象,才会被分配空间
加载次数 初始化加载一次 每创建一次对象加载一次

<a name="3360eeec"></a>

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

<br />不可以,static方法调用时不需要创建对象,非static方法的调用需要创建实例,那在这个时刻,就像是你想找对象秀恩爱,你对象还没出生,这不扯呢<br />

<a name="6c5ca606"></a>

1.15 Math.round(1.5)等于多少?Math.round(-1.5)又等于多少?

// Math.round 返回一个四舍五入的值
Math.round(1.5)  =  2
Math.round(-1.5) =  -1
//
Math.ceil() 向上取整
Math.floor() 向下取整

<a name="74f218ae"></a>

1.16 下面的代码有什么不妥之处?

// 1
if(str.equals("test")){}

// 2
System.out.println(0.1+0.2);

<br />第一个 str 为 null的话会抛出空指针异常,所以改为 "test".equals(str)<br />第二个会输出0.30000000000000004,改成<br />

System.out.println(new BigDecimal(String.valueOf(0.1)).add(new BigDecimal(String.valueOf(0.2))));

<a name="76fb7dfa"></a>

1.17 java中作用域 public,protected,private和默认不写时的区别

作用域 说明
public 可以被任何类访问
protected 可以被同一包中的所有类访问,被所有子类访问,子类没有在同一包中也可以访问
private 只能够被当前类的方法访问
缺省 无访问修饰符,可以被同一包中的所有类访问,如果子类没有在同一个包中,也不能访问

<a name="2553c675"></a>

1.18 重载与重写的区别

<br />很多,面试的时候就捡简要的说<br />

  • 重载在一个类中,重写发生在父子类
  • 重载是可以在一个类中有多个重名但参数列表不同,参数列表要个数或数据类型不同,重写则返回值和形参都不能改变
  • 重写的方法只能比父类抛出更少的异常,并且访问限制符也只能比父类大<br />
    ps: 参数相同,但返回值相同,那不叫重载,错误写法

<br />基本上回答这些就OK<br />扩展:方法的重载与重写都是实现多态的方式,区别是前者是编译时的多态性,后者是运行时的多态性,重写遵循里氏代换原则,就是子类可以扩展父类的功能,但不能改变父类原有的功能<br />

<a name="badee970"></a>

1.19 Integer与int的区别

  • Integer是int的包装类,可以为 null 值
  • int是8种原始数据类型之一<br />
    8种原始数据类型与其包装类型
原始 包装类
byte Byte
short Short
int Integer
long Long
boolean Boolean
char Character
float Float
double Double

1.20 构造器Constructor是否可被override?

<br />构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload<br />

<a name="bdd0c610"></a>

1.21 java的接口可以继承接口吗?接口中可以定义静态或者默认方法吗?

<br />java的接口可以继承接口,第二个在jdk8之后也支持了,可以写静态方法体,但是默认方法要用default修饰符<br />

public interface TestInterface implements A,B,C{  
  
    static void staticMethod() {  
        System.out.println("static method");  
    }
 
    default void defaultMethod() {  
        System.out.println("default method");  
    }
}

<a name="dcf93c57"></a>

1.22 抽象类可以实现接口吗?抽象类是否可以继承具体类?抽象类中是否可以有静态main方法?

  • 抽象类可以实现接口
  • 抽象类可以继承具体类
  • 抽象类中可以有静态main方法

<br />抽象类可以实现接口,可以不必须实现接口中的所有方法<br />
<br />抽象类与普通类的区别<br />

  • 前者不能实例化
  • 前者允许存在抽象方法
  • 后者实现接口必须要实现接口中所有方法

<a name="09764d9b"></a>

1.23 clone()有什么作用?

<br />super.clone()<br />拷贝使用<br />

package erdan.demo;

public class TestClone {
    public static void main(String[] args) throws CloneNotSupportedException {
        Demo demo = new Demo();
        demo.a = 1;
        demo.b = 2;
        Demo demo2 = (Demo) demo.clone();
        demo2.a = 100;
        System.out.println(demo.a + " " + demo.b);
        System.out.println(demo2.a + " " + demo2.b);
    }

    static class Demo implements Cloneable {
        int a;
        int b;

        public Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
}

<a name="4e1b36ed"></a>

1.24 面向对象的特征

特征 总结
封装 隐藏对象的属性与实现细节,对外提供公开的访问接口
抽象 将一类对象共同特征总结出来构造类的过程
继承 从已有类得到继承信息创建新类的过程
多态 指允许不同子类型的对象对同一消息作出的不同响应

<a name="03cf2641"></a>

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

<br />答:父类中有方法 fun(),子类B与C分别继承与重写了fun()方法,当创建一个 A a = new B()时,a.fun()调用的是B中的fun(),假若是new C(),那么调用的就是C中的fun()方法,怎么判断使用的是哪个类的fun(),就是动态绑定,这个现象,就是多态<br />

1.26 abstract class 与 interface 有什么区别?

  • abstract class可以有构造方法,而interface不行
  • 单继承(抽象类),多实现(接口)
  • 方法类型:接口只能有抽象方法。抽象类可以具有抽象和非抽象方法。从Java 8开始,接口还可以具有默认方法和静态方法。
  • 最终变量:在Java接口中声明的变量默认为final,抽象类可能包含非 final 变量。
  • 变量类型:抽象类可以具有 final,非 final,static和非 static 变量。接口只有 static 变量和 final 变量。
  • 实现:抽象类可以提供接口的实现。接口无法提供抽象类的实现。
  • 继承与抽象:可以使用关键字“ implements”来实现Java接口,而可以使用关键字“ extends”来扩展抽象类。
  • 数据成员的可访问性:默认情况下,Java接口的成员是公共的。Java抽象类可以具有private,protected修饰的类成员
  • 接口是用来约束类的,抽象类基本是用来代码复用的

1.30 抽象的方法可以是静态的吗?abstract与synchronized可以一起使用吗?

<br />用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被调用,所以不能为静态的。<br />synchronized作用在具体的方法上才有意义,所以不行<br />

1.31 什么是内部类?Static Nested Class 与 inner class 不同点?

<br />内部类顾名思义就是在类内部的一个类,内部类中不能定义静态成员<br />Static Nested Class 静态内部类,不依赖于外部实例被实例化,通常的内部类需要在外部实例化后才能实例化。

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352