面試中關于Java你所需知道的的一切

?

本篇文章會對面試中常遇到的Java技術點進行全面深入的總結,幫助我們在面試中更加得心應手,不參加面試的同學也能夠借此機會梳理一下自己的知識體系,進行查漏補缺。

1. Java中的原始數據類型都有哪些,它們的大小及對應的封裝類是什么?

(1)boolean

? ?boolean數據類型非true即false。這個數據類型表示1 bit的信息,但是它的大小并沒有精確定義。

? ?《Java虛擬機規范》中如是說:“雖然定義了boolean這種數據類型,但是只對它提供了非常有限的支持。在Java虛擬機中沒有任何供boolean值專用的字節碼指令,Java語言表達式所操作的boolean值,在編譯之后都使用Java虛擬機中的int數據類型來代替,而boolean數組將會被編碼成Java虛擬機的byte數組,每個元素boolean元素占8位”。這樣我們可以得出boolean類型單獨使用是4個字節,在數組中又是1個字節。那虛擬機為什么要用int來代替boolean呢?為什么不用byte或short,這樣不是更節省內存空間嗎?實際上,使用int的原因是,對于當下32位的CPU來說,一次進行32位的數據交換更加高效。

? ? 綜上,我們可以知道:官方文檔對boolean類型沒有給出精確的定義,《Java虛擬機規范》給出了“單獨時使用4個字節,boolean數組時1個字節”的定義,具體還要看虛擬機實現是否按照規范來,所以1個字節、4個字節都是有可能的。這其實是一種時空權衡。

? ? boolean類型的封裝類是Boolean。

(2)byte——1 byte——Byte

(3)short——2 bytes——Short

(4)int——4 bytes——Integer

(5)long——8 bytes——Long

(6)float——4 bytes——Float

(7)double——8 bytes——Double

(8)char——2 bytes——Character

?

2. 談一談”==“與”equals()"的區別。

? ? 《Think in Java》中說:“關系操作符生成的是一個boolean結果,它們計算的是操作數的值之間的關系”。

? ? "=="判斷的是兩個對象的內存地址是否一樣,適用于原始數據類型和枚舉類型(它們的變量存儲的是值本身,而引用類型變量存儲的是引用);equals是Object類的方法,Object對它的實現是比較內存地址,我們可以重寫這個方法來自定義“相等”這個概念。比如類庫中的String、Date等類就對這個方法進行了重寫。

? ? 綜上,對于枚舉類型和原始數據類型的相等性比較,應該使用"==";對于引用類型的相等性比較,應該使用equals方法。

?

3. Java中的四種引用及其應用場景是什么?

  • 強引用: 通常我們使用new操作符創建一個對象時所返回的引用即為強引用

  • 軟引用: 若一個對象只能通過軟引用到達,那么這個對象在內存不足時會被回收,可用于圖片緩存中,內存不足時系統會自動回收不再使用的Bitmap

  • 弱引用: 若一個對象只能通過弱引用到達,那么它就會被回收(即使內存充足),同樣可用于圖片緩存中,這時候只要Bitmap不再使用就會被回收

  • 虛引用: 虛引用是Java中最“弱”的引用,通過它甚至無法獲取被引用的對象,它存在的唯一作用就是當它指向的對象回收時,它本身會被加入到引用隊列中,這樣我們可以知道它指向的對象何時被銷毀。

?

4. object中定義了哪些方法?

? ? clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()

?

5. hashCode的作用是什么?

? ? 請參見散列表的基本原理與實現

?

6. ArrayList, LinkedList, Vector的區別是什么?

  • ArrayList: 內部采用數組存儲元素,支持高效隨機訪問,支持動態調整大小

  • LinkedList: 內部采用鏈表來存儲元素,支持快速插入/刪除元素,但不支持高效地隨機訪問

  • Vector: 可以看作線程安全版的ArrayList

    ?

7.?String, StringBuilder, StringBuffer的區別是什么?

  • String: 不可變的字符序列,若要向其中添加新字符需要創建一個新的String對象

  • StringBuilder: 可變字符序列,支持向其中添加新字符(無需創建新對象)

  • StringBuffer: 可以看作線程安全版的StringBuilder

?

8. Map, Set, List, Queue、Stack的特點及用法。

  • Map<K, V>: ?Java中存儲鍵值對的數據類型都實現了這個接口,表示“映射表”。支持的兩個核心操作是get(Object key)以及put(K key, V value),分別用來獲取鍵對應的值以及向映射表中插入鍵值對。

  • Set<E>: 實現了這個接口的集合類型中不允許存在重復的元素,代表數學意義上的“集合”。它所支持的核心操作有add(E e), remove(Object o), contains(Object o),分別用于添加元素,刪除元素以及判斷給定元素是否存在于集中。

  • List<E>: Java中集合框架中的列表類型都實現了這個接口,表示一種有序序列。支持get(int index), add(E e)等操作。

  • Queue<E>: Java集合框架中的隊列接口,代表了“先進先出”隊列。支持add(E element), remove()等操作。

  • Stack<E>:?Java集合框架中表示堆棧的數據類型,堆棧是一種“后進先出”的數據結構。支持push(E item), pop()等操作。

? ? 更詳細的說明請參考官方文檔,對相關數據結構不太熟悉的同學可以參考《算法導論》或其他相關書籍。

?

9. HashMap和HashTable的區別

  • HashTable是線程安全的,而HashMap不是

  • HashMap中允許存在null鍵和null值,而HashTable中不允許

? ? 更加詳細的分析請參考深入解析HashMap、HashTable

?

10. HashMap的實現原理

? ? 簡單的說,HashMap的底層實現是“基于拉鏈法的散列表”。詳細分析請參考深入解析HashMap、HashTable

?

11. ConcurrentHashMap的實現原理

? ? ConcurrentHashMap是支持并發讀寫的HashMap,它的特點是讀取數據時無需加鎖,寫數據時可以保證加鎖粒度盡可能的小。由于其內部采用“分段存儲”,只需對要進行寫操作的數據所在的“段”進行加鎖。關于ConcurrentHashMap底層實現的詳細分析請參考Java并發編程:并發容器之ConcurrentHashMap

?

12. TreeMap, LinkedHashMap, HashMap的區別是什么?

  • HashMap的底層實現是散列表,因此它內部存儲的元素是無序的;

  • TreeMap的底層實現是紅黑樹,所以它內部的元素的有序的。排序的依據是自然序或者是創建TreeMap時所提供的比較器(Comparator)對象。

  • LinkedHashMap能夠記住插入元素的順序。

更加詳細的說明請參考HashMap,LinkedMap,TreeMap的區別

?

13. Collection與Collections的區別是什么?

? ? Collection<E>是Java集合框架中的基本接口;Collections是Java集合框架提供的一個工具類,其中包含了大量用于操作或返回集合的靜態方法。

? ? 對Java集合框架還不太熟悉的小伙伴請參考Java核心技術點之集合框架

?

14. 對于“try-catch-finally”,若try語句塊中包含“return”語句,finally語句塊會執行嗎?

? ? 答案是會執行。只有兩種情況finally塊中的語句不會被執行:

  • 調用了System.exit()方法;

  • JVM“崩潰”了。

?

15. Java中的異常層次結構

? ? Java中的異常層次結構如下圖所示:

? ? 我們可以看到Throwable類是異常層級中的基類。Error類表示內部錯誤,這類錯誤使我們無法控制的;Exception表示異常,RuntimeException及其子類屬于未檢查異常,這類異常包括ArrayIndexOutOfBoundsException、NullPointerException等,我們應該通過條件判斷等方式語句避免未檢查異常的發生。IOException及其子類屬于已檢查異常,編譯器會檢查我們是否為所有可能拋出的已檢查異常提供了異常處理器,若沒有則會報錯。對于未檢查異常,我們無需捕獲(當然Java也允許我們捕獲,但我們應該做的事避免未檢查異常的發生)。

?

16. Java面向對象的三個特征與含義

? ? ?三大特征:封裝、繼承、多態。詳細介紹請戳Java面向對象三大特性

?

17. Override, Overload的含義與區別

  • Override表示“重寫”,是子類對父類中同一方法的重新定義

  • Overload表示“重載”,也就是定義一個與已定義方法名稱相同但簽名不同的新方法

?

18. 接口與抽象類的區別

? ? 接口是一種約定,實現接口的類要遵循這個約定;抽象類本質上是一個類,使用抽象類的代價要比接口大。接口與抽象類的對比如下:

  • 抽象類中可以包含屬性,方法(包含抽象方法與有著具體實現的方法),常量;接口只能包含常量和方法聲明。

  • 抽象類中的方法和成員變量可以定義可見性(比如public、private等);而接口中的方法只能為public(缺省為public)。

  • 一個子類只能有一個父類(具體類或抽象類);而一個接口可以繼承一個多個接口,一個類也可以實現多個接口。

  • 子類中實現父類中的抽象方法時,可見性可以大于等于父類中的;而接口實現類中的接口 方法的可見性只能與接口中相同(public)。

    ?

19. 靜態內部類與非靜態內部類的區別

? ? 靜態內部類不會持有外圍類的引用,而非靜態內部類會隱式持有外圍類的一個引用。

? ? 欲進一步了解內部類,請戳Java核心技術點之內部類

??

20. Java中多態的實現原理

? ?所謂多態,指的就是父類引用指向子類對象,調用方法時會調用子類的實現而不是父類的實現。多態的實現的關鍵在于“動態綁定”。詳細介紹請戳Java動態綁定的內部實現機制

?

21. 簡述Java中創建新線程的兩種方法

  • 繼承Thread類(假設子類為MyThread),并重寫run()方法,然后new一個MyThread對象并對其調用start()即可啟動新線程。

  • 實現Runnable接口(假設實現類為MyRunnable),而后將MyRunnable對象作為參數傳入Thread構造器,在得到的Thread對象上調用start()方法即可。

    ?

22. 簡述Java中進行線程同步的方法

  • volatile: Java Memory Model保證了對同一個volatile變量的寫happens before對它的讀;

  • synchronized: 可以來對一個代碼塊或是對一個方法上鎖,被“鎖住”的地方稱為臨界區,進入臨界區的線程會獲取對象的monitor,這樣其他嘗試進入臨界區的線程會因無法獲取monitor而被阻塞。由于等待另一個線程釋放monitor而被阻塞的線程無法被中斷。

  • ReentrantLock: ?嘗試獲取鎖的線程可以被中斷并可以設置超時參數。

? ? 更加詳細的介紹請戳Java核心技術點之多線程

?

23. 簡述Java中具有哪幾種粒度的鎖

? ? Java中可以對類、對象、方法或是代碼塊上鎖。更加詳細的介紹請戳Java核心技術點之多線程

?

24. 給出“生產者-消費者”問題的一種解決方案

? ? 使用阻塞隊列:

public class BlockingQueueTest {private int size = 20;private ArrayBlockingQueue<Integer> blockingQueue = new ArrayBlockingQueue<>(size);public static void main(String[] args)  {BlockingQueueTest test = new BlockingQueueTest();Producer producer = test.new Producer();Consumer consumer = test.new Consumer();producer.start();consumer.start();}class Consumer extends Thread{@Overridepublic void run() {while(true){try {//從阻塞隊列中取出一個元素
                    queue.take();System.out.println("隊列剩余" + queue.size() + "個元素");} catch (InterruptedException e) {}}}}class Producer extends Thread{         @Overridepublic void run() {while (true) {try {//向阻塞隊列中插入一個元素queue.put(1);System.out.println("隊列剩余空間:" + (size - queue.size()));} catch (InterruptedException e) {}}}}
}

?

25. ThreadLocal的設計理念與作用

? ? ThreadLocal的作用是提供線程內的局部變量,在多線程環境下訪問時能保證各個線程內的ThreadLocal變量各自獨立。也就是說,每個線程的ThreadLocal變量是自己專用的,其他線程是訪問不到的。ThreadLocal最常用于以下這個場景:多線程環境下存在對非線程安全對象的并發訪問,而且該對象不需要在線程間共享,但是我們不想加鎖,這時候可以使用ThreadLocal來使得每個線程都持有一個該對象的副本。

? ? 關于ThreadLocal的實現原理分析請戳深入剖析ThreadLocal

26. concurrent包的整體架構

?

?

27. ArrayBlockingQueue, CountDownLatch類的作用

  • CountDownLatch: ?允許線程集等待直到計數器為0。適用場景: 當一個或多個線程需要等待指定數目的事件發生后再繼續執行。

  • ArrayBlockingQueue: ?一個基于數組實現的阻塞隊列,它在構造時需要指定容量。當試圖向滿隊列中添加元素或者從空隊列中移除元素時,當前線程會被阻塞。通過阻塞隊列,我們可以按以下模式來工作:工作者線程可以周期性的將中間結果放入阻塞隊列中,其它線程可以取出中間結果并進行進一步操作。若工作者線程的執行比較慢(還沒來得及向隊列中插入元素),其他從隊列中取元素的線程會等待它(試圖從空隊列中取元素從而阻塞);若工作者線程執行較快(試圖向滿隊列中插入元素),則它會等待其它線程取出元素再繼續執行。

    ?

28. wait(),sleep() 的區別

  • wait(): ?Object類中定義的實例方法。在指定對象上調用wait方法會讓當前線程進入等待狀態(前提是當前線程持有該對象的monitor),此時當前線程會釋放相應對象的monitor,這樣一來其它線程便有機會獲取這個對象的monitor了。當其它線程獲取了這個對象的monitor并進行了所需操作時,便可以調用notify方法喚醒之前進入等待狀態的線程。

  • sleep(): ?Thread類中的靜態方法,作用是讓當前線程進入休眠狀態,以便讓其他線程有機會執行。進入休眠狀態的線程不會釋放它所持有的鎖。

?

29. 線程池的用法與優勢

  • 優勢: ?實現對線程的復用,避免了反復創建及銷毀線程的開銷;使用線程池統一管理線程可以減少并發線程的數目,而線程數過多往往會在線程上下文切換上以及線程同步上浪費過多時間。

  • 用法: ?我們可以調用ThreadPoolExecutor的某個構造方法來自己創建一個線程池。但通常情況下我們可以使用Executors類提供給我們的靜態工廠方法來更方便的創建一個線程池對象。創建了線程池對象后,我們就可以調用submit方法提交任務到線程池中去執行了;線程池使用完畢后我們要記得調用shutdown方法來關閉它。

? ?關于線程池的詳細介紹以及實現原理分析請戳深入理解Java之線程池

?

30. for-each與常規for循環的效率對比

? ?關于這個問題我們直接看《Effective Java》給我們做的解答:

for-each能夠讓代碼更加清晰,并且減少了出錯的機會。下面的慣用代碼適用于集合與數組類型:

?

for (Element e : elements) {doSomething(e);
}

使用for-each循環與常規的for循環相比,并不存在性能損失,即使對數組進行迭代也是如此。實際上,在有些場合下它還能帶來微小的性能提升,因為它只計算一次數組索引的上限。

?

31. 簡述Java IO與NIO的區別

  • Java IO是面向流的,這意味著我們需要每次從流中讀取一個或多個字節,直到讀取完所有字節;NIO是面向緩沖的,也就是說會把數據讀取到一個緩沖區中,然后對緩沖區中的數據進行相應處理。

  • Java IO是阻塞IO,而NIO是非阻塞IO。

  • Java NIO中存在一個稱為選擇器(selector)的東西,它允許你把多個通道(channel)注冊到一個選擇器上,然后使用一個線程來監視這些通道:若這些通道里有某個準備好可以開始進行讀或寫操作了,則開始對相應的通道進行讀寫。而在等待某通道變為可讀/寫期間,請求對通道進行讀寫操作的線程可以去干別的事情。

? ? 更進一步的說明請戳Java NIO與IO

?

32. 反射的作用與原理

? ? 反射的作用概括地說是運行時獲取類的各種定義信息,比如定義了哪些屬性與方法。原理是通過類的class對象來獲取它的各種信息。

? ? 詳細介紹請參見Java核心技術點之反射

?

33. Java中的泛型機制

? ? 關于泛型機制的詳細介紹請直接戳Java核心技術點之泛型

?

34. Java 7與Java 8的新特性

? ??這里有兩篇總結的非常好的:Java 7的新特性? ??Java 8的新特性

?

35. 常見設計模式

? ?所謂“設計模式”,不過是面向對象編程中一些常用的軟件設計手法,并且經過實踐的檢驗,這些設計手法在各自的場景下能解決一些需求,因此它們就成為了如今廣為流傳的”設計模式“。也就是說,正式因為在某些場景下產生了一些棘手的問題,才催生了相應的設計模式。明確了這一點,我們在學習某種設計模式時要充分理解它產生的背景以及它所解決的主要矛盾是什么。

? ?常用的設計模式可以分為以下三大類:

  • 創建型模式: ?包括工廠模式(又可進一步分為簡單工廠模式、工廠方法模式、抽象工廠模式)、建造者模式、單例模式。

  • 結構型模式: ?包括適配器模式、橋接模式、裝飾模式、外觀模式、享元模式、代理模式。

  • 行為型模式: ?包括命令模式、中介者模式、觀察者模式、狀態模式、策略模式。

? ? 關于每個模式具體的介紹請參考圖說設計模式

?

36. JNI的基本用法

? ? 關于JNI,這里有篇好文:Android中的JNI

?

37. 動態代理的定義、應用場景及原理

? ??關于動態代理,請直接參見Java核心技術點之動態代理

?

38. 注解的基本概念與使用

  • 注解可以看作是“增強版的注釋”,它可以向編譯器、虛擬機說明一些事情。

  • 注解是描述Java代碼的代碼,它能夠被編譯器解析,注解處理工具在運行時也能夠解析注解。注解本身是“被動”的信息,只有主動解析它才有意義。

  • 除了向編譯器/虛擬機傳遞信息,我們也可以使用注解來生成一些“模板化”的代碼。

? ? 關于注解更進一步的分析請參考Java核心技術點之注解

?

? ? 這些就夠了嗎?當然不夠。上面列出了面試中關于Java的常見問題,同時大多也是Java技術體系的核心技術點,通過這些問題而引發出的一系列問題正是為我們指出了完善自身知識體系的一條道路,我們要做的是順著這條道路堅持走下去:)

?

?
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458391.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458391.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458391.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用BBRSACryptor實現iOS端的RSA加解密

背景 RSA這種非對稱加密被廣泛的運用于網絡數據的傳輸&#xff0c;但其在iOS上很難直接實現&#xff0c;BBRSACryptor框架通過移植openssl實現了iOS端的RSA&#xff0c;本文將介紹如何使用BBRSACryptor生成證書&#xff0c;加載公鑰&#xff0c;以及后端如何用php讀取證書&…

UIView轉UIimage

/** 將 UIView 轉換成 UIImage param view 將要轉換的View return 新生成的 UIImage 對象 */ - (UIImage *)yj_convertCreateImageWithUIView:(UIView *)view{ UIGraphicsBeginImageContext(view.bounds.size); CGContextRef ctx UIGraphicsGetCurrentContext…

Linq 合并數據并相加

有幾條數據是這樣的 Person 123 456 789 Person 321 654 987 想合并成 Person 444 1110 1776 直接一條linq搞定 var newQuery from p in query group p by p.Name into gselect new { Name g.Name, Value g.Sum(x > x.Value) }; 轉…

python 各種模塊學習

from&#xff1a;https://blog.csdn.net/weiwangchao_/article/details/70570508轉載&#xff1a;。。。。Python的模塊大全&#xff0c;很全&#xff0c;有詳細介紹&#xff01;另外附Python兩個教程1. Python詳細教程&#xff08;廖雪峰的官方網站&#xff0c;語言簡潔&#…

Linux(Fedora21)安裝google chrome瀏覽器

2019獨角獸企業重金招聘Python工程師標準>>> Linux(Fedora21)安裝Google Chrome瀏覽器 qianghaoaho(孤狼) 1.添加google chrome的源&#xff1a; cd /etc/yum.repos.d/ vim chrome.repo添加如下內容&#xff1a; [google64] …

啟動頁更換圖片后,加載不出來

這個問題&#xff0c;重啟一下手機就可以了&#xff0c;我的就是這么解決的。

R-大數據分析挖掘(5-R基礎回顧)

&#xff08;一&#xff09;R函數 R是一種解析型語言&#xff0c;輸入后可直接獲取結果 函數&#xff08;輸入參數&#xff0c;參數&#xff09; R的函數分為“高級”和“低級函數”     ??高級函數可調用低級函數     ??高級函數稱為泛型函數 ??函數名 <-‐…

jquery點擊label觸發2次的問題

今天寫問卷的時候遇到個label點擊的時候&#xff0c;監聽的click事件被執行兩次&#xff1b;產生這個的原因么。。。事件冒泡 <div class"questionBox checkBox"><div class"title"> 2.你如何理解創新意識的重要性?</div><div class…

git本地項目管理

Git 基本工作流程 | git倉庫 | 暫存區 | 工作目錄 | | ---------------- | ------------------ | ------------------- | | 用于存放提 交記錄 | 臨時存放被修改文件 | 被Git管理的項目目錄 | Git 的使用 1.5.1 Git 使用前配置 在使用 git 前&#xff0c;需要告訴 git 你…

Python中self用法詳解

在介紹Python的self用法之前&#xff0c;先來介紹下Python中的類和實例…… 我們知道&#xff0c;面向對象最重要的概念就是類&#xff08;class&#xff09;和實例&#xff08;instance&#xff09;&#xff0c;類是抽象的模板&#xff0c;比如學生這個抽象的事物&#xff0c;…

siwft初學(一)

今天剛開始學習swift語言。首先須要下載xcode6 beta版本號。正式版本號然后會公布。自己學習總結一下&#xff0c;假設有誤。請大家指出。 創建project的時候。language選擇swift語言。 swift語言比起c&#xff0c;oc很的簡潔。開始真有點不適應&#xff0c;沒有main函數&#…

python簡單爬蟲(一)

學習python前糾結了下&#xff0c;到底是應該一個個知識點吃透&#xff0c;然后寫些小程序。還是應該快速掌握基礎語法&#xff0c;快速實踐。思考后認為前者這么學習速度真心不高&#xff0c;于是花2天時間看了下python3的語法&#xff0c;雖然很多都不明白&#xff0c;但是帶…

Github遠程倉庫管理

1. Github 在版本控制系統中&#xff0c;大約90%的操作都是在本地倉庫中進行的&#xff1a;暫存&#xff0c;提交&#xff0c;查看狀態或者歷史記錄等等。除此之外&#xff0c;如果僅僅只有你一個人在這個項目里工作&#xff0c;你永遠沒有機會需要設置一個遠程倉庫。 只有當…

oracle 中的trunc()函數及加一個月,一天,一小時,一分鐘,一秒鐘方法

返回處理后的數據&#xff0c;不同于round()&#xff08;對數值進行四舍五入處理&#xff09;&#xff0c;該函數不對指定小數前或后的數值部分進行舍入處理。 語法&#xff1a;trunc(number[,decimals]) 其中&#xff0c;number為待做處理的數值&#xff0c;decimals為需要保留…

【Halcon】Halcon與OpenCV介紹、比較

from:https://blog.csdn.net/taily_duan/article/details/514997691.MVTec HALCONMVTec HALCON 是世界上最全能的機器視覺軟件.世界各地的用戶從HALCON為快速開發圖像分析和機器視覺程序的靈活架構獲益匪淺.HALCON 提供了超過1100多種具備突出性能控制器的庫,如模糊分析,形態,模…

直接拿來用!最火的Android開源項目(完結篇)

直接拿來用&#xff01;最火的Android開源項目&#xff08;完結篇&#xff09; 2014-01-06 19:59 4785人閱讀 評論(1) 收藏 舉報 分類&#xff1a;android 高手進階教程&#xff08;100&#xff09; 摘要&#xff1a;截至目前&#xff0c;在GitHub“最受歡迎的開源項目”系…

ABP理論學習之Web API控制器(新增)

返回總目錄 本篇目錄 介紹AbpApiController基類 本地化審計日志授權工作單元其他介紹 ABP通過Abp.Web.ApiNuget包集成了 ASP.NET Web API控制器。你可以像以往創建Asp.Net Web API控制器那樣創建Web API控制器。依賴注入對于有規律的ApiController&#xff08;其實就是繼承自Ab…

C++類構造函數初始化列表及初始化成員變量的誤區

構造函數初始化列表以一個冒號開始&#xff0c;接著是以逗號分隔的數據成員列表&#xff0c;每個數據成員后面跟一個放在括號中的初始化式。例如&#xff1a;[cpp] view plaincopyclass CExample { public: int a; float b; //構造函數初始化列表 CExampl…

將centos7打造成桌面系統

前言 以下所有操作默認在root權限下執行&#xff0c;桌面環境是kde&#xff0c;使用gnome的也可以參考一下。我收集的以下要用到的一些安裝包&#xff0c;360網盤http://yunpan.cn/csMhBAp92vTgN 提取碼 92e2以下要用的安裝軟件語法&#xff1a;通過軟件源在線安裝&#xff1a;…

VC2010打開資源視圖時提示“指南必須指定類型”,.rc資源文件損壞(轉)

VC: 打開資源視圖時提示“指南必須指定類型 ”(Guideline……specify type) &#xff0c;.rc資源文件損壞 可能是TFS導致的使用記事本打開.rc文件&#xff0c;找到“DESIGNINFO”節&#xff0c;會看到如下的數據&#xff1a; BEGIN , 50 , 13798327 EN…