標籤:Java 基礎 數組
(一)Object類
(1)Object:是類階層的根類.每個類都使用 Object 作為超類(父類)
public int hashCode()返回該對象的雜湊碼值 . 把它理解地址值(不是實際意義的地址值)
public final Class getClass()返回此 Object 的運行時類
Class類中有一個方法: public String getName()以 String 的形式返回此 Class 對象所表示的實體(類、介面、數組類、基本類型或 void)名稱。 傳回值是Class(反射)(2) Object中的一個方法: public String toString(); 回該對象的字串表示 Integer:是int類型的封裝類類型 它裡面提供了一個方法 public static String toHexString(int i):以十六進位表示對字串形式
直接輸出對象名稱:實際執行了Object中的toString(),輸出的全類名@十六進位資料
我現在輸出對象名稱,不想讓toString()直接輸出的是一個地址值(對象的地址值)
就需要重寫Object中的toSring(),一般情況:自動產生即可
(3)public boolean equals(Object obj)指示其他某個對象是否與此對象“相等”。
==:比較的值相等(地址值)
equals:本身屬於Object類中的方法,預設比較的是地址值是否相同
按照正常情況:equals方法底層實際執行的兩個對象在==,比較是地址值;假如:學生的年齡和姓名一致,看成同一個人
在自訂的類中,重寫Object中的equals()方法,比較是兩個對象的成員變數的值是否相同.
自動產生即可!
(4) protected Object clone()建立並返回此對象的一個副本
Object 類的 clone 方法執行特定的複製操作。首先,如果此對象的類不能實現介面 Cloneable,則會拋出 CloneNotSupportedException。
** 注意,所有的數組都被視為實現介面 Cloneable (二)Scanner類**
(1) Scanner類: 簡單文本掃描器。
回想:鍵盤錄入的步驟
1)需要建立鍵盤錄入對象
Scanner sc =new Scanner(System.in);
2)匯入包:import java.util.Scanenr; ctrl+shift+o
3)接收資料
XXX 變數名= sc.nextXXX();
構造方法:
public Scanner(InputStream source): 以輸入資料流的形式錄入資料的
InputStream:位元組輸入資料流:
InputStream in = System.in ; //底層執行返回的是一個位元組輸入資料流(標準輸入資料流) (2)Scanner類的一些常見的方法: XXX 變數名 = 鍵盤錄入對象.nextXXX();
在Scanner類中它提供一個判斷功能:
public boolean hasNextXXX():當前掃描器判斷是否有下一個可以錄入的XXX類型資料
nextXXX();
java.util.InputMismatchException:錄入的資料和接收的資料類型不匹配異常 (3)問題: 鍵盤錄入兩個int類型的資料,分別輸出,沒有問題 鍵盤錄入兩個String類型的資料,分別輸出:沒有問題 先錄入一個String類型的資料,在錄入int類型的資料,沒有問題 先錄入一個int類型的資料,在錄入String類型的資料,有問題,第二個資料是字串類型,又由於錄入下一個資料要"空格"本身是一個字串
b是空格,b的值沒有錄入!
如何解決:重寫建立鍵盤錄入對象
(三)String類
(1)String:表示字串: 字串是常量;它們的值在建立之後不能更改。
String是一種特殊的參考型別:
預設值:null
(2)構造方法:
String():無參構造
String(byte[] bytes) :將位元組數轉換成字串
public String(byte[] bytes, int index,int length):將位元組數組的一部分轉換成字串
public String(char[] value):將字元數組轉化成字串 toCharArray():將字串轉換成字元
public String(char[] value, int index, int count):將字元數組的一部分轉換成字串
public String(String original):將一個字串常量構造成一個字串對象
常用的方法: public int length()返回此字串的長度 (3)String字串的最大的特點: 字串一旦被賦值,其值不能被改變 (4)String類的常用的判斷功能 boolean equals(Object obj):將此字串與指定的對象比較 boolean equalsIgnoreCase(String str)將此 String 與另一個 String 比較,不考慮大小寫 boolean contains(String str):判斷當前大川中是否包含子字串 (重點) boolean startsWith(String str):以當前str字串開頭(重點) boolean endsWith(String str):以當前str字串結尾(重點) boolean isEmpty():判斷字串是否為空白 public String concat(String str):字串的特有功能:拼接功能和+拼接符是一個意思(5) tring類的常用擷取功能:
public int length():擷取字串的長度
public char charAt(int index)返回指定索引處的 字元
public int indexOf(int ch)返回指定字元在此字串中第一次出現處的索引
問題:既然傳入的字元:這裡為什麼用int類型
‘a‘和97 都表示a
public int indexOf(int ch,int fromIndex)返回在此字串中第一次出現指定字元處的索引,從指定的索引開始搜尋。
public int indexOf(String str)返回指定子字串在此字串中第一次出現處的索引
public int indexOf(String str,int fromIndex)回在此字串中第一次出現指定字串處的索引,從指定的索引開始搜尋。
截取功能
public String substring(int beginIndex):從指定位置開始截取,預設截取到末尾,返回新的字串
public String substring(int beginIndex, int endIndex):從指定位置開始到指定位置末尾結束,包前不包含
(6)String的常用轉換功能:
public byte[] getBytes() :將字串轉換為位元組數組
public char[] toCharArray() :將字串轉換成字元數組(重點)
public static String valueOf(int i):將int類型的資料轉換成字串(重點)
這個方法可以將任何類型的資料轉化成String類型
public String toLowerCase():轉成小寫
public String toUpperCase():字串中所有的字元變成大寫
(7)String類型的其他功能:
public String replace(char oldChar,char newChar):將大字串中的某個字元替換掉成新的字元
public String replace(String oldStr,String newStr):將大串中的某個子字串替換掉
public String trim():去除字串兩端空格
(四)StringBuffer
(1) StringBuffer:線程程安全的可變字元序列
線程(多線程中)
線程的安全問題,是痛點(多線程屬於痛點) 多線程------>解決了多安全執行緒問題------>是死結 :生產消費模式(Java中等待喚醒機制)
安全執行緒 --->同步的---->執行效率低
舉例:
銀行的網站,醫學平台...
線程不安全---->不同步---->執行效率高
舉例:
新聞網站,XXX論壇...
(2)tringBuffer的構造方法:
StringBuffer() :無參構造的形式,初始容量16
StringBuffer(int capacity) :指定容量構造一個字串緩衝區
StringBuffer(String str) 構造一個字串緩衝區,並將其內容初始化為指定的字串內容
(3)StringBuffer的擷取功能:
public int length()返回長度
public int capacity()返回當前容量 (如果超過容量,系統自動分配(儲存字串的時候,英文的))
(4)StringBuffer的添加功能
(實際開發中用的多):public StringBuffer append(String/boolean....) :在字串緩衝區中追加資料(在末尾追加),並且返回字串緩衝區本身
public StringBuffer insert(int offset,String str):將當前str字串添加到指定位置處,它返回字串緩衝區本身
(5)StringBuffer的刪除功能:
public StringBuffer deleteCharAt(int index):移除指定位置處的字元..
public StringBuffer delete(int start,int end):移除從指定位置處到end-1處的子字串...
(6)StringBuffer的反轉功能:
public StringBuffer reverse() :將緩衝區中的字元序列反轉取代,返回它(字串沖)本身
(7) StringBuffer的截取功能:
public String substring(int start):從指定位置開始截取,預設截取到末尾,傳回值不在是緩衝區本身,而是一個新的字串
public String substring(int start,int end) :從指定位置開始到指定位置結束截取,包前不包後,傳回值不在是緩衝區本身,而是一個新的字串
(8)StringBuffer的替換功能:
public StringBuffer replace(int start,int end,String str)
從指定位置到指定位置結束,用新的str字串去替換,傳回值是字串緩衝區本身
注意:jdk5以後的特性:自動拆裝箱
int---Interger(是int類型的封裝類類型) 需要將int--->String
Interger--int:自動拆箱
char---Character: 需要char--String
為什麼要類和類之間轉換
要將A類類型轉換成B類型,為了使用B類的功能
有時候,有需要將B類轉換成A類,可能需求需要的是A類型
String和StringBuffer之間的相互轉換
(五)Integer類
(1) Intege是int類型的封裝類類型
Integer提供了靜態功能:
public static String toBinaryString(int i)
public static String toOctalString(int i)
public static String toHexString(int i)
基本類型對應都有一個保證類型,目的就為了將基礎資料型別 (Elementary Data Type)可以String類型之間進行互相轉換
- byte Byte
- short Short
- int Integer (講)
- long Long
- float Float
- double Double
- char character (講)
boolean Boolean
(2)Integer的構造方法:
public Integer(int value)
public Integer(String s)
(3)如何將int轉換為String類型
valueOf(int i) ;
將String轉換為int類型
static int parseInt(String s);
(4)JDK5 以後提供了自動拆裝箱
可以將Integer-->拆箱 int類型
可以將int類型--->裝箱 Integer類型
JDK5 還提供了哪些特性:
泛型,可變參數,增強for迴圈(在集合中)等等..
JDK8特性:
Stream流 --> 運算式
(六)Character類
(1)Character 類在對象中封裝一個基本類型 char 的值。Character 類型的對象包含類型為 char 的單個欄位。
以確定字元的類別(小寫字母,數字,等等),
構造方法:
public Character(char value)
(2)Character類的判斷功能:
public static boolean isDigit(char ch)確定指定字元是否為數字。
public static boolean isLowerCase(int ch): 確定是否是小寫字母字元
public static boolean isUpperCase(int ch):確定是否大寫字母字元
(3) 兩個轉換功能:
public static int toLowerCase(int codePoint)
public static int toUpperCase(int codePoint)
(六)數組進階部分
(1)冒泡排序: 兩兩比較,大的往後放,第一次比較完畢最大值出現在最大索引處....
(2)選擇排序: 用0索引對應的元素依次後面索引對應的元素進行比較, 1索引..... 小的資料往前方法,就可以得到一個排好序的數組...
(3)數組中的元素尋找法(基本尋找法)
折半尋找(二分尋找) :數組一定是有序
分析:
A:定義最小索引和最大索引
B:計算中間索引
C:中間索引對應的元素和需要尋找的元素比較
相等,直接返回中間索引
不相等:
大了,左邊找
max = mid -1 ;
小了,右邊找
min = mid + 1 ;
E:重新計算中間索引 ,回到B繼續尋找
Java基礎(五)