Java知識面試題複習(一)Java概述

manor的大數據奮鬥之路 2021-08-15 21:37:12 阅读数:622

本文一共[544]字,预计阅读时长:1分钟~
java java 概述

Java概述

何為編程

編程就是讓計算機為解决某個問題而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。

為了使計算機能够理解人的意圖,人類就必須要將需解决的問題的思路、方法、和手段通過計算機能够理解的形式告訴計算機,使得計算機能够根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算機之間交流的過程就是編程。

什麼是Java

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒弃了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能强大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代錶,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行複雜的編程 。

jdk1.5之後的三大版本

Java SE(J2SE,Java 2 Platform Standard Edition,標准版)
Java SE 以前稱為 J2SE。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程序。Java SE 包含了支持 Java Web 服務開發的類,並為Java EE和Java ME提供基礎。
Java EE(J2EE,Java 2 Platform Enterprise Edition,企業版)
Java EE 以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的服務器端Java 應用程序。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、組件模型、管理和通信 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web2.0應用程序。2018年2月,Eclipse 宣布正式將 JavaEE 更名為 JakartaEE
Java ME(J2ME,Java 2 Platform Micro Edition,微型版)
Java ME 以前稱為 J2ME。Java ME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內置的網絡協議以及對可以動態下載的連網和離線應用程序的豐富支持。基於 Java ME 規範的應用程序只需編寫一次,就可以用於許多設備,而且可以利用每個設備的本機功能。

JVM、JRE和JDK的關系

JVM
Java Virtual Machine是Java虛擬機,Java程序需要運行在虛擬機上,不同的平臺有自己的虛擬機,因此Java語言可以實現跨平臺。

JRE
Java Runtime Environment包括Java虛擬機和Java程序所需的核心類庫等。核心類庫主要是java.lang包:包含了運行Java程序必不可少的系統類,如基本數據類型、基本數學函數、字符串處理、線程、异常處理類等,系統缺省加載這個包

如果想要運行一個開發好的Java程序,計算機中只需要安裝JRE即可。

JDK
Java Development Kit是提供給Java開發人員使用的,其中包含了Java的開發工具,也包括了JRE。所以安裝了JDK,就無需再單獨安裝JRE了。其中的開發工具:編譯工具(javac.exe),打包工具(jar.exe)等

JVM&JRE&JDK關系圖
在這裏插入圖片描述

什麼是跨平臺性?原理是什麼

所謂跨平臺性,是指java語言編寫的程序,一次編譯後,可以在多個系統平臺上運行。

實現原理:Java程序是通過java虛擬機在系統平臺上運行的,只要該系統可以安裝相應的java虛擬機,該系統就可以運行java程序。

Java語言有哪些特點

簡單易學(Java語言的語法與C語言和C++語言很接近)
面向對象(封裝,繼承,多態)
平臺無關性(Java虛擬機實現平臺無關性)
支持網絡編程並且很方便(Java語言誕生本身就是為簡化網絡編程設計的)
支持多線程(多線程機制使應用程序在同一時間並行執行多項任)
健壯性(Java語言的强類型機制、异常處理、垃圾的自動收集等)
安全性

什麼是字節碼?采用字節碼的最大好處是什麼

字節碼:Java源代碼經過虛擬機編譯器編譯後產生的文件(即擴展為.class的文件),它不面向任何特定的處理器,只面向虛擬機。

采用字節碼的好處:

Java語言通過字節碼的方式,在一定程度上解决了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。所以Java程序運行時比較高效,而且,由於字節碼並不專對一種特定的機器,因此,Java程序無須重新編譯便可在多種不同的計算機上運行。

先看下java中的編譯器和解釋器:

Java中引入了虛擬機的概念,即在機器和編譯程序之間加入了一層抽象的虛擬機器。這臺虛擬的機器在任何平臺上都提供給編譯程序一個的共同的接口。編譯程序只需要面向虛擬機,生成虛擬機能够理解的代碼,然後由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機理解的代碼叫做字節碼(即擴展為.class的文件),它不面向任何特定的處理器,只面向虛擬機。每一種平臺的解釋器是不同的,但是實現的虛擬機是相同的。Java源程序經過編譯器編譯後變成字節碼,字節碼由虛擬機解釋執行,虛擬機將每一條要執行的字節碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行,這就是上面提到的Java的特點的編譯與解釋並存的解釋。

Java源代碼---->編譯器---->jvm可執行的Java字節碼(即虛擬指令)---->jvm---->jvm中解釋器----->機器可執行的二進制機器碼---->程序運行。

什麼是Java程序的主類?應用程序和小程序的主類有何不同?

一個程序中可以有多個類,但只能有一個類是主類。在Java應用程序中,這個主類是指包含main()方法的類。而在Java小程序中,這個主類是一個繼承自系統類JApplet或Applet的子類。應用程序的主類不一定要求是public類,但小程序的主類要求必須是public類。主類是Java程序執行的入口點。

Java應用程序與小程序之間有那些差別?

簡單說應用程序是從主線程啟動(也就是main()方法)。applet小程序沒有main方法,主要是嵌在瀏覽器頁面上運行(調用init()線程或者run()來啟動),嵌入瀏覽器這點跟flash的小遊戲類似。

Java和C++的區別

都是面向對象的語言,都支持封裝、繼承和多態

Java不提供指針來直接訪問內存,程序內存更加安全
Java的類是單繼承的,C++支持多重繼承;
雖然Java的類不可以多繼承,但是接口可以多繼承。
Java有自動內存管理機制,不需要程序員手動釋放無用內存

Oracle JDK 和 OpenJDK 的對比

Oracle JDK版本將每三年發布一次,而OpenJDK版本每三個月發布一次;

OpenJDK 是一個參考模型並且是完全開源的,而Oracle JDK是OpenJDK的一個實現,並不是完全開源的;

Oracle JDK 比 OpenJDK 更穩定。OpenJDK和Oracle JDK的代碼幾乎相同,但Oracle JDK有更多的類和一些錯誤修複。因此,如果您想開發企業/商業軟件,我建議您選擇Oracle JDK,因為它經過了徹底的測試和穩定。某些情况下,有些人提到在使用OpenJDK 可能會遇到了許多應用程序崩潰的問題,但是,只需切換到Oracle JDK就可以解决問題;

在響應性和JVM性能方面,Oracle JDK與OpenJDK相比提供了更好的性能;

Oracle JDK不會為即將發布的版本提供長期支持,用戶每次都必須通過更新到最新版本獲得支持來獲取最新版本;

Oracle JDK根據二進制代碼許可協議獲得許可,而OpenJDK根據GPL v2許可獲得許可。

原文鏈接:https://blog.csdn.net/ThinkWon/article/details/104390612

版权声明:本文为[manor的大數據奮鬥之路]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815213646830I.html