中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java項目中如何實現動態與靜態編譯

發布時間:2020-11-12 16:34:01 來源:億速云 閱讀:187 作者:Leah 欄目:編程語言

本篇文章為大家展示了Java項目中如何實現動態與靜態編譯,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Java中的動態和靜態編譯實例詳解

首先,我們來說說動態和靜態編譯的問題。

   Q: java和javascript有什么區別?

   總結了一下:有以下幾點吧:

      1.首先從運行環境來說java代碼是在JVM上編譯成class文件,而javascript則直接在瀏覽器上加載運行。

      2.由第一點可看出,java代碼需要編譯,而javascript不需要編譯。

      3.從語言性質來說,java是一種高級編程語言,對變量檢查要求嚴格,javascript只是一個簡單的解釋性的腳本語言,對變量檢查及要求很弱。

      4.javascript是一種動態的語言,java則是"半動態"的。

   javascript是動態的,這無須質疑。為什么java是半動態的?請看下列代碼:

public class Color{ 
  
   public void changeColor(){ 
     System.out.println("要改變的顏色是紅色"); 
   } 
 
} 
 public class Frame{ 
 
    public static void main(String args[]){ 
      Color c=new Color(); 
      c.changeColor(); 
    } 
 
} 
 

   Frame類中通過直接new一個Color對象從而調用其方法,這是在編譯時確定對象,從而確定關系。我認為這是java語言靜態性的一個體現。而且如果編譯后的Color.class文件丟失,會報一個錯誤。

   java.lang.NoClassDefFoundError........

  如果通過以下代碼,我們則可以發現java的動態性:

public interface Color{ 
  
   public void changeColor(); 
 
} 
public class ColorImp implements Color{ 
 
     public void changeColor(){ 
       System.out.println("顏色改變為紅色"); 
     } 
} 
public class Frame{ 
 
    public static void main(String args[])throws Exception{ 
      System.out.println("請輸入您要輸入的類的名字"); 
      //輸入一個類的名字 
      java.util.Scanner sc=new java.util.Scanner(System.in);  
      String s=sc.next(); 
      //加載這個類 
      Class c=Class.forName(s); 
      //獲得這個類的實例化對象 
      Object obj=c.newInstance(); 
      //強制轉型 
      Color color=(Color)obj; 
      color.changeColor(); 
    } 
 
} 

    注意Frame類,當我們編譯它的時候,只會出現兩個class文件--Frame.class和Color.class,然后我們運行這個程序,由于沒有編譯ColorImp,會拋出一個異常-- java.lang.ClassNotFoundException。

     于是,我們打開另一個cmd進程,單獨編譯ColorImp類,再在上一個cmd對話框中輸入ColorImp,則程序會正常運行。

     這樣我們可以在不停止程序運行的情況下,動態地加載一個類。我認為這體現出了Java的動態性。通過上面的例子,我認為java語言是一種“半動態”語言。

     我們可以看出,上述例子使用了Color接口類。這里不得不提我對接口的一點小小感觸。

     在使用數據庫的時候,Java語言只是定義了一個數據庫接口,然后不同的數據庫來實現這個借口。這些包括了(以mysql數據庫為例)
    加載數據庫驅動:

Class.forName("com.mysql.jdbc.Driver"); 

 建立與數據庫的鏈接:

java.sql.Connection conn = java.sql.DriverManager.getConnection( 
          url, user, password); 

取得編譯對象和結果集對象等,這些都只是定義了接口,具體的實現則交給了數據庫開發商,只要實現了這個接口就行。這就體現了接口的擴展性和規范性。  

上述內容就是Java項目中如何實現動態與靜態編譯,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄱阳县| 灌南县| 邹城市| 嘉鱼县| 武城县| 华亭县| 潜山县| 历史| 花垣县| 平塘县| 新和县| 隆林| 栾城县| 鄂托克旗| 阳东县| 余江县| 浦城县| 泗阳县| 霍州市| 简阳市| 南召县| 荥阳市| 灵石县| 黑水县| 虎林市| 梓潼县| 桦川县| 永宁县| 武平县| 孟州市| 康乐县| 勃利县| 辉县市| 喜德县| 三河市| 江门市| 桃园县| 阜新市| 东莞市| 岳阳市| 郁南县|