static
概述
static 可以用來修飾的成員變量和成員方法,被修飾的成員是屬於類的。
類變量
使用 static關鍵字修飾的成員變量
當 static 修飾成員變量時,該變量稱爲類變量。該類的每個對象都共享同一個類變量的值。
任何對象都可以更改該類變量的值,但也可以在不創建該類的對象的情況下對類變量進行操作
static 關鍵字,可以修飾變量、方法和代碼塊。在使用的過程中,其主要目的還是想在不創建對象的情況 下,去調用方法。
類方法/靜態方法
使用 static關鍵字修飾的成員方法,習慣稱爲靜態方法。
當 static 修飾成員方法時,該方法稱爲類方法 。靜態方法在聲明中有 static ,建議使用類名來調用,而不需要創建類的對象。
注意:
靜態方法只能訪問靜態成員(類成員)
靜態方法可以直接訪問類變量和靜態方法。
靜態方法不能直接訪問普通成員變量或成員方法。
反之,成員方法可以直接訪問類變量或靜態方法。
靜態方法中,不能使用this關鍵字。
靜態代碼塊
定義在成員位置,使用static修飾的代碼塊{ }。
位置:類中方法外。
執行:隨着類的加載而執行且執行一次,優先於main方法和構造方法的執行。
格式:
public class ClassName{
static {
// 執行語句
}
}
作用:給類變量進行初始化賦值
public class Game {
public static int number;
public static ArrayList<String> list;
static {
// 給類變量賦值
number = 2;
list = new ArrayList<String>();
// 添加元素到集合中
list.add("張三");
list.add("李四");
}
}
定義格式
static 數據類型 變量名
靜態原理圖解
static 修飾的內容:
是隨着類的加載而加載的,且只加載一次。
存儲於一塊固定的內存區域(靜態區),所以,可以直接被類名調用。
它優先於對象存在,所以,可以被所有對象共享
String
概述
java.lang.String 類代表字符串。
Java程序中所有的字符串文字(例如 “abc” )都可以被看作是實現此類的實例。
類 String 中包括用於檢查各個字符串的方法,比如用於比較字符串,搜索字符串,提取子字符串以及創建具有翻譯爲大寫或小寫的所有字符的字符串的副本。
特點
1)字符串是常量,字符串的值在創建後不能被更改
2)字符串不可改變,字符串時可以共享使用
3)字符串效果上相當於char數組,但是底層存儲爲byte數組
構造方法
1)public String() :初始化新創建的 String對象,以使其表示空字符序列
創建一個空白字符串,不含有任何內容
// 無參構造
String str = new String();
2)public String(char[] value) :通過當前參數中的字符數組來構造新的String。
// 通過字符數組構造
char chars[] = {'a', 'b', 'c'};
String str2 = new String(chars);
3)public String(byte[] bytes) :通過使用平臺的默認字符集解碼當前參數中的字節數組來構造新的 String。
// 通過字節數組構造
byte bytes[] = { 97, 98, 99 };
String str3 = new String(bytes);
4)直接創建
String s="hello";
常量池
程序中直接寫上雙引號字符串,就在字符串常量池中。new的內容不在常量池中。
字符串常量池在堆中。
==
基本類型:==比較數值
引用類型:==比較地址值
常用方法
比較
1)public boolean equals (Object anObject) :將此字符串與指定對象進行比較。
2)public boolean equalsIgnoreCase (String anotherString) :將此字符串與指定對象進行比較,忽略大小寫。
// 創建字符串對象
String s1 = "hello";
String s2 = "hello";
String s3 = "HELLO";
// boolean equals(Object obj):比較字符串的內容是否相同 System.out.println(s1.equals(s2)); // true System.out.println(s1.equals(s3)); // false System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
//boolean equalsIgnoreCase(String str):比較字符串的內容是否相同,忽略大小寫 System.out.println(s1.equalsIgnoreCase(s2)); // true System.out.println(s1.equalsIgnoreCase(s3)); // true System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
Object 是” 對象”的意思,也是一種引用類型。作爲參數類型,表示任意對象都可以傳遞到方法中。
獲取與截取
1)public int length () :返回此字符串的長度
2)public String concat (String str) :將指定的字符串連接到該字符串的末尾。
3)public char charAt (int index) :返回指定索引處的 char值
4)public int indexOf (String str) :返回指定子字符串第一次出現在該字符串內的索引
5)public String substring (int beginIndex) :返回一個子字符串,從beginIndex開始截取字符串到字符 串結尾
6)public String substring (int beginIndex, int endIndex) :返回一個子字符串,從beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex。
//創建字符串對象
String s = "helloworld";
// int length():獲取字符串的長度,其實也就是字符個數 System.out.println(s.length());
System.out.println("‐‐‐‐‐‐‐‐");
// String concat (String str):將將指定的字符串連接到該字符串的末尾.
String s = "helloworld";
String s2 = s.concat("**hello itheima");
System.out.println(s2);// helloworld**hello itheima
// char charAt(int index):獲取指定索引處的字符 System.out.println(s.charAt(0)); System.out.println(s.charAt(1));
System.out.println("‐‐‐‐‐‐‐‐");
// int indexOf(String str):獲取str在字符串對象中第一次出現的索引,沒有返回‐1
System.out.println(s.indexOf("l")); System.out.println(s.indexOf("owo")); System.out.println(s.indexOf("ak")); System.out.println("‐‐‐‐‐‐‐‐");
// String substring(int start):從start開始截取字符串到字符串結尾
System.out.println(s.substring(0)); System.out.println(s.substring(5));
System.out.println("‐‐‐‐‐‐‐‐");
// String substring(int start,int end):從start到end截取字符串。含start,不含end。 System.out.println(s.substring(0, s.length())); System.out.println(s.substring(3,8));
轉換
1)public char[] toCharArray () :將此字符串轉換爲新的字符數組。
2)public byte[] getBytes () :使用平臺的默認字符集將該 String編碼轉換爲新的字節數組。
3)public String replace (CharSequence target, CharSequence replacement) :將與target匹配的字符串使 用replacement字符串替換
//創建字符串對象
String s = "abcde";
// char[] toCharArray():把字符串轉換爲字符數組
char[] chs = s.toCharArray();
for(int x = 0; x < chs.length; x++){
System.out.println(chs[x]);
}
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
// byte[] getBytes ():把字符串轉換爲字節數組
byte[] bytes = s.getBytes();
for(int x = 0; x < bytes.length; x++) {
System.out.println(bytes[x]);
}
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
// 替換字母it爲大寫IT
String str = "itcast itheima";
String replace = str.replace("it", "IT");
System.out.println(replace); // ITcast ITheima System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
CharSequence 是一個接口,也是一種引用類型。作爲參數類型,可以把String對象傳遞到方法中
分割
1)public String[] split(String regex) :將此字符串按照給定的regex(規則)拆分爲字符串數組。
//創建字符串對象
String s = "aa|bb|cc";
String[] strArray = s.split("|"); // ["aa","bb","cc"]
for(int x = 0; x < strArray.length; x++) {
System.out.println(strArray[x]); // aa bb cc
}
Arrays類
概述
java.util.Arrays 此類包含用來操作數組的各種方法,比如排序和搜索等。其所有方法均爲靜態方法。
Math類
概述
java.lang.Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。類似這樣的工具 類,其所有方法均爲靜態方法,並且不會創建對象。