将對象用作參數
任何資料類型其實都可以作為參數傳遞給方法;
如果是引用類型的變量作為參數傳遞,就是對象傳遞(本質是對象的位址傳遞)
參數的引用傳遞
方法調用時傳參,本質上都是将實參的副本值取出來,傳給形參
如果是基本資料類型,如:
int a = 10;
method1(a);
//調用mathod1(a)方法時,就是取出形參a的副本值10傳給方法,即method1(10);
如果是引用資料類型,如:
Demo dm = new Demo();
method2(dm);
//調用method2(dm)方法時,就是取出形參dm的副本值位址值傳遞給方法,形參就接收這個值
不同的是:
引用類型傳值傳的是位址,實參變量和形參變量的值都是相同的位址值,指向同一個對象
如果使用形參改變了所指對象的屬性的内容的話,那麼實參所指的屬性内容也随之改變,因為他們都指向同一個對象
包裝類
基本類型 | |
---|---|
int | Integer |
short | Short |
long | Long |
char | Character |
double | Double |
float | Float |
boolean | Boolean |
byte | Byte |
裝箱操作
将基本資料類型變成包裝類,叫裝箱,即包裝類的構造方法
拆箱操作
将包裝類變成基本資料類型,叫拆箱,即各個類的valueOf()方法
整數的緩存
- 适用的空間為-128 ~ 127
- 使用構造器建立的Integer對象不能被緩存
String類
字元串是一系列的字元組成的序列
字元串與字元數組相關的方法有:
public String(char[] value)
public String(char[] value int offset, int count)
示例:
char[] charArray = {'a','b','c'};
String str = new String(charArray,1,2);
public char charAt(int index)
示例:
String str = "helloWorld";
char c = str.charAt(5);
public char[] toCharArray()
示例:
String str = "helloWorld";
char[] charArray = str.toCharArray();
聲明字元串:
String s = "Hello World";
String ss = new String("Hello World");
字元串的長度:
string.length()
字元串的内容比較:
str.equals(str1)
str.equalsIgnoreCase(str1)
str.toUpperCase()
str.toLowerCase()
字元串的連接配接:
在拼接時會将其他被拼接的類型自動轉換為字元串類型
str.concat(str1);
字元串的提取和查詢:
public int indexOf(int ch | String value):根據某字元或字元串查找其第一次出現位置(索引)
如:
String str = "HelloWorld";
int index = str.indexOf("W");
public int indexLastOf(int ch | String value):根據某字元或字元串查找其最後一次出現位置(索引)
public String substring(int index):根據指定索引截取子字元串
如:
String str = "Hello World";
String substr = str.substring(6);//World
String subStr = str.substring(str.indexOf("W"));//World
public String substring(int index, int endIndex):根據指定索引及結束索引截取子字元串
如:
String str = "Hello World";
String substr = str.substring(0,5);//Hello
String subStr = str.substring(str.indexOf("H"), 5);//Hello
public String trim():去掉字元串的前後空格
如:
String str = " Hello World ";
str.trim();//Hello World
字元串的分割:
str.split();
StringBuffer和StringBuilder
使用“+”作字元串拼接時,會産生新的字元串對象,若進行大量的字元串拼接,效率極低
若使用StringBuffer或StringBuilder進行字元串拼接時,不會産生新的對象,使用他們進行大量字元串拼接時,效率極高
(多線程使用)StringBuffer是線程安全的(可以同步通路)- 有性能損耗
(單線程使用)StringBuilder是線程非安全的(不能同步通路)