Java基礎(一)——2019/12/19

Java基礎(一)——2019/12/19

  • Java中如何支持正則表達式操作

Java中的String類提供了支持正則表達式操作的方法:matches()、 replaceAll()、split()等。此外,Java還提供了Pattern類和Matcher類來支持正則表達式操作。

  • 簡單描述一下正則表達式的用途

我們在處理編寫處理字符串的程序時,常常需要依據某種模式(pattern)對字符串進行一定的操作:查詢、剪切、替換等,正則表達式正是我們用來定義模式(pattern)的強大工具。絕大多數語言均支持正則表達式。

  • 比較一下Java和JavaScript
  • Java:面向對象、編譯性語言、強類型語言
  • JavaScript:基於對象和事件驅動、解釋型語言、弱類型語言
  • 編程語言的分類
分類標準 類別 特徵 優點 缺點 代表語言
程序執行方式 編譯型語言 需要通過編譯器將源代碼編譯成機器碼,
然後才能執行的語言
性能較高 修改程序時需要重新編譯,可移植性較差 C、C++
解釋型語言 源代碼不需要編譯,
在執行的時候逐行翻譯
跨平臺(前提是安裝瞭解釋器)、可以快速部署 性能較差 JavaScript、Python、PHP
混合型語言 混合型語言也叫做半編譯型語言,源代碼先被編譯成中間碼,
執行時由JIT執行中間碼
可移植性強 性能中等 Java、C#
對數據類型檢查的時間 動態類型語言 在運行時確定數據類型,
不需要類型聲明,變量的類型通常爲被賦值的值的類型
Python、JavaScript、PHP、swift
靜態類型語言 在編譯時確定數據類型,
需要聲明數據類型
C、C++、C#、Java
對數據類型的處理方式 強類型語言 當一個變量被定義成某種類型,如果不進行強制類型轉換(顯示轉換),其類型不會改變。 運行效率較高、內存利用率較高 Java、C#、Python
弱類型語言 數據類型可以被忽略,一個變量可以賦不同數據類型的值。
給一個整型變量a賦一個字符串值,那麼a就變成字符類型。
運行效率較低(存在隱式類型轉換)、
內存利用率較低(考慮通用性而多分配內存)、
對數據類型的檢測力度不夠
JavaScript、PHP
  • Attentions
  1. JIT:Just-In-Time Compiler,即時編譯器,將Java字節碼轉換成機器碼。
  2. V8引擎:V8引擎被設計用來提高瀏覽器執行JavaScript的性能,V8引擎會將js代碼轉換成機器碼(不同於中間碼),而不是依賴解釋器執行js代碼。
  3. 通常情況下解釋型語言是動態類型語言、編譯型語言是靜態類型語言。
  4. C和C++雖然能過隱式類型轉換,但也是編譯器通過調用相應的類型轉換函數完成的,C和C++是強類型語言。
  • Java中如何跳出多重嵌套循環

首先嵌套循環的深度不宜過深,超過3層就要考慮是否能夠選擇其他的方式或者對代碼進行重構。可以在循環外部設置flag,然後通過修改flag的值來控制是否跳出嵌套循環。

  • &和&&的區別

&(按位與)、&&(邏輯與),需要注意的是&不支持短路,&&支持短路。所以在大多數邏輯判斷中應該使用&&而不是&,否則程序會崩潰,當然在進行位運算時只能使用&。
比如:username != null && !username.equal("")如果寫成username != null & !username.equal("")在username爲null時就會出現空指針異常。

  • int和Integer有什麼區別

int是基本數據類型,Integer是引用數據類型,是int的包裝類(wrapper class)。Java爲每個基本數據類型都引入了對應的包裝類型,從Java5開始引入了自動裝箱/拆箱機制,使得兩者之間可以自動轉換。

  • String是否屬於基本數據類型

Java中的基本數據類型只有:byte、char、short、int、long、float、double、boolean,其他數據類型均爲引用數據類型。

  • String、StringBuilder與StringBuffer
類型 特徵 適用場景
String 字符串常量,一旦創建便不可修改。
對String類型的變量進行賦值操作時,會創建新的String對象,
並將指針指向新的String對象。
所以當創建的臨時String對象過多時,JVM的GC便會開始工作,
相應地程序的性能便會下降。
只涉及少量的字符串操作
StringBuilder 使用StringBuilder對字符串進行操作時不會產生臨時的String對象,
線程不安全。
單線程字符緩衝區的大量操作
StringBuffer 類似於StringBuilder,但是StringBuffer是線程安全的。 多線程字符緩衝區的大量操作(通過synchronized實現線程安全)
發佈了11 篇原創文章 · 獲贊 7 · 訪問量 1921
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章