天天看點

類與對象(二)

将對象用作參數

任何資料類型其實都可以作為參數傳遞給方法;

如果是引用類型的變量作為參數傳遞,就是對象傳遞(本質是對象的位址傳遞)

參數的引用傳遞

方法調用時傳參,本質上都是将實參的副本值取出來,傳給形參

如果是基本資料類型,如:

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是線程非安全的(不能同步通路)