Java基礎2——基本程式設計
1、控制檯輸入輸出
(1)輸入
import java.util.Scanner; //或import java.util.*;從java.util包匯入Scanner類
Scanner input=new Scanner(System.in); //宣告一個Scanner型別的變數,建立一個物件
double radius=input.nextDouble(); //呼叫物件的方法
其中next方法包括nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()、next()、nextLine()等。
(2)輸出
System.out
System.out.print();//顯示完字串後,不會將游標移至下一行
System.out.printf(“countis %d,amount is %f”,count,amount);//格式化輸出,輸出寬度不足10,在前面加空格(如果%後面有0則補0),多於10則自動增加寬度。在%後面加-,則左對齊。%後面加,千位分隔符。%n與平臺無關的換行。要在格式字串裡輸出字面量%,則需輸入%%。printf直接呼叫了format,與System.out.format用法相同。
格式 | 資料型別 |
%10d | 十進位制整數 |
%10.2f | 浮點數 |
%10.2e | 科學計數法 |
%10c | 字元 |
%10b | 布林值 |
%10s | 字串 |
2、識別符號、變數和常量
識別符號是由字母、數字、下劃線(_)和美元符號($)構成的字元序列,不能以數字開頭,不能是保留字、true、false或null。區分大小寫。避免採用縮寫,用完整的詞彙更有描述性。
類名每個單詞的首字母大寫XxxYyyZzz;變數名和方法名使用小寫字母開頭xxxYyyZzz;包名所有字母小寫xxxyyyzzz。大寫常量中所有字母,兩個單詞間用下劃線連線XXX_YYY。
變數指在程式中可能被改變的值,宣告和賦初值儘可能一步完成;常量指在其生存期內值不可改變的量,最好在同一條語句中宣告和賦初值,且只能賦值一次。常量可以是整數、小數、布林型、字元、字串、null等形式。
datatype variableName=value;
final datatype CONSTANT_NAME=value;
3、基本資料型別
大類 | 型別 | 預設值 | 位數 | 範圍 |
整型 | byte | 0 | 8 | -128~127 |
short | 0 | 16 | -32,768~32,767 | |
int | 0 | 32 | -2,147,483,648~2,147,483,647 | |
long | 0 | 64 | -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807 | |
浮點型 | float | 0.0 | 32 | 負數-3.4E+38~-1.4E-45 正數1.4E-45~3.4E+38 |
double | 0.0 | 64 | 負數-1.7E+308~-4.9E-324 正數4.9E-324~1.7E+308 | |
字元型 | char | 16 | 單個字元或轉義序列 | |
布林型 | boolean | false | 1 | 1(ture) 0(false) |
(1)字元型
字元型字面量包括單個字元或轉義序列,用單引號括住。
一個字元在計算機中以0和1構成的序列來儲存,把字元對映到它的二進位制形式的過程稱為編碼。Unicode碼是其中的一種編碼方案,它支援使用世界各種語言所書寫的文字的交換、處理和顯示。一個16位的Unicode碼產生65536個字元,用以\u開頭的4位十六進位制數表示,範圍從’\u0000’到’\uFFFF’。其中從’\u0000’到’\u007F’對應128個ASCII字元。
字元 | ASCII十進位制編碼值 |
‘0’~’9’ | 48~57 |
‘A’~’Z’ | 65~90 |
‘a’~’z’ | 97~122 |
轉義序列 | 名稱 |
\b | 退格 |
\t | 水平製表符 |
\n | 換行符 |
\f | 換頁符 |
\r | 回車符 |
\\ | 反斜槓 |
\" | 雙引號 |
\' | 單引號 |
兩個字元可以使用關係操作符進行比較。
Character類中的方法:isDigit(ch)、isLetter(ch)、isLetterOrDigit(ch)、isLowerCase(ch)、isUpperCase(ch)、toLowerCase(ch)、toUpperCase(ch)。
(2)數值型字面量
整型字面量預設為int型,可以賦給byte、short、int、long型。如果表示long型字面量,在數字後面加L,如果數字太長,可以在中間加下劃線。整型字面量預設為十進位制正數;以0b或0B開頭,表示二進位制字面量;以0開頭,表示八進位制字面量;以0x或0X開頭,表示十六進位制字面量。
浮點型字面量預設為double型,也可以在小數後面加d或D。如果要將小數賦給float型別的變數,需要在小數後面加f或F。浮點數還可以用e或E表示。
(3)數值型別轉換
數值型別轉換,包括賦值轉換、方法呼叫轉換和字串轉換(+)。擴充套件轉換,有時不損失精度,有時損失精度(int->float),可以自動完成;窄化轉換,可能丟失資訊,必須顯式轉換。short和char都是16位,但依然需要強轉。強制轉換優先順序較高,僅對它緊跟的部分有效。
4、運算子
(1)算術、賦值運算子
加(+)、減(-)、乘(*)、除(/)、求餘(%),均是二元操作符,+-還是一元操作符。當被除數是負數時,餘數才是負數。其中(+)也被稱為字串連線符,字串和任何資料使用+相連線,都變成字串。例:"5+5"+5+5=>5+555;"5+5"+(5+5)=>5+510;'a'+1=>98;"a"+1=>a1。如果有任何運算單元的長度超過int,那麼運算結果就按照最長的長度計算;如果任何運算單元的長度都不超過int,那麼運算結果就按照int來計算。
自增(++)、自減(--),有時前置與後置結果不同,避免在同一個表示式中使用多個自增自減運算子。
賦值(=)、增強賦值(+=)(-=)(*=)(/=)(%=)。
(3)關係運算符
(<)(<=)(>)(>=)(==)(!=)。
(4)邏輯運算子
非(!)、與(&&)、或(||)、異或(^)。
(5)條件運算子
布林表示式?表示式1:表示式2;唯一的三元運算子。
(6)位運算子
通過Integer.toBinaryString()方法,將一個十進位制整數轉換為一個二進位制字串。
位與(&)、位或(|)、位與或(^)、求反(~);左移位(<<)右邊空出來的補0;帶符號位右移位(>>)最高位補上符號位,無符號位右移位(>>>)左邊空出來的補0。
位操作符僅適用於四種整數型別。位操作涉及的字元轉換為整數。所有的位操作符都可以構成位賦值操作符。
一個數異或同一個數兩次,結果是第一個數,可用於加密。
移N位即乘或除2的N次冪,除非超出整數範圍。
練習1:最有效計算2*8,2<<3;
練習2:對兩個整數變數的值進行互換,n=n^m; m=n^m; n=n^m;;
練習3:獲取一個數的十六進位制表現形式,60&15=12,temp=60>>>4,temp&15=3。
(7)運算子優先順序和結合規則
除了賦值運算子,所有的二元運算子都是左結合。
操作符 | 優先順序 | |
++、-- | 後置操作符 | 最高階 最低階 |
+、-、++、-- | 一元加號減號、前置操作符 | |
(type) | 型別轉換 | |
! | 非 | |
*、/、% | 算術運算子 | |
+、- | ||
<、<=、>、>= | 關係運算符 | |
==、!= | ||
^ | 邏輯運算子 | |
&& | ||
|| | ||
=、+=、-=、*=、/=、%= | 賦值運算子 |
5、選擇
單分支if語句、雙分支if-else語句、巢狀if語句、多分支if-else語句。
注意:
(1)最好不省略花括號,在同一個塊中,else和離它最近的if匹配
(2)直接測試布林變數,不使用==或!=;
(3)簡化布林變數賦值,eg:booleaneven=number%2==0;;
(4)比較兩個浮點數值是否相等,final double EPSILON=1E-14,求絕對值<EPSILON,float設定為1E-7。
switch語句:當switch表示式的值與case語句的值匹配時,執行從該case開始的語句,直到遇到break語句或switch語句結束。switch表示式必須能計算出char、byte、short、int、enum或String型值。
switch(switch表示式){
case 值1:語句(組)1
break;//可選
case 值2:語句(組)2
break;
...
case 值N:語句(組)N
break;
default:其它情況執行的語句(組)//可選
}
6、迴圈
(1)迴圈
while(迴圈繼續條件){}
do{}while(迴圈繼續條件);
for(初始操作;迴圈繼續條件;更新計數器){}如果迴圈控制變數只在迴圈體使用,就在初始操作中宣告;如果省略迴圈繼續條件,預設為true,最好不要省略;最好使用整數計數器。
for(型別 該型別變數:陣列物件名){}增強for迴圈,不使用下標變數就可以對陣列或集合物件進行遍歷。
(2)break和continue
break:switch語句;終止break所在的最內層迴圈;跳出所指定的程式碼塊。
continue:結束當前迭代,程式控制轉向該迴圈體末尾。
7、常用數學函式
Java在Math類中提供了許多實用方法,來計算常用的數學函式。Math類在java.lang包中,該包中所有類隱式匯入。
double常量:Math.PI和Math.E。
三角函式:sin(radians)、cos(radians)、tan(radians)、asin(a)、acos(a)、atan(a),均以弧度計。toRadians(degree)、toDegrees(radians),角度與弧度相互轉換。
指數函式方法:exp(x)、log(x)(自然底數)、log10(x)、pow(a,b)、sqrt(x)。
取整方法:ceil(x)、floor(x)、rint(x)、round(x)。
abs(x)方法返回一個數(int、long、float、double型)的絕對值。
random()方法生成大於等於0.0且小於1.0的double型隨機數。