java的基本程式設計結構
java常見概念
- 物件:物件是類的一個例項,有狀態和行為。
- 類:類是一個模板,它描述一類物件的行為和狀態。
- 方法:方法就是行為,一個類可以有很多方法。邏輯運算、資料修改以及所有動作都是在方法中完成的。
- 例項變數:每個物件都有獨特的例項變數,物件的狀態由這些例項變數的值決定。
基本語法
- 大小寫敏感:Java是大小寫敏感的,這就意味著識別符號Hello與hello是不同的。
- 類名:對於所有的類來說,類名的首字母應該大寫。如果類名由若干單片語成,那麼每個單詞的首字母應該大寫,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都應該以小寫字母開頭。如果方法名含有若干單詞,則後面的每個單詞首字母大寫。
- 原始檔名:原始檔名必須和類名相同。當儲存檔案的時候,你應該使用類名作為檔名儲存(切記Java是大小寫敏感的),檔名的字尾為.java。。
- 主方法入口:所有的Java 程式由public static void main(String []args)方法開始執行。在java中main方法並沒有給作業系統返回“退出程式碼”,如果main方法正常退出,那麼java應用程式退出程式碼為 0 ,表示成功退出,強制終止程式碼可以呼叫System.exit方法
資料型別
1.整型
int : int資料型別是32位,在java中通過補碼的形式表示資料其範圍:最小值是-2,147,483,648(-2^31);最大值是2,147,483,647(2^31 - 1);
long :long資料型別是64位、有符號的以二進位制補碼錶示的整數;最小值是-9,223,372,036,854,775,808(-2^63);最大值是9,223,372,036,854,775,807(2^63 -1);在表示long型資料是 通常在末尾 加‘l’ 或 ‘L’ 例如 long a = 1000l;
short : short資料型別是16位、有符號的以二進位制補碼錶示的整數最小值是-32768(-2^15);最大值是32767(2^15 - 1);
byte:byte資料型別是8位、有符號的,以二進位制補碼錶示的整數最小值是-128(-2^7)最大值是127(2^7-1)
注意:java中沒有任何無符號型別 (unsighed)
2.浮點型別
float : float資料型別是單精度、32位、符合IEEE 754標準的浮點數;float的精確範圍為小數點後(6 ~ 7)位
double :double資料型別是雙精度、64位、符合IEEE 754標準的浮點數;doube的精確範圍為小數點後(15)位
在IEEE754中規定了以下表示溢位的三個特殊值
正無窮
負無窮
NaN(not a number )
3.char型別 char型別是一個單一的16位Unicode字元,
4. boolean: 用於邏輯判斷 true false
變數
1.變數初始化
宣告一個變數後,必須使用賦值語句對其進行賦值,不能使用未初始化的變數,一下語句便是錯誤的
int a;
System.out.println(a);//變數未初始化,不能進行使用
2.常量
java中使用關鍵字final表示這個變數只能賦值一次,就不能在更改了,通常常量的關鍵字全部大寫。
3.列舉型別
jdk1.5之後引入列舉型別,有時候變數的取值在一個有限的集合內時,這是就可以自定義列舉型別語法如下:
enum 類名{
變數1
變數2
…………
}
4.字串
1.String
從概念上將String就是一個Unicode字串序列,Java並沒有內建的字串型別,而是在標準java類庫中提供了一個預定類String ,同時String型別並沒有提供用於修改的方法
2.構建字串
由於String是不可變字串每次構建都會生成一個新的String物件,所以StringBulider類就可以避免這個問題
StringBulider sb = new StringBulider();
sb.append("字串")
……
String s = sb.toString();
3.輸入和輸出
輸入:構建Scanner物件 如 : Scanner sc = new Scanner(System.in); 構建Scanner物件,並且指定物件的輸入為鍵盤System.in 這個輸入流可以進行更改
Tips:因為輸入是可見的,所以Scanner類不適合用來從控制檯讀取密碼,JavaSe6特別引入 Console類實現這個目的
import java.io.Console;
/**
* @author yiahgn
* @create 2018-08-13
**/
public class Test {
public static void main(String[] args) {
Console console = System.console();
String name = console.readLine("please input your name:");
char[] chars = console.readPassword("please input password:");
String password = String.valueOf(chars);
System.out.println("your name:"+name+" your password:"+password);
}
}
注意,只能通過命令列執行。IDE中會報空指標異常
5.大數值
如果基本整數和浮點數精度不能滿足要求,java.math包中提供的BigInteger和BigDecimal 這兩個類可以處理包含任意長度數字序列的大數值
BigInteger a = BigInteger.valueOf(數值)
在處理大數值時不能使用算數運算子 + - / * 處理大資料必須使用相應的方法 如 add divide multiply
6.陣列
常用的幾種方法:
1.陣列拷貝
//Arrays.copy( nums[] ,legth)
int [] nums = {1,2,,3,4,5};
itn [] tmp = Arrays.copy(nums ,nums.legth);
//將陣列nums中指定長度的資料拷貝到tmp陣列中
2.static type copyOfRange(type[] a, int start , int end)
返回與a型別相同的陣列,長度為length或者 end - start
3. static int binarySearch(type [] a , type v)
static int binarySearch(type [] a ,int start, int end , type v)
使用二分搜尋演算法查詢值v 如果成功返回下標,否則返回一個負值
4. static void sort(type [] a)
使用快速排序演算法對陣列進行排序
5. static void fill (type [] a type v)
將陣列所有資料元素填充為v