一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java面試題沖刺第十七天--基礎(chǔ)篇3

Java面試題沖刺第十七天--基礎(chǔ)篇3

2021-11-09 11:42_陳哈哈 Java教程

這篇文章主要為大家分享了最有價(jià)值的三道java基礎(chǔ)面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下

面試題1:JDK1.8的新特性有哪些?

接口的默認(rèn)和靜態(tài)方法:

Java 8允許我們給接口添加一個(gè)非抽象的方法實(shí)現(xiàn),只需要使用 default關(guān)鍵字即可,這個(gè)特征又叫做擴(kuò)展方法。

?
1
2
3
4
5
6
7
8
9
10
public interface JDK8Interface { 
    // static修飾符定義靜態(tài)方法 
    static void staticMethod() { 
        System.out.println("接口中的靜態(tài)方法"); 
    
    // default修飾符定義默認(rèn)方法 
    default void defaultMethod() { 
        System.out.println("接口中的默認(rèn)方法");
    }
}

Lambda 表達(dá)式:

例如:(x, y) -> { return x + y; };λ表達(dá)式有三部分組成:參數(shù)列表,箭頭(->),以及一個(gè)表達(dá)式或語(yǔ)句塊。

在Java 8 中你就沒必要使用這種傳統(tǒng)的匿名對(duì)象的方式了,Java 8提供了更簡(jiǎn)潔的語(yǔ)法,lambda表達(dá)式:

 

?
1
2
3
Collections.sort(names, (String a, String b) -> {
      return b.compareTo(a);
});

方法與構(gòu)造函數(shù)引用:

Java 8 允許你使用 :: 關(guān)鍵字來(lái)傳遞方法或者構(gòu)造函數(shù)引用,上面的代碼展示了如何引用一個(gè)靜態(tài)方法,我們也可以引用一個(gè)對(duì)象的方法:

 

?
1
2
3
converter = something::startsWith;
String converted = converter.convert("Java");
System.out.println(converted);

函數(shù)式接口:

所謂的函數(shù)式接口,當(dāng)然首先是一個(gè)接口,然后就是在這個(gè)接口里面只能有一個(gè)抽象方法。

Annotation 注解:支持多重注解:

很多時(shí)候一個(gè)注解需要在某一位置多次使用。

 

?
1
2
3
4
5
@YourAnnotation
@YourAnnotation
public void test(){
    //TODO
}

新的日期時(shí)間 API:

Java 8新的Date-Time API (JSR 310)受Joda-Time的影響,提供了新的java.time包,可以用來(lái)替代java.util.Date和java.util.Calendar。

一般會(huì)用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration這些類,對(duì)于時(shí)間日期的改進(jìn)還是非常不錯(cuò)的。

Base64編碼:

Base64編碼是一種常見的字符編碼,可以用來(lái)作為電子郵件或Web Service附件的傳輸編碼。

在Java 8中,Base64編碼成為了Java類庫(kù)的標(biāo)準(zhǔn)。Base64類同時(shí)還提供了對(duì)URL、MIME友好的編碼器與解碼器。

JavaScript引擎Nashorn:

Nashorn允許在JVM上開發(fā)運(yùn)行JavaScript應(yīng)用,允許Java與JavaScript相互調(diào)用。

Stream的使用:

Stream API是把真正的函數(shù)式編程風(fēng)格引入到Java中。其實(shí)簡(jiǎn)單來(lái)說(shuō)可以把Stream理解為MapReduce,當(dāng)然Google的MapReduce的靈感也是來(lái)自函數(shù)式編程。她其實(shí)是一連串支持連續(xù)、并行聚集操作的元素。從語(yǔ)法上看,也很像linux的管道、或者鏈?zhǔn)骄幊蹋a寫起來(lái)簡(jiǎn)潔明了,非常酷帥!

Optional:

Java 8引入Optional類來(lái)防止空指針異常,Optional類最先是由Google的Guava項(xiàng)目引入的。Optional類實(shí)際上是個(gè)容器:它可以保存類型T的值,或者保存null。使用Optional類我們就不用顯式進(jìn)行空指針檢查了。

擴(kuò)展注解的支持:

Java 8擴(kuò)展了注解的上下文,幾乎可以為任何東西添加注解,包括局部變量、泛型類、父類與接口的實(shí)現(xiàn),連方法的異常也能添加注解。

并行(parallel)數(shù)組:

支持對(duì)數(shù)組進(jìn)行并行處理,主要是parallelSort()方法,它可以在多核機(jī)器上極大提高數(shù)組排序的速度。

編譯器優(yōu)化:

Java 8將方法的參數(shù)名加入了字節(jié)碼中,這樣在運(yùn)行時(shí)通過(guò)反射就能獲取到參數(shù)名,只需要在編譯時(shí)使用-parameters參數(shù)。

其他核心 API 的改進(jìn)

Java IO改進(jìn)

一些IO改進(jìn)包括:

  • Files.list(Path dir) 返回延遲填充的Stream,其元素是目錄中的條目。
  • Files.lines(Path path) 從文件中讀取所有行作為流。
  • Files.find() 通過(guò)在以給定起始文件為根的文件樹中搜索文件,返回通過(guò)路徑延遲填充的Stream。
  • BufferedReader.lines() 返回一個(gè)Stream,其元素是從此BufferedReader中讀取的行。

集合 API 的改進(jìn)

我們已經(jīng)看到了 forEach()方法和用于集合的 Stream API。Collection API還有一些新方法是:

  • Iterator forEachRemaining(Consumer action)在所有元素都已處理完畢或該動(dòng)作引發(fā)異常之前,對(duì)每個(gè)剩余元素執(zhí)行給定操作的默認(rèn)方法。
  • Collection removeIf(Predicate filter)刪除此集合中所有滿足特定條件的元素的默認(rèn)方法。
  • Collection spliterator() 該方法返回Spliterator實(shí)例,該實(shí)例可用于順序或并行遍歷元素。
  • map replaceAll(),compute(),merge()方法。
  • 具有鍵沖突的HashMap類的性能改進(jìn)

面試題2:什么是內(nèi)部類??jī)?nèi)部類的作用?

將一個(gè)類定義在另一個(gè)類或者另一個(gè)方法里面,這樣的類稱著內(nèi)部類;值得注意的是,內(nèi)部類能夠訪問外部類的所有成員,包括private修飾的。

舉例:把類Inner定義在類Outer中,類Inner就被稱為內(nèi)部類。

?
1
2
3
4
class Outer {
    class Inner {
    }
}

注意:

內(nèi)部類是一個(gè)編譯時(shí)的概念,一旦編譯成功,就會(huì)成為完全不同的兩類。對(duì)于一個(gè)名為 outer 的外部類和其內(nèi)部定義的名為 inner 的內(nèi)部類。編譯完成后出現(xiàn) outer.class 和 outer$inner.class 兩類。所以內(nèi)部類的成員變量/方法名可以和外部類的相同。

內(nèi)部類的作用

1、內(nèi)部類可以很好的實(shí)現(xiàn)隱藏。

非內(nèi)部類是不可以使用 private和 protected修飾的,但是內(nèi)部類卻可以,從而達(dá)到隱藏的作用。同時(shí)也可以將一定邏輯關(guān)系的類組織在一起,增強(qiáng)可讀性。

2、間接的實(shí)現(xiàn)多繼承。

內(nèi)部類提供了Java的"多重繼承"的解決方案,彌補(bǔ)了Java類是單繼承的不足

每個(gè)內(nèi)部類都能獨(dú)立地繼承自一個(gè)(接口的)實(shí)現(xiàn),所以無(wú)論外部類是否已經(jīng)繼承了某個(gè)(接口的)實(shí)現(xiàn),對(duì)于內(nèi)部類都沒有影響。如果沒有內(nèi)部類提供的可以繼承多個(gè)具體的或抽象的類的能力,一些設(shè)計(jì)與編程問題就很難解決。所以說(shuō)內(nèi)部類間接的實(shí)現(xiàn)了多繼承。

內(nèi)部類特點(diǎn)

  • 內(nèi)部類仍然是一個(gè)獨(dú)立的類,在編譯之后內(nèi)部類會(huì)被編譯成獨(dú)立的.class文件,但是前面冠以外部類的類名和$符號(hào)
  • 內(nèi)部類不能用普通的方式訪問。內(nèi)部類是外部類的一個(gè)成員,因此內(nèi)部類可以自由地訪問外部類的成員變量,無(wú)論是否是private的
  • 內(nèi)部類聲明成靜態(tài)的,就不能隨便的訪問外部類的成員變量了,此時(shí)內(nèi)部類只能訪問外部類的靜態(tài)成員變量

面試題3:內(nèi)部類有哪幾種?分別介紹一下

成員內(nèi)部類

?局部?jī)?nèi)部類

靜態(tài)內(nèi)部類

匿名內(nèi)部類

成員內(nèi)部類

成員內(nèi)部類——就是位于外部類成員位置的類

?
1
2
3
4
5
6
7
8
9
  ?
public class Outer {
    //不對(duì)外開放的
    class Inner{
        public void show(){
            System.out.println("成員內(nèi)部類");
        }
    }
}

特點(diǎn):

  • 內(nèi)部類就像一個(gè)實(shí)例成員一樣存在于外部類中。
  • 內(nèi)部類可以訪問外部類的所有成員就想訪問自己的成員一樣沒有限制。
  • 內(nèi)部類中的 this 指的是內(nèi)部類的實(shí)例對(duì)象本身,如果要用外部類的實(shí)例對(duì)象就可以用類名 .this 的方式獲得。
  • 內(nèi)部類對(duì)象中不能有靜態(tài)成員,原因很簡(jiǎn)單,內(nèi)部類的實(shí)例對(duì)象是外部類實(shí)例對(duì)象的一個(gè)成員。

局部?jī)?nèi)部類

局部?jī)?nèi)部類——就是定義在一個(gè)方法或者一個(gè)作用域里面的類;

?
1
2
3
4
5
6
7
class Outer {
      public void method(){
          class Inner {
             System.out.println("局部?jī)?nèi)部類");
          }
      }
  }

特點(diǎn):

  • 方法中的內(nèi)部類沒有訪問修飾符, 即方法內(nèi)部類對(duì)包圍它的方法之外的任何東西都不可見。
  • 方法內(nèi)部類只能夠訪問該方法中的局部變量,所以也叫局部?jī)?nèi)部類。而且這些局部變量一定要是final修飾的常量。

靜態(tài)內(nèi)部類

我們所知道static是不能用來(lái)修飾類的,但是成員內(nèi)部類可以看做外部類中的一個(gè)成員,所以可以用static修飾,這種用static修飾的內(nèi)部類我們稱作靜態(tài)內(nèi)部類,也稱作嵌套內(nèi)部類.

特點(diǎn):不能使用外部類的非static成員變量和成員方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Outter {
      int age = 10;
      static age2 = 20;
      public Outter() {       
      }
      static class Inner {
          public method() {
              System.out.println(age);//錯(cuò)誤
              System.out.println(age2);//正確
          }
      }
  }
  ?
  public class Test {
      public static void main(String[] args)  {
          Outter.Inner inner = new Outter.Inner();
          inner.method();
      }
  }

匿名內(nèi)部類

一個(gè)沒有名字的類,是內(nèi)部類的簡(jiǎn)化寫法

本質(zhì):其實(shí)是繼承該類或者實(shí)現(xiàn)接口的子類匿名對(duì)象

?
1
2
3
4
5
public abstract class A implements B{
    public void A(){
        System.out.println("A");
    }
}
?
1
2
3
public interface B{
    public void B();
}
?
1
2
3
4
5
6
7
8
9
10
11
12
public class Test {
    public static void main(String[] args) {
        //new出接口或者實(shí)現(xiàn)類
        A a= new A (){
            //實(shí)現(xiàn)接口里未實(shí)現(xiàn)的方法
            public void B() {
                System.out.println("匿名內(nèi)部類");
            }
        };
        a.A();
        a.B();
}

特點(diǎn):

一個(gè)類用于繼承其他類或是實(shí)現(xiàn)接口,并不需要增加額外的方法,只是對(duì)繼承方法的事先或是覆蓋。

只是為了獲得一個(gè)對(duì)象實(shí)例,不需要知道其實(shí)際類型。

類名沒有意義,也就是不需要使用到。 每日小結(jié)

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!

原文鏈接:https://blog.csdn.net/qq_39390545/article/details/119360733

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 啊皇上你好大要知画 | 婷婷色在线观看 | 非洲特级特黄aa大片 | 亚洲视频在线免费观看 | 亚洲www视频 | 青青热久免费精品视频网站 | 日本成日本片人免费 | 成人免费毛片一区二区三区 | 热99精品在线 | 99热久久这里只有精品6国产网 | 亚洲精品6久久久久中文字幕 | 亚洲区精品 | 欧美老妪| 日本色网址 | 亚洲AV无码偷拍在线观看 | naruto堂同人本子汉化gg | 日韩视频第二页 | 女女宿舍互慰h文小说 | 午夜成私人影院在线观看 | 亚洲天堂一区二区在线观看 | 亚州成人 | 加勒比久草 | 亚洲精品6久久久久中文字幕 | 亚洲欧美综合在线观看 | 国产一区二区三区在线看 | 男人好大好硬好爽免费视频 | 日本中文字幕永久在线 | 激情综| 网www天堂资源在线 王淑兰与铁柱全文免费阅读 | 精品国产中文字幕在线视频 | 皇上好大好硬好涨好深好爽 | 亚洲人影院 | 国产精品吹潮香蕉在线观看 | 欧美a级v片在线观看一区 | 日韩伦理在线免费观看 | 精品国产人妻国语 | 吃大胸寡妇的奶 | 好吊色视频988gao在线观看 | 免费高清资源黄网站在线观看 | 日韩香蕉视频 | 国产精品久久久久久久久ktv |