八大基本變量
boolean--1bit
byte--8bit
short--16bit
int--32bit
long--64bit
char--16bit
float--32bit
double--64bit
條件和循環(huán)語句
1.if 語句
語法說明:
if 是該語句中的關(guān)鍵字,后續(xù)緊跟一對(duì)小括號(hào),該對(duì)小括號(hào)任何時(shí)候不能省略,小括號(hào)的內(nèi)部是具體的條件,語法上要求該表達(dá)式結(jié)果為boolean 類型。后續(xù)為功能的代碼,也就是當(dāng)條件成立時(shí)執(zhí)行的代碼,在程序書寫時(shí),一般為了直觀的表達(dá)包含關(guān)系,功能代碼一般需要縮進(jìn)。
注意:1.if(條件表達(dá)式)后續(xù)一般不書寫分號(hào)
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)程序中有多個(gè)if 時(shí),else 語句和最近的if 匹配。
switch 語句
switch 關(guān)鍵字的中文意思是開關(guān)、轉(zhuǎn)換的意思,switch 語句在條件語句中特別適合做一組變量相等的判斷,在結(jié)構(gòu)上比if 語句要清晰很多。
當(dāng)表達(dá)式的值和對(duì)應(yīng)case 語句后的值相同時(shí),既從該位置開始向下執(zhí)行,一直執(zhí)行到switch 語句的結(jié)束,在執(zhí)行中,如果遇到break 語句,則結(jié)束switch 語句的執(zhí)行。
while 循環(huán):
在執(zhí)行時(shí),如果布爾表達(dá)式的結(jié)果為真,則循環(huán)中的動(dòng)作將被執(zhí)行。這將繼續(xù)下去,只要該表達(dá)式的結(jié)果為真。
do...while 循環(huán):
do ... while循環(huán)類似于while循環(huán),不同的是一個(gè)do ... while循環(huán)是保證至少執(zhí)行一次。
for 循環(huán):
for(初始化步驟;布爾表達(dá),循環(huán)條件;循環(huán)變量遞增)
for循環(huán)是一個(gè)循環(huán)控制結(jié)構(gòu),可以有效地編寫需要執(zhí)行的特定次數(shù)的循環(huán)。
知道多少次的任務(wù)是要重復(fù)一個(gè)for循環(huán)是有好處的。
步驟:
初始化步驟首先被執(zhí)行,并且僅一次。這個(gè)步驟可聲明和初始化任何循環(huán)控制變量。不需要把一個(gè)聲明在這里,只要一個(gè)分號(hào)出現(xiàn)。
接下來,布爾表達(dá)式求值。如果是 true,則執(zhí)行循環(huán)體。如果是 false,則循環(huán)體不執(zhí)行和流程控制的跳轉(zhuǎn)到下一個(gè)語句過去的for循環(huán)。
之后循環(huán)體在for循環(huán)執(zhí)行時(shí),控制流程跳轉(zhuǎn)備份到更新語句。該語句允許更新任何循環(huán)控制變量。這個(gè)語句可以留空,只要一個(gè)分號(hào)出現(xiàn)的布爾表達(dá)式之后。
布爾表達(dá)式現(xiàn)在再次評(píng)估計(jì)算。如果是 true,循環(huán)執(zhí)行,并重復(fù)這個(gè)過程(循環(huán)體,然后更新的步驟,然后布爾表達(dá)式)。之后,布爾表達(dá)式為 false,則循環(huán)終止。
foreach:
聲明: 新聲明塊變量,這是一種與正在訪問數(shù)組中的元素兼容的。變量將是可利用的塊內(nèi)并且它的值將是相同的作為當(dāng)前的數(shù)組元素。
表達(dá):?這個(gè)計(jì)算結(jié)果完成需要循環(huán)數(shù)組。表達(dá)式可以是一個(gè)數(shù)組變量或方法調(diào)用返回一個(gè)數(shù)組。
break關(guān)鍵字:
關(guān)鍵字break是用來停止整個(gè)循環(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)鍵字會(huì)導(dǎo)致流程控制的立即跳轉(zhuǎn)到更新語句。
在一個(gè)while循環(huán)或do/while循環(huán),流控制的立即跳轉(zhuǎn)到布爾表達(dá)式。
格式化輸出
1.DecimalFormat
DecimalFormat是NumberFormat的一個(gè)具體子類,用于格式化十進(jìn)制數(shù)字
符號(hào)含義
0 一個(gè)數(shù)字,若不存在,用0填充
# 一個(gè)數(shù)字,不包括 0
. 小數(shù)的分隔符的占位符
, 分組分隔符的占位符?如:#,# 那么10會(huì)變?yōu)?,0
; 分隔格式。
- 缺省負(fù)數(shù)前綴。
% 乘以 100 和作為百分比顯示
? 乘以 1000 和作為千進(jìn)制貨幣符顯示;用貨幣符號(hào)代替;如果雙寫,用
國際貨幣符號(hào)代替。如果出現(xiàn)在一個(gè)模式中,用貨幣十進(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í)的格式;
輸出字符串:指定要輸出的數(shù)據(jù)。
格式替代符
%b 相對(duì)應(yīng)的參數(shù)被視為含有要被處理的轉(zhuǎn)義序列之字符串。
%c ASCII字符。顯示相對(duì)應(yīng)參數(shù)的第一個(gè)字符
%d, %i 十進(jìn)制整數(shù)
%e, %E, %f 浮點(diǎn)格式
%g %e或%f轉(zhuǎn)換,看哪一個(gè)較短,則刪除結(jié)尾的零
%G %E或%f轉(zhuǎn)換,看哪一個(gè)較短,則刪除結(jié)尾的零
%o 不帶正負(fù)號(hào)的八進(jìn)制值 %s 字符串
%u 不帶正負(fù)號(hào)的十進(jìn)制值
%x 不帶正負(fù)號(hào)的十六進(jìn)制值,使用a至f表示10至15
%X 不帶正負(fù)號(hào)的十六進(jìn)制值,使用A至F表示10至15
常用類型
1.Arrays
Arrays靜態(tài)方法:
asList(T...?a) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回一個(gè)列表
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個(gè)字符;
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)判斷一個(gè)字符串是否以suffix字符串結(jié)尾;
?toUpperCase()返回一個(gè)字符串為該字符串的大寫形式;
public String toLowerCase()返回一個(gè)字符串為該字符串的小寫形式
substring(int beginIndex)返回該字符串從beginIndex開始到結(jié)尾的子字符串;
?substring(int beginIndex,int endIndex)返回該字符串從beginIndex開始到endsIndex結(jié)尾的子字符串
?trim()返回該字符串去掉開頭和結(jié)尾空格后的字符串
split(String regex)將一個(gè)字符串按照指定的分隔符分隔,返回分隔后的字符串?dāng)?shù)組
StringBuffer和StringBuilderh和String
String:字符串常量
StringBuffer:字符創(chuàng)變量,線程安全的
StringBuilder:字符創(chuàng)變量,線程非安全的
三者在執(zhí)行速度方面的比較:StringBuilder >? StringBuffer? >? String
String類型是不可改變的對(duì)象了,由于這種機(jī)制,每當(dāng)用String操作字符串時(shí),實(shí)際上是在不斷的創(chuàng)建新的對(duì)象,而原來的對(duì)象就會(huì)變?yōu)槔唬牵没厥盏簦瑥亩鴮?dǎo)致效率低。
而StringBuffer與StringBuilder就不一樣了,他們是字符串變量,是可改變的對(duì)象,每當(dāng)我們用它們對(duì)字符串做操作時(shí),實(shí)際上是在一個(gè)對(duì)象上操作的,這樣就不會(huì)像String一樣創(chuàng)建一些而外的對(duì)象進(jìn)行操作了,當(dāng)然速度就快了。
當(dāng)我們?cè)谧址彌_去被多個(gè)線程使用是,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當(dāng)然大多數(shù)情況下就是我們是在單線程下進(jìn)行的操作,所以大多數(shù)情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。
對(duì)于三者使用的總結(jié):
?1.如果要操作少量的數(shù)據(jù)用 = String
2.單線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) = StringBuilder
3.多線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) = StringBuffer