国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java基礎 —— 概述

2019-11-14 23:09:57
字體:
來源:轉載
供稿:網友
java基礎 —— 概述

Java語言:

  JDK(Java Development Kit)開發工具包,提供Java的開發環境和運行環境 --> 適合于開發

  JRE(Java Runtime Environment)Java運行時環境,包含Java虛擬機(JVM) --> 適合于運行

  Java代碼在JDK下編譯,會生成.class文件,再使用JVM運行.class文件(字節碼文件)

Java基礎語法:

public class A {     public static void main(String[]args){         String a="a";         String b="b";        String ab="ab";         System.out.PRintln((a+b)==ab);   // false        System.out.println(("a"+"b")==ab);   // true         final String afinal="a";         String result=afinal+"b";         System.out.println(result==ab);   // true         String plus=a+"b";         System.out.println(plus==ab);   // false        System.out.println(plus.intern()==ab); // true    } }   
    • 分析下上面代碼執行的結果,可通過javap –verbose A來輔助理解分析。
      • (a+b)==ab
    • a+b是兩個變量相加,需要到運行時才能確定其值,到運行時后JVM會為兩者相加后產生一個新的對象,因此a+b==ab的結果為false。
      • ("a"+"b")==ab
    • "a"+”b”是常量,在編譯時JVM已經將其變為"ab"字符串了,而ab="ab"也是常量,這兩者在常量池即為同一地址,因此("a"+"b")==ab為true。
      • result==ab
    • result=afinal+"b",afinal是個final的變量, result在編譯時也已經被轉變為了"ab",和"ab"在常量池中同樣為同一地址,因此result==ab為true。
      • plus=ab
    • plus和a+b的情況是相同的,因此plus==ab為false。這里的不同點在于調用了plus.intern()方法,這個方法的作用是獲取plus指向的常量池地址,因此plus.intern()==ab為true。
      • plus.intern()==ab
    • 這里注意一點,通常的JVM垃圾回收指的是堆內存和代碼區域的回收,其他區域的回收都由JVM簡單的按生命周期來進行管理。
  • (4) 變量分配機制:若變量為基本數據類型,則會在棧中開辟相應大小的空間,用于存放該數據;若變量為引用類型數據,則會在棧內存中生成相應的引用值(地址),即對象的實際地址的編制,再在堆內存中生成該對象的相應空間和數據。
    • 如:
MyDate date;  date = new MyDate(8,8,2008)
    • 首先在棧內存中分配了一個32位的對象空間(沒有實例化,不能被使用),然后實例化了一個對象,此時生成了對象的哈希碼(地址),并將這個值賦值給date。這樣,棧內存中就有了相應的哈希碼,而堆內存中也生成了相應的空間?!?/li>
  • (5) 輸入參數的方式:
    • 1. 使用main方法的String[] args參數,可以在編譯時加入。
    • 2. main方法內定義參數常量。
    • 3. 使用JOptionalPane類彈框輸入。(界面輸入)
    • 4. 使用輸入流進行輸入。(System.in.read()方法或BufferedReader對象)。
InputStreamReader in = new InputStreamReader(System.in);BufferedReader buf = new BufferedReader(in);//String s = buf.readLine(); --> 讀一行while(!"".equals(s)){  ...;  s = buf.readLine();}
    • 5. 使用Scanner類輸入。
Scanner s = new Scanner(System.in);String str = s.nextLine();
  • (6) 形參與實參:基本數據類型使用值傳遞;若為引用類型,則是地址傳遞,即建立了同一空間的引用。
  • (7) this指針:解決了方法內部形參與成員之間命名沖突的同名隱藏問題,并可以調用內部的構造函數。
  • (8) static關鍵字:
    • 1. 類方法:
      • 1) 類方法只能訪問方法體內的局部變量、參數和靜態變量。
      • 2) 不能出現this和super,因為不存在唯一的對象。
      • 3) 若想使用非靜態方法,一定要生成局部的類對象,再對象.方法來調用。
    • 2. static初始化塊:無法人為調用,只在其所在的類被載入JVM內存時才會自動執行一次(僅執行一次)。
    • 3. 非static初始化塊:在對象創建時,構造方法執行之前會調用一次(視對象的聲明而定)。
    • 4. 靜態導入:只導入程序包中的static變量和方法。

import static 包名.類名.靜態屬性|靜態方法|*

  • (9) final關鍵字:
    • 1. 用final修飾的類時,表示最終類,即不能被繼承的類。
    • 2. 用final修飾的方法時,表示該方法不能被其所在的類的子類覆蓋。
    • 3. final修飾方法的參數時,表示該方法不希望被傳進來的參數在方法內被改變。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大港区| 温州市| 山东省| 三河市| 嘉荫县| 宁阳县| 静海县| 开平市| 天津市| 班戈县| 新竹县| 普安县| 理塘县| 龙泉市| 鄂伦春自治旗| 竹溪县| 江永县| 唐河县| 苏尼特右旗| 隆化县| 南召县| 鲜城| 威远县| 天长市| 临汾市| 玉环县| 福建省| 湘阴县| 台南县| 华池县| 邢台县| 富阳市| 阳曲县| 于田县| 大洼县| 房产| 永嘉县| 额尔古纳市| 元阳县| 原平市| 玉山县|