日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

P1-JAVA

發布時間:2025/7/14 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P1-JAVA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Java的跨平臺原理:

 ? ?Java通過不同的系統、不同的版本、不同位數的java虛擬機(JVM)來屏蔽不同的系統指令集差異而對外提供統一的接口(Java API),對于我們java開發而言,只需要按照接口開發即可;如果我們系統需要部署到不同的環境時,只需要在系統上面安裝對應版本的虛擬機即可!

2. 搭建一個java的開發環境:

  2.1適用于我們開發環境的JDK(配置JAVA_HOME環境變量)(JDK包括:JRE+java工具[編譯器javac.exe、執行器java.exe]+java基礎類庫

  2.2對應開發環境的eclipse

  2.3(web應用)web服務器(Tomcat服務器)

  2.4版本控制器(SVN + Git)

3. Java的8種基本數據類型+對應的包裝類型:

  為什么要使用包裝類型?

  1.因為java是一門面向對象的語言,而基本數據類型不具備面向對象的特性);

  2.緩存值:對象緩存(Integer i = 1; Integer z = 1; // i==z true);

  

  

  

  

4. 自動裝箱+自動拆箱(JDK1.5引入的特性)

  裝箱:把基本的數據類型轉換成對應的包裝類型

  拆箱:把包裝類型轉換成對應的基本數據類型

package com.yikuan.test;public class Test1 {public static void main(String[] args) {/*** 自動裝箱* 在編譯時實際上調用的是Integer的valueOf方法(Integer i = Integer.valueOf(1);)*/Integer i = 1;/*** 自動拆箱* 在編譯時實際上調用的是Integer的intValue方法((int j = i.intValue();))*/int j = i;System.out.println(i); //1System.out.println(j); //1 } }

4. 面向對象:

  封裝:把對象的屬性封裝成私有,對外提供set、get方法;

  抽象:把現實生活中的對象抽象為類;

  繼承:遺產的繼承;

  多態:所有子類型對象,都可以被當做一致的父類型來處理(向上轉型、向下轉型)

5. “==” 和?equals的區別:

  ==:是用來判斷兩個變量的值是否相等,變量可以分為基本數據類型和引用類型;

    如果是基本數據類型的變量就直接比較值,而引用類型需要比較對應的內存地址;

  equals:用來比較兩個對象長的是否一樣,判斷兩個對象的某些特征是否一樣;

    對象一般做比較時,實際上就是調用對象的equals方法進行比較;

6. 解釋String和StringBuilder、StringBuffer的區別:

  在java中,提供了3個類,String、StringBuilder、StringBuffer來表示和操作字符串,字符串就是多個字符的集合;

  String:是內容不可變的字符串;?String a = new String("aaa");

       因為String底層使用了一個不可變的字符數組(private final char value[];);

  StringBuilder和StringBuffer是內容可以改變的字符串(可以使用append方法進行追加內容);

       StringBuilder和StringBuffer底層沒有使用final修飾;?(?char[] value;

  經典案例就是:拼接字符串(不能使用String進行拼接,要使用StringBuilder或者StringBuffer);

StringBuilder sb = new StringBuilder(); sb.append("a").append("b");String c = "a"+"b"; //創建了很多的中間對象

  StringBuilder:線程不安全,效率較高;

?

  StringBuffer:線程安全,效率較低;

?7. Java中的集合有哪些:

  7.1)java中的集合分為值(value)和 key-value 兩種格式;

  7.2)存儲值的又分為List 和 Set,存儲key-value的為Map;

  7.3)List 和 Set的區別:

      List是有序的,可以重復的;(常用的有ArrayList 和 LinkedList)

      Set是無序的,不可以重復的;

      重復與否:是根據equals 和 hashCode來判斷的,也就是說如果一個對象要存儲在Set里,必須重寫equals?和 hashCode方法;

8. ArrayList 和 LinkedList的區別和使用場景:

  8.1)ArrayList 底層使用的是數組;LinkedList底層使用的是鏈表;

    數組的特點:因為具有索引,所以查詢特定元素比較快;而插入、刪除比較慢(因為數組在內存中是一塊連續的內存,在插入和刪除時需要移動內存);

    鏈表的特點:鏈表不要求內存是連續的,在當前元素中存放下一個或上一個元素的地址,查詢時需要從頭部開始,一個一個的開始找索引,所以查詢效率低

          而插入時不需要移動內存,只需改變引用指向即可,所以插入或者刪除的效率高

    ArrayList 使用在查詢比較多,插入和刪除比較少的情況;

    LinkedList使用在查詢比較少,插入和刪除比較多的情況;

9. 解釋HashMap和HashTable的區別:

  9.1 HashMap和HashTable他們都可以用來存儲key-value的數據,但是他們也有區別;

  9.2 HashMap是可以把null作為key或者value的,而HashTable是不可以的;

  9.3 HashMap是線程不安全的,效率較高,而HashTable是線程安全的,效率較低;

  問題:即想線程安全,又想效率高?怎么解決?

    ConcurrentHashMap(jdk1.5后引入的):通過把整個Map分為N個Segment(類似HashTable),可以提供相同的線程安全,但是效率提升N倍,默認提升16倍;

?

10. 實現一個拷貝文件的工具類使用字節流還是字節流?

  10.1我們拷貝的文件不確定時,只包含字符流,有可能有字節流(拷貝圖片、聲音、圖像等);為了考慮到通用性,要使用字節流;

11. 談一下線程的幾種實現方式?

  11.1繼承Thread類實現;

  11.2通過實現Runable接口實現;

  優缺點:繼承擴展性不強,java中只支持單繼承,如果一個類繼承Thread就不能繼承其他的類了;

  11.3怎么啟動?(啟動線程使用start,而啟動了以后執行的是run方法)

package com.yikuan.test;public class MyThread{public static void main(String[] args) {Thread thread = new Thread(new TestThread());
     thread.setName("aaa");thread.start();Thread th
= new Thread(new TestThread2());
     thread.setName("bbb");th.start();} }
class TestThread extends Thread{@Overridepublic void run() {System.out.println("Thread-Demo");} }class TestThread2 implements Runnable{@Overridepublic void run() {System.out.println("實現Runable接口");} }

  11.4怎么區分線程?在一個系統中有很多線程,每個線程都會打印日志,我想區分是哪個線程打印的?

  設置一個線程名(“線程名稱”);這是一種規范,在創建線程完成后都需要設置名稱;

  11.5線程并發庫?

  簡單了解過;JDK1.5增加的,這一引進給java線程的管理和使用提供了強大的便利性;

  java.util.concurrent包中提供了對線程的優化、管理等各項操作,這個包提供了線程的運行,線程池的創建,線程生命周期的控制;

  java通過Executors提供了四個靜態方法創建線程池; 

    可以緩存的線程池:newCacheThreadPool;

    創建一個定長的線程池,可控制線程最大并發數,超出的線程會在隊列中等待;newFixedThreadPool;

    創建一個定長的線程池,支持定時及周期性任務執行,newScheduledThreadPool;

    創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO、LIFO、優先級)執行,newSingleThreadExecutor;

  線程池的作用:(連接池也是一樣!)

    1.限定線程的個數,不會導致由于線程過多而系統運行緩慢或崩潰;

    2.線程池不需要每次都去創建或銷毀,節約了資源,響應時間更快;

12. 講一下什么是設計模式?常用的設計模式有哪些?

  12.1設計模式就是經過前人無數次的實踐總結出的,在設計過程中可以反復使用的,可以解決特定問題的設計方法;

  12.2常用的設計模式:

    單例設計模式:

    三部曲:1.構造方法私有化,讓除了自己類能創建外,其他地方都不能創建;

        2.在自己的類中創建一個單實例;

        3.提供一個方法獲取該實例對象;

      飽漢模式:是一出來就創建單實例;

      饑漢模式:需要的時候才創建;創建時需要進行方法同步;

    工廠設計模式:

      Spring IOC(我們專門提供一個工廠,來創建某一個對象的實例,也就是說對象的創建交給一個工廠去創建)

    代理設計模式

      Spring AOP(動態代理)

    包裝設計模式

  單例Demo:

package com.yikuan.test; /*** 單例模式之---經典飽漢模式* @author Administrator**/ public class PersonFactory {//構造方法私有化private PersonFactory(){}//提供一個實例 private static PersonFactory instance = new PersonFactory();//提供方法獲取public static PersonFactory getInstance(){return instance;}public static void main(String[] args) {//獲取實例就可以調用對應的方法 PersonFactory.instance.toString();} } package com.yikuan.test; /*** 單例模式之---經典饑漢模式* @author Administrator**/ public class PersonFactorys {//構造方法私有化private PersonFactorys() {}//提供一個實例private static PersonFactorys instance = null;//提供方法獲取public synchronized static PersonFactorys getInstance(){if(instance == null){instance = new PersonFactorys();}return instance;}public static void main(String[] args) {//獲取實例就可以調用對應的方法 PersonFactorys.instance.toString();} }

?

轉載于:https://www.cnblogs.com/yikuan-919/p/9902921.html

總結

以上是生活随笔為你收集整理的P1-JAVA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。