一、本單元知識點概述
(Ⅰ)知識點概述

二、本單元教學目標
(Ⅰ)重點知識目標
1.靜態變數,靜態方法
2.Arrays工具類的使用
3.Math類的使用
(Ⅱ)能力目標
1.能夠理解static關鍵字
2.能夠寫出靜態代碼塊的格式
3.能夠使用Arrays類操作陣列
4.能夠使用Math類進行數學運算
四、本單元知識詳講
12.1 static關鍵字的概述
12.1.1 static關鍵字的概述★★★★
關于 static 關鍵字的使用,它可以用來修飾的成員變數和成員方法,被修飾的成員是屬于類的,而不是單單是屬 于某個物件的,也就是說,既然屬于類,就可以不靠創建物件來呼叫了,
12.1.2 定義和使用格式★★★★
類變數 當 static 修飾成員變數時,該變數稱為類變數,該類的每個物件都共享同一個類變數的值,任何物件都可以更改 該類變數的值,但也可以在不創建該類的物件的情況下對類變數進行操作,
-
類變數:使用 static關鍵字修飾的成員變數,
定義格式:
static 資料型別 變數名;
舉例:
static int numberID;
比如說,基礎班新班開班,學員報到,現在想為每一位新來報到的同學編學號(sid),從第一名同學開始,sid為
1,以此類推,學號必須是唯一的,連續的,并且與班級的人數相符,這樣以便知道,要分配給下一名新同學的學
號是多少,這樣我們就需要一個變數,與單獨的每一個學生物件無關,而是與整個班級同學數量有關,所以,我們可以這樣定義一個靜態變數numberOfStudent,代碼如下:
1 public class Student { 2 private String name; 3 private int age; 4 // 學生的id 5 private int sid; 6 // 類變數,記錄學生數量,分配學號 7 public static int numberOfStudent = 0; 8 public Student(String name, int age){ 9 this.name = name; 10 this.age = age; 11 // 通過 numberOfStudent 給學生分配學號 12 this.sid = ++numberOfStudent; 13 } 14 // 列印屬性值 15 public void show() { 16 System.out.println("Student : name=" + name + ", age=" + age + ", sid=" + sid ); 17 } 18 } 19 20 public class StuDemo { 21 public static void main(String[] args) { 22 Student s1 = new Student("張三", 23); 23 Student s2 = new Student("李四", 24); 24 Student s3 = new Student("王五", 25); 25 Student s4 = new Student("趙六", 26); 26 s1.show(); // Student : name=張三, age=23, sid=1 27 s2.show(); // Student : name=李四, age=24, sid=2 28 s3.show(); // Student : name=王五, age=25, sid=3 29 s4.show(); // Student : name=趙六, age=26, sid=4 30 } 31 }
**靜態方法**
當 static 修飾成員方法時,該方法稱為類方法 ,靜態方法在宣告中有 static ,建議使用類名來呼叫,而不需要
創建類的物件,呼叫方式非常簡單,
- 類方法:使用 static關鍵字修飾的成員方法,習慣稱為靜態方法,
定義格式:
修飾符 static 回傳值型別 方法名 (引數串列){ // 執行陳述句 }
舉例:在Student類中定義靜態方法
1 public static void showNum() { 2 System.out.println("num:" + numberOfStudent); 3 }
-
靜態方法呼叫的注意事項:
-
靜態方法可以直接訪問類變數和靜態方法,
-
靜態方法不能直接訪問普通成員變數或成員方法,反之,成員方法可以直接訪問類變數或靜態方法,
-
靜態方法中,不能使用this關鍵字,
-
小貼士:靜態方法只能訪問靜態成員
呼叫格式 被static修飾的成員可以并且建議通過類名直接訪問,雖然也可以通過物件名訪問靜態成員,原因即多個物件均屬 于一個類,共享使用同一個靜態成員,但是不建議,會出現警告資訊, 格式:
// 訪問類變數 類名.類變數名; // 呼叫靜態方法 類名.靜態方法名(引數);
呼叫演示,代碼如下
1 public class StuDemo2 { 2 public static void main(String[] args) { 3 // 訪問類變數 4 System.out.println(Student.numberOfStudent); 5 // 呼叫靜態方法 6 Student.showNum(); 7 } 8 }
12.1.3 靜態原理圖解★★★★
static 修飾的內容:
-
是隨著類的加載而加載的,且只加載一次,
-
存盤于一塊固定的記憶體區域(靜態區),所以,可以直接被類名呼叫,
-
它優先于物件存在,所以,可以被所有物件共享,

12.1.4 靜態代碼塊★★★
-
靜態代碼塊:定義在成員位置,使用static修飾的代碼塊{ },
-
位置:類中方法外,
-
執行:隨著類的加載而執行且執行一次,優先于main方法和構造方法的執行
-
格式:
1 public class ClassName{ 2 static { 3 // 執行陳述句 4 } 5 }
作用:給類變數進行初始化賦值,
用法演示,代碼如下:
1 public class Game { 2 public static int number; 3 public static ArrayList<String> list; 4 static { 5 // 給類變數賦值 6 number = 2; 7 list = new ArrayList<String>(); 8 // 添加元素到集合中 9 list.add("張三"); 10 list.add("李四"); 11 } 12 }
小貼士: static 關鍵字,可以修飾變數、方法和代碼塊,在使用的程序中,其主要目的還是想在不創建物件的情況 下,去呼叫方法,下面將介紹兩個工具類,來體現static 方法的便利,
12.2 Arrays類
12.2.1 Arrays類的概述★★
java.util.Arrays 此類包含用來操作陣列的各種方法,比如排序和搜索等,其所有方法均為靜態方法,呼叫起來 非常簡單,
12.2.2 操作陣列方法的使用★★★★★
-
public static String toString(int[] a) :回傳指定陣列內容的字串表示形式
1 public static void main(String[] args) { 2 // 定義int 陣列 3 int[] arr = {2,34,35,4,657,8,69,9}; 4 // 列印陣列,輸出地址值 5 System.out.println(arr); // [I@2ac1fdc4 6 // 陣列內容轉為字串 7 String s = Arrays.toString(arr); 8 // 列印字串,輸出內容 9 System.out.println(s); // [2, 34, 35, 4, 657, 8, 69, 9] 10 }
12.2.3 使用Arrays對字串中的字符排序★★★
請使用 Arrays 相關的API,將一個隨機字串中的所有字符升序排列,并倒序列印,
1 public class ArraysTest { 2 public static void main(String[] args) { 3 // 定義隨機的字串 4 String line = "ysKUreaytWTRHsgFdSAoidq"; 5 // 轉換為字符陣列 6 char[] chars = line.toCharArray(); 7 // 升序排序 8 Arrays.sort(chars); 9 // 反向遍歷列印 10 for (int i = chars.length‐1; i >= 0 ; i‐‐) { 11 System.out.print(chars[i]+" "); // y y t s s r q o i g e d d a W U T S R K H F A 12 } 13 } 14 }
12.3 Math類
12.3.1 Math類的概述★★★
java.lang.Math 類包含用于執行基本數學運算的方法,如初等指數、對數、平方根和三角函式,類似這樣的工具 類,其所有方法均為靜態方法,并且不會創建物件,呼叫起來非常簡單,
12.3.2 基本運算的方法使用★★★
-
public static double abs(double a) :回傳 double 值的絕對值,
double d1 = Math.abs(‐5); //d1的值為5 double d2 = Math.abs(5); //d2的值為5
- public static double ceil(double a) :回傳大于等于引數的最小的整數
double d1 = Math.ceil(3.3); //d1的值為 4.0 double d2 = Math.ceil(‐3.3); //d2的值為 ‐3.0 double d3 = Math.ceil(5.1); //d3的值為 6.0
-
public static double floor(double a) :回傳小于等于引數最大的整數
double d1 = Math.floor(3.3); //d1的值為3.0 double d2 = Math.floor(‐3.3); //d2的值為‐4.0 double d3 = Math.floor(5.1); //d3的值為 5.0
- public static long round(double a) :回傳最接近引數的 long,(相當于四舍五入方法)
long d1 = Math.round(5.5); //d1的值為6.0 long d2 = Math.round(5.4); //d2的值為5.0
12.3.3 Math類的案例★★★
請使用 Math 相關的API,計算在 -10.8 到 5.9 之間,絕對值大于 6 或者小于 2.1 的整數有多少個,
1 public class MathTest { 2 public static void main(String[] args) { 3 // 定義最小值 4 double min = ‐10.8; 5 // 定義最大值 6 double max = 5.9; 7 // 定義變數計數 8 int count = 0; 9 // 范圍內回圈 10 for (double i = Math.ceil(min); i <= max; i++) { 11 // 獲取絕對值并判斷 12 if (Math.abs(i) > 6 || Math.abs(i) < 2.1) { 13 // 計數 14 count++; 15 } 16 } 17 System.out.println("個數為: " + count + " 個"); 18 } 19 }
四、本單元知識總結
1.static關鍵字
2.Arrays陣列工具類
3.Math類的使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309010.html
標籤:其他
