Java基礎(變數,運算子)
1.基本資料型別:
一、分析基本資料型別的特點,最大值和最小值。
1、
基本型別:int 二進位制位數:32
包裝類:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
2、
基本型別:short 二進位制位數:16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
3、
基本型別:long 二進位制位數:64
包裝類:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)
4、
基本型別:float 二進位制位數:32
包裝類:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)
5、
基本型別:double 二進位制位數:64
包裝類:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)
1個位元組是8位
只有8種基本型別可以算.其他引用型別都是由java虛擬機器決定的自己不能操作
byte 1位元組
short 2位元組
int 4位元組
long 8位元組
float 4位元組
double 8位元組
char 2位元組
boolean 1位元組
2.基本資料型別間的轉換:
1)自動型別轉:小到大
強制型別轉:大到小 (要轉換成為的型別)變數
強轉有可能溢位或丟失精度
2)short s1 = 5;
short s2 = 8;
short s3 = (short)(s1+s2);
3.運算子:
1)算術運算子:+,-,*,/,%,++,--
2)關係運算符:>,<,>=,<=,==,!= boolean
3)邏輯運算子:&&,||,! boolean
4)賦值運算子:=,+=,-=,*=,/=,%=
5)字串連線運算子:+
6)條件/三目運算子:boolean?數1:數2
4.分支結構:
1)if:1條路
2)if...else:2條路
3)if...else if結構:多條路
Scanner scan = new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scan.nextInt();
if(score<0 || score>100){
System.out.println("成績不合法");
}else if(score>=90){ //score>=0 && score<=100
System.out.println("A-優秀");
}else if(score>=80){
System.out.println("B-良好");
}else if(score>=60){
System.out.println("C-中等");
}else{
System.out.println("D-不及格");
}
4)switch...case結構:多條路
優點:效率高、結構清晰
缺點:整數、相等
break:跳出switch
Scanner scan = new Scanner(System.in);
System.out.println("請選擇功能:1.顯示全部記錄 2.查詢登入記錄 0.退出");
int command = scan.nextInt();
switch(command){
case 1:
System.out.println("顯示全部記錄");
break;
case 2:
System.out.println("查詢登入記錄");
break;
case 0:
System.out.println("下次再來吧!");
break;
default:
System.out.println("輸入錯誤");
}
5.迴圈:
1)反覆執行一段相同或相似的程式碼
2)迴圈三要素:
2.1)迴圈變數的初始化
2.2)迴圈的條件(以迴圈變數為基礎)
2.3)迴圈變數的改變(向著迴圈的結束變)
迴圈變數:在迴圈過程中所反覆改變的那個數
3)迴圈結構:
3.1)while:先判斷後執行,有可能一次都不執行
int times=0; //1.迴圈變數的初始化
while(times<10){ //2.迴圈的條件
System.out.println("行動是成功的階梯");
times++; //3.迴圈變數的改變
}
3.2)do...while:先執行後判斷,至少執行一次
要素1與要素3相同時,首選do...while
3.3)for迴圈
//累加1到100的和,跳過個位為3的
int sum = 0; //和
for(int num=1;num<=100;num++){
if(num%10==3){
continue; //跳過迴圈體中剩餘語句而進入下一次迴圈
}
sum += num;
}
System.out.println("sum="+sum);
迴圈的比較:
1.for迴圈:應用率最高、固定次數迴圈
2.break:跳出迴圈
continue:跳過迴圈體中剩餘語句而進入下一次迴圈
3.三種迴圈結構的更佳適用情況:
1)while:"當..."
要素1與要素3不同時選while
2)do...while:"直到..."
要素1與要素3相同時首選do...while
3)for:固定次數迴圈,應用率最高
4.巢狀迴圈:
1)迴圈中套迴圈,一般多行多列時使用,外層控制行,內層控制列
2)執行規則:外層迴圈走一次,內層迴圈走所有次
3)建議:迴圈層數越少越好,能用一層就不用兩層,能用兩層就不用三層
若需要必須通過三層以上的迴圈來解決,說明設計有問題
4)break只能跳出一層迴圈
5.程式=演算法+資料結構:
1)演算法:解決問題的流程/步驟(順序、分支、迴圈)
2)資料結構:將資料按照某種特定的結構來儲存
數怎麼存
設計良好的/合理的資料結構會導致好的演算法
6.陣列
1)相同資料型別元素的集合
2)是一種資料型別(引用型別)
3)陣列的定義:
int[] arr = new int[10];
4)陣列的初始化:
int[] arr = new int[4]; //0,0,0,0
int[] arr = {1,4,5,8}; //1,4,5,8
int[] arr = new int[]{1,4,5,8}; //1,4,5,8
int[] arr;
arr = {1,4,5,8}; //編譯錯誤,此方式只能宣告同時初始化
arr = new int[]{1,4,5,8}; //正確
5)陣列的訪問:
5.1)通過(陣列名.length)可以獲取陣列的長度
int[] arr = new int[8];
System.out.println(arr.length); //8
5.2)通過下標/索引來訪問陣列中的元素
下標從0開始,最大到(陣列的長度-1)
int[] arr = new int[3];
arr[0] = 100; //給arr中的第1個元素賦值為100
arr[1] = 200; //給arr中的第2個元素賦值為200
arr[2] = 300; //給arr中的第3個元素賦值為300
arr[3] = 400; //陣列下標越界異常
System.out.println(arr[arr.length-1]); //輸出最後一個元素的值
6)陣列的遍歷:
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = 100;
}
陣列的複製:參見另一篇部落格:java語言複製陣列的四種方法(https://blog.csdn.net/ClearLoveQ/article/details/85005264)
7.集合
參見另一篇部落格:Java的集合 (https://blog.csdn.net/ClearLoveQ/article/details/85007778)