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