1. 程式人生 > 其它 >java封裝、String類

java封裝、String類

1. 類和物件

1.1 類和物件的理解

類和物件的關係

類:類是對現實生活中一類具有共同屬性和行為的事物的抽象

物件:是能夠看得到摸的著的真實存在的實體

簡單理解:類是物件的資料型別,類是具有相同屬性和行為的一組物件的集合

1.2 類的定義

類的組成是由屬性和行為兩部分組成

屬性:在類中通過成員變數來體現(類中方法外的變數)行為:在類中通過成員方法來體現(和前面的方法相比去掉static關鍵字即可)

1.3 成員變數和區域性變數

1.3.1 成員變數和區域性變數的區別

(1)類中位置不同:

成員變數(類中方法外)

區域性變數(方法內部或方法宣告上)

(2)記憶體中位置不同:

成員變數(堆記憶體)區域性變數(棧記憶體)

(3)生命週期不同:

成員變數(隨著物件的存在而存在,隨著物件的消失而消失)區域性變數(隨著方法的呼叫而存在,醉著方法的呼叫完畢而消失)

(4)初始化值不同:成員變數(有預設初始化值)區域性變數(沒有預設初始化值,必須先定義,賦值才能使用)

2. 封裝

2.1 private關鍵字

private是一個修飾符,可以用來修飾成員(成員變數,成員方法)

(1)被private修飾的成員,只能在本類進行訪問。針對private修飾的成員變數,如果需要被其他類使用,提供public 修飾的get/set方法。

2.2 this關鍵字

this修飾的變數指代成員變數,其主要作用是(區分區域性變數和成員變數的重名問題)

public class Student {

private String name;

public void setName(String name) {

this.name = name;

}

}

2.3 封裝思想

(1)封裝概述 是面向物件三大特徵之一(封裝,繼承,多型) 是面向物件程式語言對客觀世界的模擬,客觀世界裡成員變數都是隱藏在物件內部的,外界是無法直接操作的

(2) 封裝原則 將類的某些資訊隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏資訊的操作和訪問 成員變數private,提供對應的getXxx()/setXxx()方法

(3)封裝好處 通過方法來控制成員變數的操作,提高了程式碼的安全性 把程式碼用方法進行封裝,提高了程式碼的複用性

3. 構造方法

3.1 構造方法的注意事項

(1) 構造方法的建立

如果沒有定義構造方法,系統將給出一個預設的無引數構造方法 如果定義了構造方法,系統將不再提供預設的構造方法

(2)構造方法的過載

如果自定義了帶參構造方法,還要使用無引數構造方法,就必須再寫一個無引數構造方法

(3)推薦的使用方式

無論是否使用,都手工書寫無引數構造方法

(4)重要功能

可以使用帶參構造,為成員變數進行初始化

4. API

4.1 API概述

API (Application Programming Interface) :應用程式程式設計介面

java中的API指的就是 JDK 中提供的各種功能的 Java類,這些類將底層的實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用即可。

5 String

5.1 String類特點

字串不可變,它們的值在建立後不能被更改

雖然 String 的值是不可變的,但是它們可以被共享

字串效果上相當於字元陣列( char[] ),但是底層原理是位元組陣列( byte[] )

5.2建立字串物件兩種方式的區別(1)通過構造方法建立通過 new 建立的字串物件,每一次 new 都會申請一個記憶體空間,雖然內容相同,但是地址值不同

(2)直接賦值方式建立以“”方式給出的字串,只要字元序列相同(順序和大小寫),無論在程式程式碼中出現幾次,JVM 都只會建立一個 String 物件,並在字串池中維護

例如:char [] ch={‘a’,’b’};

String str1=new String(ch);

String str2=new String(ch);

String str3=”abc”;

String str4=”abc”;

棧記憶體

堆記憶體

char[] ch ---001

001--

0

‘a’

1

‘b’

String str1 --002

002--new String—ref 001

String str2 --003

003--new String—ref 001

String str3--004

常量池

004 -”abc”

String str4--004

5.3字串的比較【理解】

(1 )使用==

基本型別:比較數值

引用型別:比較的是物件地址值

(2)equals方法的作用

比較物件的內容是否相同

注意:String是物件,比較內容用equals

5.3字串拼接

5.3.1String拼接

每次拼接都會新建一個string物件,耗時浪費空間。

String s=”hello”;

S+=”world”;

棧記憶體

堆記憶體

main()

String s

常量池

001 hello

002 world

003 helloworld

5.3.2 StringBuilder類概述

StringBuilder是一個可變的字串類,這裡的可變指的是 StringBuilder 物件中的內容是可變的.

StringBuilder是非同步,運行於多執行緒中就需要使用著單獨同步處理,但是速度就比StringBuffer快多了;

StringBuffer是執行緒安全的。