第一章 String類
1.1 String類概述
- 概述:java.lang.String 類代表字符串,Java程序中所有的字符串文字都可以被看作是實現此類的實例。類String中包括用於檢查哥哥字符串的方法。
- 特點
- 字符串不變:字符串的值在創建後不改變。
- 因爲String對象是不可變的,所以它們可以被共享。
- “abc” 等效於 char[] data = {'a', 'b', 'c'}
1.2 使用步驟
- 查看類
- 查看構造方法
1.3 常用方法
- 判斷功能的方法:equals、equalsIgnore
package cn.itcast.day08.demo02;
/*
* ==是進行對象的地址值比較,如果確實需要字符串的內容比較,可以使用兩個方法:
* public boolean equals(Object obj),參數可以是任何對象,只有參數是一個字符串並且內容相同的纔會返回true,否則返回false
* 注意事項:
* 1、任何對象都能用Object進行接收
* 2、equals方法具有對稱性,也就是a。equals(b)和b.equals(a)效果一樣
* 3、如果比較雙放一個常量一個變量,推薦吧常量自付串寫在前面。推薦:"abc".equals(str),不推薦 str.equals("abc"),因爲如果str爲null的話,後者會報空指針異常的錯誤。
*
* public boolean equalsIgnoreCase(String str),忽略大小寫,進行內容的比較。只有英文字母區分大小寫其他都不區分
*/
public class Demo01StringEquals {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "Hello";
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray);
System.out.println(str1.equals(str2)); // true
System.out.println(str2.equals(str3)); // true
System.out.println(str3.equals("Hello")); // true
System.out.println("Hello".equals(str1)); // true
String str5 = null;
System.out.println("abc".equals(str5));
// System.out.println(str5.equals("abc")); // 不推薦,報錯,空指針異常
System.out.println("================================");
String strA = "Java";
String strB = "java";
System.out.println(strA.equals(strB)); // 嚴格區分大小寫,false
System.out.println(strA.equalsIgnoreCase(strB)); // 忽略大小寫,返回true
}
}
- 獲取功能方法:length、concat、charAt、indexOf、substring
package cn.itcast.day08.demo02;
/*
*
* public int length():獲取字符串的長度
* public String concat(String str),將當前字符串和參數字符串拼接成爲新的字符串返回
* public char charAt(int index):獲取指定索引爲止的單個字符
* public int indexOf(String str):查找參數字符串在本字符串當中首次出現的索引爲止,如果沒有返回-1
*
* */
public class Demo02StringGet {
public static void main(String[] args) {
// 獲取字符串的長度
int length = "hfskdhfsufhskufsi".length();
System.out.println("字符串的長度是:" + length);
System.out.println("========================");
// 拼接字符串
String str1 = "Hello";
String str2 = "World";
String str3 = str1.concat(str2);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3); // HelloWorld,新的字符串
System.out.println("========================");
// 獲取指定索引爲止的單個字符
char ch = "Hello".charAt(1);
System.out.println("在1號索引位置的字符串是:" + ch);
System.out.println("========================");
// 查找參數字符串在大字符串中出現的第一次索引位置
// 如果沒有返回值是-1
String original = "HelloWorld";
int index = original.indexOf("llo");
System.out.println(index);
System.out.println("HelloWorld".indexOf("in"));
}
}
package cn.itcast.day08.demo02;
/*
* public String substring(int index),截取從參數爲止一直到字符串末尾,返回新字符串
* public String substring(int begin, int end):截取一個範圍,從begin開始到end結束,中間的字符串。注意:左閉右開
*
* */
public class Demo03Substring {
public static void main(String[] args) {
String str1 = "HelloWorld";
String str2 = str1.substring(5);
System.out.println(str1);
System.out.println(str2);
System.out.println("========================");
String str3 = str1.substring(4, 7);
System.out.println(str3);
System.out.println("========================");
String strA = "Hello";
System.out.println(strA);
strA = "Java";
System.out.println(strA);
}
}
- 轉換功能的方法:toCharArray、getBytes、replace
package cn.itcast.day08.demo02;
/*
* String當中與轉換相關的常用方法有:
* public char[] toCharArray():將當前字符串拆分成爲字符數組
* public byte[] getBytes():獲取當前字符串的底層字節數組
* public String replace(CharSequence oldString, CharSequence newString):將所有出現的老字符串替換成爲新的字符串,返回替換之後的結果
* 備註:CharSequence意思就是可以接受字符串類型
* */
public class Demo04StringConvert {
public static void main(String[] args) {
char[] chars = "Hello".toCharArray();
System.out.println(chars[0]); // H
System.out.println(chars.length);
System.out.println("========================");
// 轉換成爲字節數組
byte[] bytes = "abc".getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
String str1 = "How do you do?";
String str2 = str1.replace( "o", "*");
System.out.println(str1);
System.out.println(str2);
String lang1 = "會不會玩啊,你大爺的,你大爺的,你大爺的";
String lang2 = lang1.replace("你大爺的", "****");
System.out.println(lang2);
}
}
- 分割功能方法:split
package cn.itcast.day08.demo02;
/*
* 分割字符串的方法:
* public String[] split(String regex);按照參數的規則,將字符串切分成爲若干部分
* 注意事項:split方法的參數其實是一個正則表達式,如果要使用"."來分割一定要使用"\\."
*
* */
public class Demo05StringSplit {
public static void main(String[] args) {
String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split(",");
for (int i = 0; i < array1.length; i++) {
System.out.println(array1[i]);
}
System.out.println("======================");
String str2 = "aaa bbb ccc";
String[] array2 = str2.split(" ");
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
System.out.println("======================");
String str3 = "xxx.yyy.zzz";
String[] array3 = str3.split(".");
System.out.println(array3.length); // 0
for (int i = 0; i < array3.length; i++) {
System.out.println(array3[i]);
}
}
}
1.4 練習
package cn.itcast.day08.demo02;
/*
* 題目:
* 定義一個方法,把數組{1, 2, 3}按照指定格式拼接成一個字符串,格式參照如下:[word1#word2#word3]
*
* */
public class Demo06StringPactice {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4};
String str = stringConcat(array);
System.out.println(str);
}
public static String stringConcat(int[] array) {
String str = "[";
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
str = str.concat("word" + (array.length - 1) + "]");
break;
} else {
str = str.concat("word" + i + "#");
}
}
return str;
}
}
第二章 static關鍵字
2.1 概述
- 概述:static關鍵字可以用來修飾成員變量和成員方法,被修飾的成員是屬於類的,而不是蛋蛋是屬於某個對象的,也就是說,既然屬於類就可以不靠某個對象來調用。
2.2 定義和使用格式
- 類變量:當static修飾成員變量時,該變量爲類變量,該類的每個對象都共享同一個類變量的值,任何對象都可以更改該類變量的值,但也可以在不創建該類的對象的情況下對類變量來使用了。
- 格式:
static 數據類型 變量名;
- 舉例
package cn.itcast.day08.demo03;
public class Student {
private int id;
private String name;
private int age;
static String room;
private static int idCounter = 0; // 學號計數器,每當new了一個新對象的時候,計數器++
public Student() {
idCounter++;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
this.id = ++idCounter;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
package cn.itcast.day08.demo03;
/*
* 如果一個成員變量使用了static關鍵字,那麼這個變量不在屬於對象自己,而是屬於所在的類,多個對象共享同一份數據
* */
public class Demo01StaticField {
public static void main(String[] args) {
Student one = new Student("郭靖", 19);
one.room = "101教室";
Student two = new Student("黃蓉",16);
System.out.println("姓名:" + one.getName()
+ ",年齡" + one.getAge() + ",教室:" + one.room
+ ",學號" + one.getId());
System.out.println("姓名:" + two.getName()
+ ",年齡" + two.getAge() + ",教室:" + two.room
+ ",學號" + two.getId());
}
}
- 靜態方法:當static修飾成員方法時,該方法成爲類方法,習慣稱爲靜態方法。靜態方法在聲明中有static,建議使用類名來調用,而不需要創建類的對象,調用方式非常簡單。
- 格式:
修飾符 static 返回值類型 方法名 (參數列表) {
// 執行語句
}
- 調用格式:被static修飾的成員可以並且建議通過類名直接訪問,雖然也可以通過對象名訪問靜態成員,原因即多個對象均屬於一個類,共享使用同一個靜態成員,但是不建議,會出現警告信息。
// 訪問類變量
類名.類變量名;
// 調用靜態方法
類名.靜態方法名(參數);
2.3 靜態原理圖
static修飾的內容:
- 是隨着類的加載而加載的,且只加載一次。
- 存儲於一塊固定的內存區域(靜態區),所以可以直接被類名調用。
- 他優先於對象存在,所以,可以被所有對象共享。
2.4 靜態代碼塊
- 靜態代碼塊:定義在成員位置,使用static修飾的代碼塊。
- 位置:類中方法外。
- 執行:隨着類的加載而執行且執行一次,優先於main方法和構造方法的執行。
- 作用:給類變量進行初始化賦值。
- 格式
public class ClassName {
static {
// 執行語句
}
}
package cn.itcast.day08.demo03;
/*
* 靜態代碼塊的格式是:
* public class 類名稱 {
* static {
*
* }
* }
*
* 特點:當第一次用到本類是,靜態代碼塊執行唯一一次。
* 靜態內容總是優先於非靜態,靜態代碼塊比構造方法先執行。
* 靜態代碼塊的典型用途:
* 用來一次性地對靜態成員變量進行賦值。
* */
public class Demo04Static {
public static void main(String[] args) {
Person one = new Person();
Person two = new Person();
}
}
第三章 Array類
3.1 概述
此類包含用來操作數組的各種方法,比如排序和搜索等,其所有方法均爲靜態方法,調用起來非常簡單。
3.2 操作數組的方法
- sort:對指定的int型數組按數字升序進行排序。
- toString:返回指定數組內容的字符串表示形式。
package cn.itcast.day08.demo04;
/*
* java.util.Array是一個與數組相關的工具類,裏面提供了大量靜態方法,用來事項數組常見的操作。
*
* public static String toString(數組),將參數數組變成字符串。
* public static void sort(數組),按照默認升序(從小到大)對數組的元素進行排序
* 備註:
* 1、如果是數值,按照數值大小排序
* 2、如果是字符串,sort默認按照字母升序
* 3、如果是自定義的類型,那麼這個自定義的類需要有Comparable或者Comparator接口的支持。
*
* */
import java.util.Arrays;
public class Demo01Arrays {
public static void main(String[] args) {
int[] intArray = {10, 20, 30};
String intStr = Arrays.toString(intArray);
System.out.println(intStr);
int[] array1 = {2, 1, 4, 5, 3, 4, 9, 2, 10, 90, 22};
Arrays.sort(array1);
System.out.println(Arrays.toString(array1));
String[] array2 = {"bbb", "ccc", "aaa"};
Arrays.sort(array2);
System.out.println(Arrays.toString(array2));
}
}
3.3 練習
package cn.itcast.day08.demo04;
/*
* 題目:使用Arrays相關的API,將一個隨機字符串中的所有字符升序排列,並倒敘打印
* */
import java.util.Arrays;
public class Demo02ArraysPactise {
public static void main(String[] args) {
String str = "fjlksanisahvavniwrowehfoah";
char[] strArrays = str.toCharArray();
Arrays.sort(strArrays);
System.out.println(Arrays.toString(strArrays));
for (int i = 0; i < strArrays.length; i++) {
System.out.print(strArrays[(strArrays.length - i - 1)]);
}
}
}
第四章 Math類
4.1 概述
類包含用於執行基本數學運算的方法。
4.2 基本運算的方法
- abs:返回double值的絕對值。
- ceil:返回大於等於參數的最小的整數。
- floor:返回小於等於參數最大的整數。
- round:返回最接近參數的long。
package cn.itcast.day08.demo04;
/*
* java.util.Math類是數學相關的工具類,裏面提供了大量的靜態方法,完成與數學運算相關的操作
* public static double abs(double num),獲取絕對值。
* public static double ceil(double num),向上取整。
* public static double floor(),向下取整
* public static long round(double num),四捨五入
*
* 常量值:Math.PI
*
* */
public class Demo03Math {
public static void main(String[] args) {
// 獲取絕對值
System.out.println(Math.abs(3.14));
System.out.println(Math.abs(-1.2));
System.out.println("==================");
// 向上取整
System.out.println(Math.ceil(3.9));
System.out.println(Math.ceil(4.0));
System.out.println("==================");
// 向下取整
System.out.println(Math.floor(3.2));
System.out.println("==================");
// 四捨五入
System.out.println(Math.round(20.4));
}
}
4.3 練習
package cn.itcast.day08.demo04;
/*
* 題目:
* 計算在-10.8到5.9之間,絕對值大於6或者小於2.1整數有幾個?
*
* */
public class Demo04MathPractise {
public static void main(String[] args) {
int count = 0;
double min = -10.8;
double max = 5.9;
for (int i = (int)min; i < max; i++) {
if (Math.abs(Math.floor(i)) > 6.0 || Math.abs(Math.floor(i)) < 2.1) {
count++;
}
}
System.out.println(count);
}
}