java自學之路-day10

來源:互聯網
上載者:User

標籤:屬性   bcd   har   cte   scan   main方法   util   []   this   

JAVA10Eclipse快速鍵補充

l  選中類Ctrl T 繼承樹

l  Ctrl 或者f3 查看源碼 多態會跳轉到調用父類中

l  Java中lang包中的所有類 不需要導包 直接用  例如 System String

l  Ecplise 中的Jre System Library是預設的eclipse依賴jre的類庫 在該位置可以尋找到平常使用的String 類 Random類 Math類

 

l  Jdk 包括 jre和開發工具,jre包括jvm 和運行時所需要的核心類庫

l  運行 helloworld 運行了本類的同時還運行了System類等核心類庫

 

 

rt裝了平時用到的核心類的.class檔案

java中的文檔注釋和製作
  1. 為了讓使用者能夠明白程式的意思
  2. 文檔注釋
  3. /** 斷行符號鍵 類的文檔注釋

 

作者

類的功能

@標記作者 版本

  1. 方法的文檔注釋

/** 斷行符號

 

功能

參數

傳回值

  1. 注釋在源碼中 class檔案沒有注釋 需要使用工具把注釋變為說明書
  2. Javadoc.exe
  3. Eclipse中的用法

Export—java—Javadoc—選中要需要打說明書的包—finsh

 

找到index 點擊

 

注釋必須寫在自動產生的下邊或者上面

產生jar包
  1. 怎麼用一個類或多個類
  2. 打成 jar包
  3. Jar.exe
  4. Export—java—JAR File –選中需要打的包—finish

 

  1. 裡面只有.class檔案
  2. 之前都是直接在path中改 不好操作 容易改錯
  3. 建立系統變數 JAVA_HOME
  4. 路徑為 jdk的目錄
  5. Path中添加%JAVA_HOME%\bin;
JAVA_HOME配置

%%表示引用

匯入jar包

l  命令列匯入

l  設定classpath 告知jvm去哪個路徑下找可以啟動並執行class

l  set classpath

 

l  eclipse怎麼匯入jar包

new—floder—lib—拷貝jar包到lib中——右鍵buildpath—add to buildpath

 

 

和使用命令列設定一樣

類中的許可權修飾符

l  public 公用訪問 修飾類 方法成員變數

l  protected 受保護訪問子類中訪問 方法 成員變數

l  預設 什麼也不寫 預設訪問 類 方法 成員變數

l  Private 私人訪問 方法 成員變數

l  Static 靜態修飾符 方法成員變數

l  Final 最終修飾符 類 方法 成員變數 局部變數

l  Abstract 抽象修飾符 類 方法

l  Abstract 和private不能同時用

l  Abstract 和static 不能同時使用

l  Abstract 和final不能同時使用

l  修飾類 最常見是public

l  修飾成員變數 最常見的是private

l  構造方法 最常見的是 public

l  成員方法 最常見得是 public static abstract

局部變數和成員變數設計解析

l  如果是屬於事物的屬性就用成員變數  計算長方形的面積和周長

l  如果是屬於事物功能方法的屬性就用局部變數  計算兩個數的乘積和求和

l  如果沒有使用非靜態變數就定義靜態方法

類作為方法的參數和傳回值

l  作為方法的參數

  1. 寫在方法的參數列表中
  2. 利用類的引用變數用來調用方法
  3. 一個對象有兩個變數來指向 一般對象最為參數
  4. 匿名對象作為參數

l  作為方法的傳回值

  1. 一般對象作為參數
  2. 匿名對象作為參數
抽象類別型作為方法的參數和傳回值

l  作為方法的參數

  1. 抽象類別作為參數 沒有對象
  2. 實際傳遞的是子類的對象執行個體
  3. 調用的的方法是子類實現的方法
  4. 可以傳遞多種子類對象 多態調用的擴充性

l  作為方法的傳回值

  1. 抽象類別作為傳回值 void改為是抽象類別
  2. 沒有對象 只能返回子類的對象
  3. 接收的類型應該為 抽象類別類型
  4. 但缺點是 不知道返回的是哪一個子類對象
  5. 可以在方法中加參數 再加入if條件句等用來選擇返回哪一個子類對象
介面作為方法的參數和傳回值

l  作為方法的參數

  1. 傳遞的還是實作類別的對象執行個體
  2. 調用的也是實作類別的實現方法
  3. 多態傳遞子類對象也可以
  4. 調用介面中的常量

a)         可以直接用介面名調用

l  作為方法的傳回值

  1. 返回的也是實作類別的對象 多態的調用
  2. 接收的也還是介面的類型
  3. 調用的實作類別的方法
  4. API中很多介面對象都是用get來獲得的,而不是用new出來的
    1. 對於調用者來講簡化了代碼
    2. 日曆類
抽象類別作為方法的傳回值案例

a)         是一個抽象類別

b)         導包 util

c)         已知子類 重新抽象方法

d)         非抽象方法 直接繼承使用

e)         靜態get方法 獲得Calendar子類對象

f)         

g)        

h)         不需要知道子類是什麼

 

五星酒店案例
  1. 介紹

 

a)         酒店中多名員工 一名經理(特有獎金) 一名廚師 兩名服務員

b)         VIP服務

c)         調用員工功能

d)         調用VIP服務

l  分析

  1. 員工類 共性 父類
  2. 廚師 服務員 經理(特有獎金) 各有的特性 子類
  3. VIP服務 額外方法 介面
  4. 酒店  使用者  測試類別
總結

l  修飾符

定義的時候用的

類 public

   內部類可以當做一個成員來講

   這裡類常指外部類

成員 private

方法 public

l  自訂資料類型作為傳回值和參數

抽象類別

介面

API引入
  1. SUN公司做好的
  2. 一般不需要知道怎麼實現的
  3. 知道怎麼使用就行
  4. src.zip 源碼檔案
  5. 可以查看源碼
  6. API文檔
  7. 尋找方式

軟體包 String java.lang

顯示按鈕 索引  

Object類 常用類

 

  1. 所有類都是他的子類
  2. 構造方法 Object();
  3. 介面是否繼承object

介面沒有構造器沒有訪問object類的構造器

equals()方法

 

a)         Object類中的方法之一

b)         用來進行比較是否與此對象相等

c)         方法形式參數是object類型 因此所有的類型都可以作為實參

d)         所有類都繼承Object類 所以 任何類的對象都可以來調用equals方法來使用

e)         非靜態方法

f)          傳回值是布爾值

 

g)         比較記憶體配置圖

                                       i.              this 是方法調用者

                                     ii.              obj 表示被比較的對象

                                    iii.              Object 類是頂層類 其引用變數可以指向任意類的執行個體對象的記憶體位址

                                    iv.               == 比較兩個對象記憶體的地址

                                     v.              結果為false返回給方法調用

                                    vi.              沒有意義 因為兩個對象記憶體位址肯定不一樣 沒有可比性

l  重寫equals

  1. 比較對象成員變數
  2. this 改為 this.age
  3. obj不能直接調用傳過來對象的特有屬性

因為Object obj=另一個對象 是多態上轉型,父類不能調用子類特有屬性

  1. 所以需要改為 向下轉型為另一個對象的類型才可以調用
  2. 弊端:

只能傳遞相應的對象 如果傳遞其他類型比如數組就會拋出異常或出錯

  1. 所以需要進行判斷是否為對應的物件類型 instanceof
  2. 另外還需要進行非空判斷 返回false 和同一個對象判斷 返回true

 

ToString方法

l  傳回值是String類型

l  輸出語句中輸出的是對象時預設調用對象的toString方法

l  System.out.println(對象p); 和System.out.println(對象p.toString);相同 輸出對象的記憶體位址

l  重寫方法toString

  1. 返回對象的成員變數
  2. 列印Random類的對象是地址 列印Scanner類的的對象不是地址
  3. 因為Scanner重寫了ToString方法
  4. 概念和特性
    1. 特點
String類

一切皆對象

字串是一個事物也是一個對象

類是描述事物的 String類就是描述字串的

 

  1. 有很多方法來操作字串
  2. 所有“ ”都是一個String類對象
  3. String str =”ddd”

String 類名

Str 參考型別的變數

“ ”是對象執行個體

不用new

列印str 也沒有列印出地址 因為也是String類對toString重寫了

  1. String 常量
    1. 字串是一個常量 不可更改
    2. 字串對象不變 而不是參考型別變數不變 參考型別變數可以重複賦值
    3. 記憶體配置圖

字串是一個對象

啟動並執行時候在堆記憶體

本質是一個字元的數組

“abcd”相當於char value[]={a,,b,c,d}

String 類中是 private final char value [];

所以是常量

  1. 記憶體配置圖
    1. Main方法進棧
    2. 定義Str 常量 abcd
    3. 退記憶體中有常量池
    4. 常量池中有很多常量

字元型常量有52個

需要一個itacat時從常量池中拿出來用

本質是一個字元數組 str指向字元數組空間地址 由於重寫了toString方法 就輸出了itcast

如果又建立了一個str變數=abcde 那麼就會重新開闢一個char數組記憶體,重新指向一個新數組記憶體位址, 輸出就會改變

 

  1. 建立方式
    1. String str1=new String(“abc”);
    2. String str2=new String(“abc”);
    3. str1==str2
    4. str1.equal(str2)
    5. 記憶體配置圖
      1. String str1=new String(“abc”);

建立了兩個對象

一個是 new String();

一個是 字元數組 value[]

New String 儲存的是 value[]的記憶體位址

所以輸出的是abc

  1. String str2=new String(“abc”);

檢測是否有abc數組 檢測到有 則直接指向value數組的記憶體位址

所以輸出 str1==str2 因為地址相同所以 輸出 true

而 .equals 因為父類String重寫了equals方法 用來比較字串中的每個字元是否相同,而不是比較地址

 

 

 

 

 

  1. String類構造方法
    1. String(byte[ ] bytes)

a)         通過使用平台的預設字元集指定byte數組,構造一個新的String

b)         中文作業系統 預設編碼錶是 GBK

c)         將定義的byte數組中的元素在編碼錶中進行查詢 然後構造出來一個全新的字串

d)         如果是負數 查詢GBK 兩個位元組一個漢字

  1. String(byte[] bytes,int offset,int length)

a)         前面是一個位元組數組 後面的截取的範圍 一個int表示起始索引 一個表示 截取個數

  1. String(char[] value){};

a)         將字元數組轉為字串 字元數組的參數 不查詢編碼錶

  1. String(char[] value,int offset.int count)

a)         前面是一個字元數組 後面的截取的範圍 一個int表示起始索引 一個表示 截取個數

 

  1. String(””)

 

 

 

  1. String類的尋找功能
    1. length(); 返回int 字串的長度
    2. 擷取部分字串

a)         substring(int beginIndex,int endindex)

b)         開始索引 和 結束索引 包含頭部不包含尾部

c)         返回一個新的字串 需要重新用變數接收

d)         前面索引必須大於後面索引

e)         substring(int beginIndex); 包含頭部 後面的全要

  1. startwith(String prefix);

測試字串是否以指定的前置詞字元串開始

返回一個布爾值

  1. endwith(String prefix);

測試字串是否是一個字串的尾碼

返回一個布爾值

  1. contains(String xxx)

判斷一個字串中,是否包含另一個字串

  1. indexof(char ch)

尋找一個字元,在另一個字元中第一次出現的索引

返回 -1表示沒有包含

  1. getBytes()

將字串轉成位元組數組

功能和構造方法相反

返回一個位元組數組

數組裡面是對應的查詢編碼錶

  1. chartAt(int index)

返回索引上的字元

  1. toCharArray()

將字串轉成字元數組

功能和構造方法相反

返回一個字元數組

不查詢編碼錶

  1. equals()

是否相同

equalsIgnorecase(String s)

是否相同忽略大小寫

  1. 練習

 

 

 

 

StringBuffer類

1.概念

  1. 字串緩衝區 提高字串效率
  2. 內部是可變數組 類的父類內部定義了個位元組數組char數組 沒有final
  3. 預設容量是16個字元
  4. String不可變 一個“”就代表一個數組 相加之後又是一個新數組 消耗資源
  5. StringBuffer 可以擴容
  6. 預設容量 由構造器調用父類構造方法傳遞16建立預設數組

2.方法

  1. append(類型 變數名)

a)         可以添加任何類型變數

b)         傳回值是StringBuffer

         StringBuffer buffer=new StringBuffer();

buffer.append(6);

         System.out.println(buffer);

c)         Append 方法源碼是返回this;

誰調用append就返回誰

   buffer.append(6).append("2522");

方法調用鏈

  1. delete(int start,int end)

a)         刪除指定索引區間的字元 包頭不包尾

b)         返回StringBuffer

c)         刪除全部 0 到length

  1. Insert(int index,任意類型)

添加任意類型資料到指定位置

a)         可以多一位不可以多兩位

  1. replace(int start,int end,String str)

替換範圍內的字串 包頭不包尾

  1. reverse();

將緩衝區內的字元翻轉

  1. toString

繼承Object類重寫的toString方法

將可變的緩衝區對象轉換為不可變String對象

 

StringBuilder

l  提供一個和StringBuffer相容的API

l  不同

StringBuilder線程不安全 運行快

StringBuffer安全執行緒 運行慢

所以在使用單線程時使用StringBuilder比較好

練習

改變數組輸出格式為【2,1,2】

 

java自學之路-day10

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.