八大基本變量
boolean--1bit
byte--8bit
short--16bit
int--32bit
long--64bit
char--16bit
float--32bit
double--64bit
條件和循環(huán)語句
1.if 語句
語法說明:
if 是該語句中的關(guān)鍵字,后續(xù)緊跟一對小括號瘟则,該對小括號任何時候不能省略,小括號的內(nèi)部是具體的條件玷室,語法上要求該表達(dá)式結(jié)果為boolean 類型零蓉。后續(xù)為功能的代碼,也就是當(dāng)條件成立時執(zhí)行的代碼穷缤,在程序書寫時敌蜂,一般為了直觀的表達(dá)包含關(guān)系,功能代碼一般需要縮進(jìn)津肛。
注意:1.if(條件表達(dá)式)后續(xù)一般不書寫分號
if 語句的執(zhí)行流程為:如果條件表達(dá)式成立章喉,則執(zhí)行功能代碼,如果條件表達(dá)式不成立身坐,則不執(zhí)行后續(xù)的功能代碼秸脱。
if-else 語句
if-else 語句實(shí)現(xiàn)了封閉的條件,在程序中使用的更加常見部蛇。其中else關(guān)鍵字的作用是“否則”摊唇,即條件不成立的情況。
語法說明:其中前面的部分和if 語句一樣涯鲁,else 部分后面是功能的代碼
執(zhí)行順序:如果條件成立巷查,則執(zhí)行if 語句中的功能代碼,否則執(zhí)行else 中的功能代碼抹腿。當(dāng)程序中有多個if 時岛请,else 語句和最近的if 匹配。
switch 語句
switch 關(guān)鍵字的中文意思是開關(guān)警绩、轉(zhuǎn)換的意思崇败,switch 語句在條件語句中特別適合做一組變量相等的判斷房蝉,在結(jié)構(gòu)上比if 語句要清晰很多。
當(dāng)表達(dá)式的值和對應(yīng)case 語句后的值相同時逞盆,既從該位置開始向下執(zhí)行檀蹋,一直執(zhí)行到switch 語句的結(jié)束云芦,在執(zhí)行中俯逾,如果遇到break 語句舅逸,則結(jié)束switch 語句的執(zhí)行。
while 循環(huán):
在執(zhí)行時,如果布爾表達(dá)式的結(jié)果為真姚糊,則循環(huán)中的動作將被執(zhí)行。這將繼續(xù)下去,只要該表達(dá)式的結(jié)果為真。
do...while 循環(huán):
do ... while循環(huán)類似于while循環(huán)筋栋,不同的是一個do ... while循環(huán)是保證至少執(zhí)行一次。
for 循環(huán):
for(初始化步驟;布爾表達(dá)焕梅,循環(huán)條件;循環(huán)變量遞增)
for循環(huán)是一個循環(huán)控制結(jié)構(gòu)挪捕,可以有效地編寫需要執(zhí)行的特定次數(shù)的循環(huán)级零。
知道多少次的任務(wù)是要重復(fù)一個for循環(huán)是有好處的奏纪。
步驟:
初始化步驟首先被執(zhí)行鉴嗤,并且僅一次。這個步驟可聲明和初始化任何循環(huán)控制變量序调。不需要把一個聲明在這里醉锅,只要一個分號出現(xiàn)。
接下來发绢,布爾表達(dá)式求值硬耍。如果是 true,則執(zhí)行循環(huán)體边酒。如果是 false经柴,則循環(huán)體不執(zhí)行和流程控制的跳轉(zhuǎn)到下一個語句過去的for循環(huán)。
之后循環(huán)體在for循環(huán)執(zhí)行時墩朦,控制流程跳轉(zhuǎn)備份到更新語句坯认。該語句允許更新任何循環(huán)控制變量。這個語句可以留空氓涣,只要一個分號出現(xiàn)的布爾表達(dá)式之后牛哺。
布爾表達(dá)式現(xiàn)在再次評估計(jì)算。如果是 true劳吠,循環(huán)執(zhí)行引润,并重復(fù)這個過程(循環(huán)體,然后更新的步驟赴背,然后布爾表達(dá)式)椰拒。之后晶渠,布爾表達(dá)式為 false凰荚,則循環(huán)終止。
foreach:
聲明: 新聲明塊變量褒脯,這是一種與正在訪問數(shù)組中的元素兼容的便瑟。變量將是可利用的塊內(nèi)并且它的值將是相同的作為當(dāng)前的數(shù)組元素。
表達(dá):?這個計(jì)算結(jié)果完成需要循環(huán)數(shù)組番川。表達(dá)式可以是一個數(shù)組變量或方法調(diào)用返回一個數(shù)組到涂。
break關(guān)鍵字:
關(guān)鍵字break是用來停止整個循環(huán)脊框。 break關(guān)鍵字必須使用任何循環(huán)或switch語句中。
關(guān)鍵字break將停止最內(nèi)層循環(huán)的執(zhí)行践啄,并開始執(zhí)行的下一行代碼的程序段后浇雹。
continue 關(guān)鍵字:
continue關(guān)鍵字可以在任一環(huán)的控制結(jié)構(gòu)可以使用。它使循環(huán)立即跳轉(zhuǎn)到循環(huán)的下一次迭代.
在for循環(huán)中屿讽,continue關(guān)鍵字會導(dǎo)致流程控制的立即跳轉(zhuǎn)到更新語句昭灵。
在一個while循環(huán)或do/while循環(huán),流控制的立即跳轉(zhuǎn)到布爾表達(dá)式伐谈。
格式化輸出
1.DecimalFormat
DecimalFormat是NumberFormat的一個具體子類烂完,用于格式化十進(jìn)制數(shù)字
符號含義
0 一個數(shù)字,若不存在诵棵,用0填充
# 一個數(shù)字抠蚣,不包括 0
. 小數(shù)的分隔符的占位符
, 分組分隔符的占位符?如:#,# 那么10會變?yōu)?,0
; 分隔格式。
- 缺省負(fù)數(shù)前綴履澳。
% 乘以 100 和作為百分比顯示
? 乘以 1000 和作為千進(jìn)制貨幣符顯示嘶窄;用貨幣符號代替;如果雙寫奇昙,用
國際貨幣符號代替护侮。如果出現(xiàn)在一個模式中,用貨幣十進(jìn)制分隔符代
替十進(jìn)制分隔符储耐。
X 前綴或后綴中使用的任何其它字符羊初,用來引用前綴或后綴中的特殊字符。
forExamble
DecimalFormat df1 = new DecimalFormat("0.0");
DecimalFormat df2 = new DecimalFormat("#.#");
DecimalFormat df3 = new DecimalFormat("000.000");
DecimalFormat df4 = new DecimalFormat("###.###");
System.out.println(df1.format(12.34));
System.out.println(df2.format(12.34));
System.out.println(df3.format(12.34));
System.out.println(df4.format(12.34));
結(jié)果:
12.3
12.3
012.340
12.34
2.printf
參數(shù) 輸出格式:指定數(shù)據(jù)輸出時的格式什湘;
輸出字符串:指定要輸出的數(shù)據(jù)长赞。
格式替代符
%b 相對應(yīng)的參數(shù)被視為含有要被處理的轉(zhuǎn)義序列之字符串。
%c ASCII字符闽撤。顯示相對應(yīng)參數(shù)的第一個字符
%d, %i 十進(jìn)制整數(shù)
%e, %E, %f 浮點(diǎn)格式
%g %e或%f轉(zhuǎn)換得哆,看哪一個較短,則刪除結(jié)尾的零
%G %E或%f轉(zhuǎn)換哟旗,看哪一個較短贩据,則刪除結(jié)尾的零
%o 不帶正負(fù)號的八進(jìn)制值 %s 字符串
%u 不帶正負(fù)號的十進(jìn)制值
%x 不帶正負(fù)號的十六進(jìn)制值,使用a至f表示10至15
%X 不帶正負(fù)號的十六進(jìn)制值闸餐,使用A至F表示10至15
常用類型
1.Arrays
Arrays靜態(tài)方法:
asList(T...?a) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回一個列表
binarySearch() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 二分查找饱亮, ? ? ? ?基本類型都可以
copyOf ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?復(fù)制數(shù)組
copyOfRange() ? ? ? ? ? ? ? ? ? ? ?復(fù)制特定范圍的數(shù)組
equals() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比較是否相等
fill() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?填充數(shù)組
parallelSort() ? ? ? ? ? ? ? ? ? ? ? ? ?指定范圍的排序,并行計(jì)算舍沙,速度較快
sort() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 排序近上,串行計(jì)算
toString ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 轉(zhuǎn)換為字符串
附:數(shù)組聲明的三種方式
1) int[] nus={1,2,3,5};
2) String[] names=new String[3];
3)date[] dates=new Date[] {new Date(),new Date()};
String
charAt(int index)返回字符串中第index個字符;
length()返回字符串的長度拂铡;
?indexOf(String str)返回字符串中第一次出現(xiàn)str的位置壹无;
?indexOf(String str,int fromIndex)返回字符串從fromIndex開始第一次出現(xiàn)str的位置葱绒;
?equalsIgnoreCase(String another)比較字符串與another是否一樣(忽略大小寫);
replace(char oldchar,char newChar)在字符串中用newChar字符替換oldChar字符
startsWith(String prefix)判斷字符串是否以prefix字符串開頭斗锭;
endsWith(String suffix)判斷一個字符串是否以suffix字符串結(jié)尾地淀;
?toUpperCase()返回一個字符串為該字符串的大寫形式;
public String toLowerCase()返回一個字符串為該字符串的小寫形式
substring(int beginIndex)返回該字符串從beginIndex開始到結(jié)尾的子字符串岖是;
?substring(int beginIndex,int endIndex)返回該字符串從beginIndex開始到endsIndex結(jié)尾的子字符串
?trim()返回該字符串去掉開頭和結(jié)尾空格后的字符串
split(String regex)將一個字符串按照指定的分隔符分隔骚秦,返回分隔后的字符串?dāng)?shù)組
StringBuffer和StringBuilderh和String
String:字符串常量
StringBuffer:字符創(chuàng)變量,線程安全的
StringBuilder:字符創(chuàng)變量璧微,線程非安全的
三者在執(zhí)行速度方面的比較:StringBuilder >? StringBuffer? >? String
String類型是不可改變的對象了作箍,由于這種機(jī)制,每當(dāng)用String操作字符串時前硫,實(shí)際上是在不斷的創(chuàng)建新的對象胞得,而原來的對象就會變?yōu)槔唬牵没厥盏簦瑥亩鴮?dǎo)致效率低屹电。
而StringBuffer與StringBuilder就不一樣了阶剑,他們是字符串變量,是可改變的對象危号,每當(dāng)我們用它們對字符串做操作時牧愁,實(shí)際上是在一個對象上操作的,這樣就不會像String一樣創(chuàng)建一些而外的對象進(jìn)行操作了外莲,當(dāng)然速度就快了猪半。
當(dāng)我們在字符串緩沖去被多個線程使用是,JVM不能保證StringBuilder的操作是安全的偷线,雖然他的速度最快磨确,但是可以保證StringBuffer是可以正確操作的。當(dāng)然大多數(shù)情況下就是我們是在單線程下進(jìn)行的操作声邦,所以大多數(shù)情況下是建議用StringBuilder而不用StringBuffer的乏奥,就是速度的原因。
對于三者使用的總結(jié):
?1.如果要操作少量的數(shù)據(jù)用 = String
2.單線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) = StringBuilder
3.多線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) = StringBuffer