學習Java的Day05

知識點

關鍵字,經常使用類(super,static,final):

super

  • 子類對父類的引用,只能在非靜態方法中使用
  • 引用父類的成員變量的格式爲 super.成員變量名稱
  • 引用父類的非靜態方法的格式爲 super.方法名(參數列表)
  • 引用父類的構造方法的格式爲 super(參數列表)

final

  • final修飾這個類就不能被繼承,但不影響建立對象,如系統的String類
  • final修飾的方法不能被重寫,但父類中沒有被final修飾方法,子類覆蓋後能夠加final。
  • final修飾局部變量,只可以賦值一次,當修飾的是引用的類型時,不能被從新賦值,可是能夠修改對象的屬性
  • final修飾成員變量,最終的變量,常量,固定的值,必定要初始化,不能被二次賦值。

static(開發中慎用,會很耗內存

  • 靜態的,成員信息在類中在方法區中,常量池(常量值),靜態內存區(靜態成員信息)。
  • 不能修飾類,可是能夠修飾方法,該方法是靜態方法,在類中,經過類區執行調用。
  • 被static修飾的變量,是靜態變量,在類中。靜態全局變量:靜態屬性-->在類中存儲,被全部對象共享。

思考:super,this 與 static 爲何不能共存????

  static靜態的,是不變的,在java中static修飾成員屬性,方法時,表示該屬性/方法能夠被類名直接調用,如工具類等java

而this表明本類對象的引用,一般用與成員變量與局部變量重名時。sql

  super表明子類對父類滿參構造函數的初始化,也是須要產生對象才能夠使用可是考慮到虛擬機加載順序爲先加載類,當被實例化才產生對象。因此若是並存則表示類和對象同時加載,顯然是不合邏輯的。數組

 

代碼塊:

  • 局部代碼塊
    • 定義在方法中,用戶劃分區域的。( {}:做用域啊,劃定工做區間 )
  • 構造代碼塊
    • 構造代碼塊和方法並列,定義在類成員變量位置的代碼塊,每次建立對象的時候都會執行,優先於構造方法
    • 內容寫的是語句,聲明變量,不能實現功能體(方法)。
  • 靜態代碼塊
    • 定義在類的成員變量位置的用static修飾的代碼塊。
    • 它優先於當前類主方法執行、優先於構造代碼塊執行,當以任意形式第一次使用到該類時執行。
    • 該類無論建立多少對象,靜態代碼塊只執行一次。
    • 可用於給靜態變量賦值,用來給類進行初始化,初始化成員變量,加載一些成員信息。

  執行順序:父類靜態代碼塊>子類靜態代碼塊>main函數>構造代碼塊>構造方法函數

 

(注意:方法只能並列使用,不能嵌套使用!!!!!!!!!)工具

訪問修飾符

–--------------
public protected default private
同一類中

同一包中this

(子類與無關類)spa

 
不一樣包的子類
   
不一樣包中的無
關類
     

 

注意:

  • 對於protected不一樣包中的子類只能在子類內部調用,在外部子類是沒法調用成員變量和方法的

  • 在不一樣包下的無關類中,只能訪問public修飾的成員信息

  • 在不一樣包的子類中,子類的對象是能夠訪問被protected修飾的父類的成員信息的

 

 

系統經常使用類:

API ---> Application Interface  應用程序接口.net

java中的五大經常使用包: java.lang、 java.util、 java.io、 java.net、 java.sqlcode

object類

equals方法在非空對象引用上實現等價關係:

  • 自反性 :對於任何非空的參考值xx.equals(x)應該返回true
  • 它是對稱的 :對於任何非空引用值xyx.equals(y)應該返回true當且僅當y.equals(x)回報true
  • 傳遞性 :對於任何非空引用值xyz ,若是x.equals(y)回報truey.equals(z)回報true ,而後x.equals(z)應該返回true
  • 它是一致的 :對於任何非空引用值xy ,屢次調用x.equals(y)始終返回true或始終返回false ,沒有設置中使用的信息equals比較上的對象被修改。
  • 對於任何非空的參考值xx.equals(null)應該返回false
  • equals類方法Object實現對象上差異可能性最大的相等關係; 也就是說,對於任何非空的參考值xy ,當且僅當xy引用相同的對象( x == y具備值true )時,該方法返回true
  • 請注意,不管什麼時候覆蓋該方法,一般須要覆蓋hashCode方法,以便維護hashCode方法的通用合同,該方法規定相等的對象必須具備相等的哈希碼。

toString方法返回一個「textually表明」這個對象的字符串。 結果應該是一個簡明扼要的表達,容易讓人閱讀。 建議全部子類覆蓋此方法。

    該toString類方法Object返回一個由其中的對象是一個實例,該符號字符`的類的名稱的字符串@對象

    和對象的哈希碼的無符號的十六進制表示。

    換句話說,這個方法返回一個等於下列值的字符串:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

string類

  •   String類表明字符串。 Java程序中的全部字符串文字(例如"abc" )都被實現爲此類的實例。

  •   字符串不變; 它們的值在建立後不能被更改。 字符串緩衝區支持可變字符串。

  •    由於String對象是不可變的,它們能夠被共享。

 

練習代碼:

/*
本身建立一個類,寫一個靜態方法,傳入一個int數組,得 到一個字符串[元素1,元素2,….]
 */
public class HomeWork02 {
    public static void main(String[] args) {
        int[]  arr = new  int[]{1,55,66,99,88,74,22,44,32,22};

        System.out.print("[");
        for (int  i = 0;i<arr.length;i++){

            if (i!=arr.length-1){
                System.out.print(arr[i]+",");
            }else {
                System.out.print(arr[i]);
            }
        }
        System.out.println("]");
    }
}

  

public class HomeWork01 {
    public static void main(String[] args) {
        // 在控制檯輸入字符串,統計出大寫的字符的個數,小寫的字符個數,數字類型的字符個數,以及其餘字符的個數
        Scanner sc = new Scanner(System.in);
        int big = 0;
        int small = 0;
        int num = 0;
        int other = 0;

        System.out.println("請輸入一串字符串");
        String str = sc.next();

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) >= 65 && str.charAt(i) <= 90) {
                big++;
            } else if (str.charAt(i) >= 97 && str.charAt(i) <= 122) {
                small++;
            } else if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
                num++;
            } else {
                other++;
            }
        }
        System.out.println("大寫字母有:" + big + "個");
        System.out.println("小寫字母有:" + small + "個");
        System.out.println("數字有:" + num + "個");
        System.out.println("其餘字符有:" + other + "個");
    }

}
相關文章
相關標籤/搜索