2019-10-22-22:28:39 目錄 1.Static靜態類 2.Static記憶體圖 3.Static靜態代碼塊 4.Arrays類 5.Math類 Static靜態類 一旦使用static修飾成員方法,那麼它就成為了靜態方法,靜態方法不屬於對象,而是屬於類的 註意: 1.如果沒有stati ...
2019-10-22-22:28:39
目錄
1.Static靜態類
2.Static記憶體圖
3.Static靜態代碼塊
4.Arrays類
5.Math類
Static靜態類
一旦使用static修飾成員方法,那麼它就成為了靜態方法,靜態方法不屬於對象,而是屬於類的
註意:
1.如果沒有static關鍵字修飾,那麼必須首先創建對象,然後通過對象使用它
2.如果有了static關鍵字修飾,那麼不需要創建對象,直接就能通過類名稱來使用它
使用格式:
靜態變數:類名稱.靜態變數
靜態方法:類名稱.靜態方法
註意事項:
1.靜態不能直接訪問非靜態(先有靜態內容,後有非靜態內容)
2.靜態方法當中不能用this(this代表當前對象,通過誰調用的方法,誰就是當前對象)
package demopra;
public class StaticText {
public static void main(String[] args) {
//首先創建對象
MyClass mc = new MyClass();
//然後才能使用沒有靜態static關鍵字的內容
mc.method();
//對於靜態方法來說,可以通過對象名調用,也可以通過類名稱調用
mc.methodStatic();//正確,不推薦使用這種方法
MyClass.methodStatic();//正確,推薦
//對於本來當中的方法可以省略類名稱
myMethod();
StaticText.myMethod();//等效於myMethod();
}
public static void myMethod(){
System.out.println("自己的方法");
}
}
package demopra;
public class MyClass {
private int num;//成員變數
private static int numStatic;//靜態變數
//成員方法
public void method(){
System.out.println("成員方法執行啦!!!");
//成員方法可以訪問成員變數
System.out.println(num);
//成員方法可以訪問靜態變數
System.out.println(numStatic);
}
//靜態方法
public static void methodStatic(){
System.out.println("靜態方法執行啦!!!");
//靜態方法可以訪問靜態變數
System.out.println(numStatic);
//靜態方法不可以訪問非靜態變數[重點]
// System.out.println(num);//Non-static field 'num' cannot be referenced from a static context
//靜態方法中不能使用this關鍵字
// System.out.println(this);//'demopra.MyClass.this" cannot be referenced from a static context
}
}
Static記憶體圖
Static靜態代碼塊
格式:
public class 類名稱{
static{
靜態代碼塊內容
}
}
特點:
1.當第一次用到本類時,靜態代碼塊執行唯一的一次
2.靜態內容總是優先於非靜態,所以靜態代碼塊比構造方法先執行
典型用途:
用來一次性對靜態變數進行賦值
Arrays類
java.util.Arrays是一個與數組相關的工具類,裡面提供了大量靜態方法,用來實現數組常見的操作。
public static string tostring(數組): 將參數數組變成字元串(按照預設格式,[元索1, 元素2,元索...])
public stotic void sort(數組): 按照預設升序(從小到大)對數組的元素進行排序。
備註:
1.如果是數值,sort預設按照升序從小到大
2.如果是字元串,sort預設按照字母升序
3.如果是自定義的類型,那麼這個自定義的類需要有Comparable或者Comporator介面的支持。
package demopra;
import java.util.Arrays;
public class ArraysTest {
public static void main(String[] args) {
//定義一個int數組
int[] arr = {10,20,30};
//將int數組按照預設格式變成字元串
String arr1 = Arrays.toString(arr);
System.out.println(arr1);//[10, 20, 30]
int[] arr2 = {50,10,40};
//按照預設大小進行升序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));//[10, 40, 50]
String[] arr3 = {"c","b","a"};
Arrays.sort(arr3);
System.out.println(Arrays.toString(arr3));//[a, b, c]
}
}
Math類
java.util.Math類是數學相關的工具類,裡面提供了大量的靜態方法,完成與數學運算相關的操作。
public. static double abs(double num); 獲取絕對值。有多種重載。
public static double ceil(double num);向上取整。
public static double floor(double num);向下取整。
public static long round(double num): 四捨五入。
Math. PI代表近似的圓周李常量(double) 。
ckage demopra;
public class MathTest {
public static void main(String[] args) {
//獲取絕對值
System.out.println(Math.abs(-23));//23
//向上取整
System.out.println(Math.ceil(3.1));//4.0
//向下取整
System.out.println(Math.floor(3.9));//3.0
//四捨五入
System.out.println(Math.round(3.15));//3
}
}
package demopra;
/*
要求:計算對-8.8~11.1數值取絕對值(int)後,大於5或者小於1.1的值的個數
*/
public class MathTest {
public static void main(String[] args) {
//符合要求的數量
int count = 0;
double max = 11.1;//定義初始值max
double min = -8.8;//定義初始值min
for (int i = (int)min; i < max; i++) {
int abs = Math.abs(i);//取絕對值
if (abs>5 || abs < 1.1){//取值要求
System.out.print(i+" ");//-8 -7 -6 -1 0 1 6 7 8 9 10 11
count++;
}
}
System.out.println("總共有:"+count);//總共有:12
}
}