Java基礎複習

1 面向對象

面向對象更增強調運用人類在平常的是爲邏輯中採用的思想方法與原則java

抽象、分類、繼承、聚合、多態數據庫

1.1 面向對象與面向過程

面向過程:強調的是功能行爲

面向過程:將功能封裝進對象,強調具有了功能的對象

1.2 面向對象三大特徵

**封裝、繼承、多態**

1.3 OOP思想概述

類 :對現實世界事物的抽象定義apache

對象:類的實體(實例)數組

![類與對象](E:\MyWork\個人筆記\Picture\類與對象.png)

            `ps. 類就像汽車設計圖   對象就像實際的汽車`

類(class)和對象(object)是面向對象的核心概念。類是對現實世界事物的描述,類是抽象、概念上的定義。

面向對象的開發方式:
  • 先找具備所需功能的對象
  • 對象不存在時建立所需功能的對象
  • 面向對象簡化開發提升代碼複用
  • 面向對象程序設計的重點:類的設計
  • 定義類實際上是定義類中的成員(成員變量、成員方法)

2 類

定義類實際上是定義類中的成員(成員變量、成員方法)oracle

2.1 類的定義

public class Teacher{
  
  String name;
  int age;
  String gende;
  
  public void teach(){
    System.out.println("老師上課");
  }
  
  public void eat(){
    System.out.println("老師吃飯");
   }
  
   public void introduce(){
        System.out.println("姓名:"+name+「年齡」)
    System.out.println("年齡:"+age);
    }
 }

2.2 類的屬性

描述事物的特徵oop

屬性用來描述事物的特徵,用屬性變量來保存數據,屬性也叫作成員變量,分爲兩類:
  • 對象屬性(實例屬性):隸屬於對象,以來於對象存在而存在
  • 類屬性(類變量):類中的靜態屬性測試

    類中定義的成員變量。this

示例:
    public class Student{

    public int source;
    private String name;
    private int age;
    private char sex;
    //成員變量、對象屬性、類屬性
    ...
  }

2.3 類的方法

方法也叫作成員方法,分爲兩類:
  • 對象方法(實例方法):隸屬於對象經過對象來調用,內部用this調用。
  • 類方法:隸屬於類,經過該類便可訪問設計

    類中定義的方法。指針

示例:
    public class Teacher{

    String name;
    int age;
    String gende;

        //如下爲類中定義的方法
    public void teach(){
      System.out.println("老師上課");
    }

    public void eat(){
      System.out.println("老師吃飯");
     }

    public void introduce(){
      System.out.println("姓名:"+name+「年齡」)
      System.out.println("年齡:"+age);
    }
   }

2.4 訪問屬性和方法

經過對象訪問屬性和方法,使用對象加`.`的方式。

2.4.1 對象建立(簡單瞭解)

經過new關鍵字能夠將一個類進行實例化,實例化即建立某個類的對象,類的實例便是一個對象。
//  Techer類型        對象的引用     new關鍵字      構造方法
        Teacher          teacher    =   new          Teacher();

2.4.2 訪問方法及屬性

經過對象加上`.`的方式訪問對象的方法或屬性`非private屬性`
示例:
  public class TeacherTest{
  public static void main(String[] args){
    
    //建立對象teacher
    Teacher teacher = new Teacher();
    
    //給teacher對象的屬性賦值
    teacher.name = "王歡";
    teacher。age = "24";
    
    //調用teacher對象的 teach() 方法
    teacher.teach();
  }
}

3 示例

3.1 示例一 打印日期

建立文件MyDate.java
public class MyDate{
            
        int year;
        int month;
        int day;
    
    public String getMyDate(){
      return year+"年"+month+「月」+day+"日";
    }
  }
建立測試類 MyDateTest.java
public class MyDateTest{
  public static void main(String[] args){
    
    MyDate myBirthDay = new MyDate();
    myBirthDay.year  = 1995;
    myBirthDay.month = 8;
    myBirthDay.day   = 17;
    
    MyDate today = new MyDate();
    today.year  = 2019;
    today.month = 4;
    today.day       = 16;
    
   System.out.println("生日:"+myBirthday.getMyDate());
   System.out.println("今天:"+today.getMyDate());
  }
}

3.2 示例二 實例與引用

4 封裝性

將類的成員變量私有化,使用get、set方法讀取和設置成員變量的值,體現了類的封裝性,保護數據。
  • 隱藏一個類中不須要對外提供的實現細節
  • 使用者只能經過實現定製好的方法來訪問數據
  • 便於加入控制邏輯,限制對屬性的不合理操做
  • 便於修改,加強代碼的可維護性
//示例:getter、setter方法
  public class Dog{

      private String  color;
      private String  name;
      private int     age;

      public void cry(){
          System.out.println("狗狗叫呢!");
      }

      public String eat(String something){
          return "狗吃了"+something;
      }

      public  void  say(){
          System.out.println("狗會說話了?");
      }

      public String getColor() {
          return color;
      }

      public void setColor(String color) {
          this.color = color;
      }

      public String getName() {
          return name;
      }

      public void setName(String name) {
          this.name = name;
      }

      public int getAge() {
          return age;
      }

      public void setAge(int age) {
        if(age<20&&age>0)
          this.age = age;
        else return;
      }
  }

5 匿名對象

實例化對象後直接使用,沒有使用對應的引用變量進行接收。適用於對象實例化只須要進行一次調用的請狀況下,調用完成對象將由GC垃圾回收進行處理。

`new Teacher().eat();`

6 構造器

建立對象 初始化對象

對象的構造器用於建立對象,在建立對象時完成對象的初始化工做。構造器(構造方法)在建立對象時由JVM執行。

6.1 構造器特徵

  • 構造器名與類名相同
  • 不用聲明返回值
  • 不能爲使用static、final、synchronized、abstract、native修飾
  • 不能由return語句返回值

6.2 示例

public class Dog{

    private String color;
    private String name;
    private int age;

    public Dog(){}//無參構造器
    //當類中未編寫構造器時默認有一個 無參構造器
    //當編寫了有參構造器時,默認沒有 無參構造器 按需自行編寫它
    
    //帶參數構造
    public Dog(String color, String name, int age){
      this.color = color;
      this.name  = name;
      this.age   = age;
    }
    
    //構造器也是類方法 能夠重載
    public Dog(String color,String name){
      this.color    = color;
      ths.name      = name;
    }
        ...
  }
public class Dog{

    private String color;
    private String name;
    private int age;

    public Dog(){
      this("白色","小白");
      //必須放在首行!  
    }
    //無參構造器
    //當類中未編寫構造器時默認有一個 無參構造器
    //當編寫了有參構造器時,默認沒有 無參構造器 按需自行編寫它
    
    //帶參數構造
    public Dog(String color, String name, int age){
      this.color = color;
      this.name  = name;
      this.age   = age;
    }
    
    //構造器也是類方法 能夠重載
    public Dog(String color,String name){
      this.color    = color;
      ths.name      = name;
    }
        ...
  }
`ps. 通常類中保留兩個構造器,一個無參構造器和一個全參數構造器。`

![](https://img2018.cnblogs.com/blog/1481652/201904/1481652-20190418141018794-831460446.png)

7 JavaBean

JavaBean是一個普通的Java類

JavaBean是一種Java語言寫成的可重用組件。用戶可使用JavaBean將功能、處理、值、數據庫訪問和其餘人戶能夠用java代碼創造的對象進行打包,並由其餘開發者在其餘功能中使用這些對象。

JavaBean提供了一種隨時隨地的複製和粘貼的功能,不用關心任何改變。

JavaBean標準
  • 類是公共類型
  • 類中含有公共無參構造器
  • 有屬性並由對應的getter、setter方法
示例:
//Computer.java 
    public class Computer {

      private double cpu;
      private int memory;

      public Computer() {
      }
     
      public double getCpu() {
          return cpu;
      }

      public void setCpu(double cpu) {
          this.cpu = cpu;
      }

      public int getMemory() {
          return memory;
      }

      public void setMemory(int memory) {
          this.memory = memory;
      }
  }

8 包 package

package語句規範類的整理 解決類名衝突問題

package語句應放在java源文件的第一行。
//package 包名.子包名.子子包名.子子子包名
//            組織.機構名稱.項目名稱.模塊名稱
//              org、com、edu
package org.apache.oracle.JdbcDriver
  • package關鍵字使用後編譯java文件時命令須要使用java -d . *.java

  • 其餘類中使用須要使用類全限定名稱org.apache.orcle.JdbcDriver

9 包 import

import語句告訴編譯器到哪裏去尋找類

爲使用定義在不一樣包中的Java類,需用·`import`語句來引入指定包層次下所須要的類或所有類。
//import  包名.子包名.子子包名.子子子包包.類名(或 [表示所有]) 

  import  org.apache.oracle.JdbcDriver;
  import    org.apache.oracle.*;

10 數組

數組是一組相同類型的數據的集合,數組是對象。元素是數組中的一個數據,任意類型的數據均可以建立數組。
  • 數據多個形同類型數據的組合,實現堆這些數據的統一管理
  • 數組中的元素能夠是任何數據類型(基本數據類型、引用類型)
  • 數組是引用類型,數組型數據是對象。
  • 數組中每一個元素至關於該對象的成員變量。

10.1 聲明數組

示例:
    int[] intArray;
    //聲明瞭一個int數組
    intArray = new int[5];
    //建立數組:使用new關鍵字 中括號內數字表示元素個數
    //數組一旦建立長度和數據類型將沒法再被修改

    intArray[0] = 11;
    intArray[1] = 22;
    intArray[2] = 33;
    intArray[3] = 44;
    intArray[4] = 55;

//如下語句編譯無報錯但運行時會報錯IndexOoutOfBoundsException
//intArray[5] = 666;

`ps.數組在內存中時是連續 數組長度過大可能會建立失敗`

10.2 循環寫讀

示例:
    int[] intArrays = new int[5];
    
    //循環賦值
    for(int i=0; i<5; i++){ 
        intArrays[i] = i;
  }
    
    //循環遍歷
    for(int i=0; i<intArrays.length; i++){
    //intArrays.length是數組的長度    length是常量不可修改
    System.out.println(intArrays[i]);
    }

    //加強for循環遍歷
    //  局部變量       待遍歷數組
  for(int intArray:intArrays){
    System.out.println(intArray);
  }

10.3 初始化數組

示例: 
    //動態初始化
  int[] intArrays = new int[3];
  intArrays[0] = 1;
  intArrays[1] = 11;
  intArrays[2] = 111;

    //靜態初始化
    int[] intArrays = new int[]{1,11,111};
    
    int[] intArrays;
    intArrays = new int[]{1,11,111}; 
    
    int[] intArrays = {1,11,111};
    
    //int[] intArrays;
    //編譯報錯intArrays = {1,11,111}; ×
    
    //如下寫法編譯報錯
    //int[] intArrays = new int[6]{1,11,111};   ×

10.4 對象數組

示例:
    
    Cat[] cats = new Cat[3];
    cats[0] = new cat("灰灰");
//cats[1] = new Cat("靚靚");
    cats[2] = new Cat("花花");

  for(Cat cat:cats){
    cat.say();
  }
    //cats[2] 未實例化運行時報錯空指針異常 
    //NullPointerException
相關文章
相關標籤/搜索