犯的錯(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