Java Day08

第一章 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);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章