天天看點

Java基礎第四篇一、方法的概述?二、面向對象?三、String四、String Builder五、集合

文章目錄

  • 一、方法的概述?
  • 二、面向對象?
  • 三、String
  • 四、String Builder
  • 五、集合

一、方法的概述?

  • 方法:是一段具有獨立功能的代碼塊,不調用不執行;
  • 作用:提高了代碼的複用性;
  • 規則:先定義後調用;
  • 關系:方法與方法之間屬于平級關系,不能嵌套;
  • 調用過程:方法在沒有被調用時在方法區中.class檔案中存儲,當被調用時就會進入棧記憶體中運作,先進後出。
  • 形參:方法定義中的參數
  • 實參:方法調用中的參數

列印m-n之間的所有奇數·

public static void main(String[] args) {
	print(2,11);
}

public static void print(int m, int n) {
	for(int i = m; m <= n; i++) {
		if(i % 2 != 0) {
			System.out.println("奇數為:" + i);
		}
	}	
}
           

同時傳回數組的最大值和最小值

/*
	隻需要将最大值、最小值裝入數組中,傳回即可
*/
public static void main(String[] args) {
	int[] arr = {11,55,33,22,43};
	int[] maxAndMin = getMaxAndMin(arr);
}

public static int[] getMaxAndMin(int[] arr) {
	int max = arr[0];
	for(int i = 1; i < arr.length; i++) {
		if(max < arr[i]) {
			max = arr[i];
		}
	}
	int min = arr[0];
	for(int i = 1; i < arr.length; i++) {
		if(min > arr[i]) {
			min = arr[i];
		}
	}
	int[] maxAndMin = {max, min};
	return maxAndMin;
}
           
  • 重載:同一類中,方法名相同,參數不同
  • 參數不同:個數、順序、類型
  • 方法參數傳遞 —— 基本資料類型:

基本資料類型被方法調用前後不改變資料值

public static void main(String[] args) {
	int number = 110;
	System.out.println(number);	//110
	change(number);
	System.out.println(number);	//110
}

public static void change(int number) {
	//這裡的number雖然被指派為220;但是作用域隻在方法内部
	number = 220;
}
           
  • 方法參數傳遞 —— 引用資料類型

引用資料類型被方法調用前後改變資料值

public static void main(String[] args) {
	int[] arr = {10,11,12};
	System.out.println(arr[0]);	//10
	change(arr);
	System.out.println(arr[0]);	//20
}

public static void change(int[] arr) {
	/*
		這裡的change方法找到第一個數字元素對象在堆記憶體的位置,
	并對其進行了改變,
	*/	
	arr[0] = 20;
}
           

二、面向對象?

  • 對象:指客觀存在的事物,萬物皆對象,
  • 類:對具有相同屬性和行為的事物的抽象,
  • 成員變量:類中方法外,存在堆記憶體中,生命周期随着對象的存在而存在,有預設值。
  • 局部變量:方法中的變量,棧記憶體,生命周期随着方法的調用而存在,沒有初始值。
  • this:本類成員引用,
  • super:父類成員引用,
  • 封裝:隐藏實作細節,僅對外暴漏公共的通路方式。

三、String

  • 鍵盤錄入字元串 nextLine() 和 next() 的差別:

    next():遇到空格,就不再錄入了,結束标記:空格,tab鍵;nextLine():結束标記為回車換行;

  • String類常見的構造方法:

    public String()

    public String(char[] chs)

    public String(String original)

String類構造方法

public static void main(String[] args) {
	/*
		空參構造:列印的字元串對象為空白(對象内容)
	*/
	String s1 = new String();
	System.out.println(s1);	//空白

	/*
		字元數組參數:列印的是字元數組的拼接結果
	*/
	char[] chs = {'v','p','n'};
	String s2 = new String(chs);
	System.out.println(s2);	//vpn

	/*
		字元串對象參數:列印的是字元串對象的内容
	*/
	String s = "qwe";
	String s3 = new String(s);
	System.out.println(s3);	//qwe
}
           
  • 建立字元串對象的差別:

"==" 号比較基本資料類型的資料值,引用資料類型的位址值

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);	//true
char[] chs = {'v','p','n'};
String s3 = new String(chs);
String s4 = new String(chs);
System.out.println(s3 == s4);	//false
           

當使用雙引号建立字元串對象時,系統會檢測字元串常量池中是否有該字元串,有則複用,無則建立。

Java基礎第四篇一、方法的概述?二、面向對象?三、String四、String Builder五、集合

當使用 new 建立字元串對象時,每一次 new 都會申請一個新的記憶體空間,雖然内容相同但是址值指向不同。

Java基礎第四篇一、方法的概述?二、面向對象?三、String四、String Builder五、集合
  • String對象的比較一般使用 equals() 方法比較值,

String類equals()方法的比較

public static void main(String[] args) {
	String username = "admin";
	String password = "123";
	Scanner sc = new Scanner(System.in);
	for(int i = i; i <= 3; i++) {
		System.out.println("請輸入使用者名");
		String s1 = sc.nextLine();
		System.out.println("請輸入密碼");
		String s2 = sc.nextLine();
		if(username.equals(s1) && password.equals(s2)) {
			System.out.println("登入成功");
			breakl
		} else {
			System.out.println("登入失敗");
		}
	}
}
           
  • String字元串周遊

字元串周遊通過調用 charAt(int index) 或者 toCharArray() 兩種方法實作

public static void main(String[] args) {

	private static Scanner sc = new Scanner(System.in);
	// public char charAt(int index)
	get01();
	// public char[] toCharArray()
	get02();
}

public static void get01(){
	System.out.println("請輸入一個字元串:");
	String s1 = sc.nextLine();
	for(int i = 0; i < s1.length(); i++) {
		char c1 = s1.charAt(i);
		System.out.println(c1);
	}
}

public static void get02(){
	System.out.println("請輸入一個字元串:");
	String s2 = sc.nextLine();
	char[] chars = s2.toCharArray();
	for(int i = 0; i < chars.length; i++) {
		System.out.println(chars[i]);
	}
}
           

四、String Builder

  • 概述:String Builder是一個可變的字元序列
  • 作用:提高字元串的操作效率
  • 構造:StringBuilder() 和 StringBuilder(String str)
  • 成員方法:

    public StringBuilder append(任意類型) 添加

    public StringBuilder reverse() 反轉

    public int length()

    public String toString()

StringBuilder 提高字元串拼接效率的原理

Java基礎第四篇一、方法的概述?二、面向對象?三、String四、String Builder五、集合

五、集合

  • 構造方法:ArrayList() 構造一個初始容量為10 的空清單
  • 成員方法:

    boolean add(E e) 将指定的元素添加到此清單的尾部

    void add(int index, E element) 添加到指定位置

    public boolean remove(Object o)

    public E remove(int index)

    public E set(int index, E element)

    public E get(int index)

    public int size()

字元串集合周遊

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("abc");
	list.add("efg");
	list.add("hij");

	for(int i = 0; i < list.size(); i++) {
		String s = list.get(i);
		System.out.println(s);
	}
}
           

集合删除元素,當集合中有元素被删除時,元素索引會重寫排列

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("a");
	list.add("b");
	list.add("c");
	list.add("a");
	list.add("b");
	list.add("a");
	for(int i = 0; i < list.size(); i++) {
		String s = list.get(i);
		if(s.equals("a")) {
			list.remove(i);
			i--;
		}
	}
}