封裝和字符串 - 草稿

犯的錯(cuò)誤:

1.區(qū)分viod(無返回值的意思),不寫就:缺少返回語句

2.記得寫show(顯示的意思),不寫就:什么也不顯示



1.封裝概述

封裝是面向?qū)ο笕筇卣髦唬ǚ庋b,繼承,多態(tài)),是面向?qū)ο缶幊陶Z言對(duì)客觀世界的模擬,客觀世界里成員變量都是隱藏在對(duì)象內(nèi)部的,外界無法直接操作的

2.封裝原則

將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問成員變量private,提供對(duì)應(yīng)的getXxx()/setXxx()方法

3.封裝好處

通過方法來控制成員變量的操作,提高了代碼的安全性

把代碼用方法進(jìn)行封裝,提高了代碼的復(fù)用性

構(gòu)造方法

構(gòu)造方法概述

構(gòu)造方法是一種特殊的方法,作用:創(chuàng)建對(duì)象

格式:

public class 類名{

修飾符 類名(參數(shù)){? }

//修飾符一般采用public

功能:主要是完成對(duì)象數(shù)據(jù)的初始化

構(gòu)造方法注意事項(xiàng)

構(gòu)造方法的創(chuàng)建

當(dāng)一個(gè)類中沒有給任何的構(gòu)造方法,系統(tǒng)會(huì)給一個(gè)默認(rèn)的無參構(gòu)造方法

如果定義了構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的構(gòu)造方法

構(gòu)造方法的重載

如果自定義了帶構(gòu)造方法,還要使用無參數(shù)構(gòu)造方法,就必須再寫一個(gè)無參數(shù)構(gòu)造方法。

推薦的使用方式

無論是否使用,都手工書寫無參數(shù)構(gòu)造方法

標(biāo)準(zhǔn)類制作

成員變量

使用private修飾

構(gòu)造方法

1提供一個(gè)無參數(shù)構(gòu)造方法

2提供一個(gè)帶多個(gè)參數(shù)的構(gòu)造方法

3成員方法

提供每一個(gè)成員變量對(duì)應(yīng)的setXxx()/getXxx()

提供一個(gè)顯示對(duì)象信息的show()

4創(chuàng)建對(duì)象并為其成員變量賦值的兩種方式

無參構(gòu)造方法創(chuàng)建對(duì)象后使用setXxx()賦值

使用帶參構(gòu)造方法直接創(chuàng)建帶走屬性值的對(duì)象

字符串

API

API應(yīng)用程序編程入口

機(jī)器人踢足球,控制機(jī)器人的接口類,這些類中定義了操作機(jī)器人各種動(dòng)作的方法,這種接口類就是機(jī)器人廠商給應(yīng)用程序編程的入口,大家把這些類稱為API

javaAPI指的就是JDK中提供的各種功能的java類

這些類將底層的實(shí)現(xiàn)封裝了起來,我們不需要關(guān)系這些類是如何實(shí)現(xiàn)的,只需要學(xué)習(xí)這些類如何實(shí)現(xiàn),我們可以通過幫助文檔來學(xué)習(xí)這些API如何使用。

打開幫助文檔(CHM格式)—找到索引選項(xiàng)卡中的輸入框—在輸入框中輸入Random—看類在哪個(gè)包下(例:軟件包:java util~java.long是不需要導(dǎo)包的)—看類的描述信息(該類的信息用于生成隨機(jī)數(shù),知道這類的信息是干什么的)—看構(gòu)造方法(有一個(gè)無參一個(gè)帶參)—看成員方法(方法很多,主要看:返回值,方法名,參數(shù),是int就給int,要什么給什么,看描述)

String

String概述

String類在java.lang包下,所以使用的時(shí)候不需要導(dǎo)包

String類代表字符串,java程序中的所有字符串文字(例如“abc”)都被實(shí)現(xiàn)為此類的實(shí)例,也就是說,java程序中所有的雙引號(hào)字符串,都是String類的對(duì)象

字符串的特點(diǎn)

1字符串不可變,它們的值在創(chuàng)建后不能被更改

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

3字符串效果上相當(dāng)于字符數(shù)組(char[])但是底層原理是字節(jié)數(shù)組(byte[])


String構(gòu)造方法

方法名? ? ? ? ? ? ? ? ? 說明

public String()? ? ? 創(chuàng)建空白字符串對(duì)象,不? 含任何內(nèi)容

public String(char[] chs)? ? 根據(jù)字符數(shù)組的內(nèi)容,來創(chuàng)建字符串對(duì)象

public String(byte[]bys)? ? 根據(jù)字節(jié)數(shù)組的內(nèi)容,來創(chuàng)建字符串對(duì)象

String s="abc";? ? 直接賦值的方式創(chuàng)建字符串對(duì)象,內(nèi)容就是abc

String對(duì)象的特點(diǎn)

1。通過new創(chuàng)建的字符串對(duì)象,每一次new都會(huì)申請(qǐng)一個(gè)內(nèi)存空間,雖然內(nèi)容相同,但是地址值不同,

char[]chs={'a','b','c'};

String s1=new String(chs);

String s2=new String(chs);

上面的代碼中,jvm會(huì)首先創(chuàng)建一個(gè)字符數(shù)組,然后每一次new的時(shí)候都會(huì)有一個(gè)新的地址,只不過s1和s2參考的字符串內(nèi)容是相同的

2以""方式給出的字符串,只要字符序列相同,(順序和大小寫),無論在程序代碼中出現(xiàn)幾次,jvm都只會(huì)建立一個(gè)String對(duì)象,并在字符串池中維護(hù)

String s3="abc";

String s4="abc";

在上面的代碼中,針對(duì)第一行代碼,jvm會(huì)建立一個(gè)String對(duì)象放在字符串池中,并給s3參考;第二行則讓s4直接參考字符串中的String對(duì)象,也就是說他們本質(zhì)上是同一個(gè)對(duì)象

字符串的比較

使用==作比較

基本類型:比較的是數(shù)據(jù)值是否相同

引用類型:比較的是地址值是否相同

字符串時(shí)對(duì)象,它比較內(nèi)容是否相同,是通過一個(gè)方法來實(shí)現(xiàn)的,這個(gè)方法叫:equals()

public boolean equals(Object anObject):將此字符串與指定對(duì)象進(jìn)行比較,由于我們比較的是字符串對(duì)象,所以參數(shù)直接傳遞一個(gè)字符串

比較地址用==;s1==s2;

比較內(nèi)容用equals()方法;s1.equals(s2);

通過幫助文檔查看String中的方法

方法名? ? ? ? ? ? ? ? ? ? 說明

public boolean equals(Object anObject)? 比較字符串的內(nèi)容,嚴(yán)格區(qū)分大小寫(用戶名和密碼)

public char charAt(int index)? ? 返回指定索引處的char值

public int length()? ? 返回此字符串的長度


StringBuilder

如果對(duì)字符串進(jìn)行拼接操作,每次拼接都會(huì)構(gòu)建一個(gè)新的spring對(duì)象,既耗時(shí)又浪費(fèi)內(nèi)存空間,而這種操作還不可避免,那么有沒有一種比較好的方法可以解決這個(gè)問題呢?答案是肯定的,我們可以通過將我提供的StringBuilder類來解決這個(gè)問題

StringBuilder是一個(gè)可變的字符串類,我們可以把它看成是一個(gè)容器。

這里的可變指的是StringBuilder對(duì)象中的內(nèi)容是可變得

String和StringBuilder的區(qū)別

String內(nèi)容是不可變的,沒有就創(chuàng)建一個(gè)

StringBuilder內(nèi)容是可變的


StringBuilder構(gòu)造方法

方法名? ? ? ? ? 說明

public StringBuilder()? ? ? 創(chuàng)建一個(gè)空白可變字符串對(duì)象,不含有任何內(nèi)容

public StringBuilder(String str)? ? ? 根據(jù)字符串的內(nèi)容,來創(chuàng)建可變字符串對(duì)象

StringBuilder的添加和反轉(zhuǎn)方法

方法名? ? ? ? ? ? 說明

public StringBuilder append(任意類型)? ? 添加數(shù)據(jù),并返回對(duì)象本身

public StringBuilder reverse()? ? 返回相反的字符序列

StringBuilder和String的相互轉(zhuǎn)換

StringBuilder轉(zhuǎn)換為String

public String toStrong()? 通過toString()就可以實(shí)現(xiàn)把StringBuilder轉(zhuǎn)換為String

String轉(zhuǎn)換為StringBuilder

public StringBuilder(String s)? 通過構(gòu)造方法就可以實(shí)現(xiàn)把String 轉(zhuǎn)換為StringBuilder

通過幫助文峰查看StringBuilder的方法

方法名? ? ? ? 說明

public StringBuilder append(任意類型)? ? ? 添加數(shù)據(jù),并返回對(duì)象

public StringBuilder reverse()? ? 返回相應(yīng)的字符序列

public String toString()? ? 通過toString()就可以實(shí)現(xiàn)把StringBuilder轉(zhuǎn)換為String

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容