Java基礎知識總結(一)--基本語法知識
阿新 • • 發佈:2018-11-09
一.識別符號
(1)定義:就是給類,介面,方法,變數等起名字的字元序列
(2)組成規則:英文大小寫字母,數字,_和$
(3)注意事項:不能以數字開頭,不能是java中的關鍵字,區分大小寫
(4)常見命名規則:
a.包名:全部小寫。
b.類名/介面名:每個單詞首字母大寫
c.變數/方法名:第一個單詞小寫,後面每個單詞大寫
d.常量:每個字母都大寫,單詞間以下劃線連線
二:資料型別
1.分類
(1)基本資料型別
a.整數 佔用位元組數 byte 1 short 2 int 4 long 8 b.浮點數 float 4 double 8 c.字元 char 2 d.布林 boolean 1
(2)引用資料型別 a.類 b.介面 c.陣列
2.資料型別的轉換
(1)預設轉換
a.從小到大
b.byte,short,char--int--long--float--double
c.byte,short,char之間不相互轉化,直接轉換成int型別參與運算
(2)強制轉換
a.從大到小
b.可能會有精度損失,不建議使用
c.格式:目標資料型別 變數名=(目標資料型別)被轉換的資料
(3)boolean型別不參與轉換
(4)面試題:
a. System.out.println("hello"+'a'+1); //helloa1 System.out.println('a'+1+"hello"); //98hello System.out.println("5+5="+5+5); //5+5=55 System.out.println(5+5+"=5+5"); //10=5+5 System.out.println('a'); //a System.out.println('a' + 1); //98 b. byte b1 = 3; byte b2 = 4; byte b3 = b1 + b2; byte b4 = 3 + 4; //byte型別在參與運算時會自動轉化為int,第三條語句會報錯 c. byte b=(byte) 300; byte一共有八位,當超出八位後,會溢位,所以結果為44; byte b=(byte) 130;//-126 計算時可以用b-256即可得出結果
三.運算子
(1)算術運算子
a.包括:+,-,*,/,%,++,-- b.++和--的用法 1.放在運算元前面,先自增或者自減,再參與操作 int a = 10; int b = ++a; //a=11,b=11; 2.放在運算元的後面:先參與操作,再自增或者自減 int a = 10; int b = a++; //a=11,b=10; c.面試題 int a=10; a=a++; System.out.println(a); //結果為10 //後置++,會產生一個臨時的量,這個量的值相當於x的一個副本,然後將x的值自增1,將副本的值返回
(2)賦值運算子
a.包括: =,+=,-=,*=,/=,%=等
b.面試題
short s+=2; //等價於 s=(short)(s+2); 這種賦值運算子隱含了強制型別的轉換功能
short s=s+2; //會報錯 (變數參與運算時,會自己轉換為int型別)
c.
(3)邏輯運算子
a.包括:&,|,^,!,&&,||
b.注意:
&&:結果和&是一樣的,只不過有短路效果。左邊是false,右邊不執行。
||:結果和|是一樣的,只不過有短路效果。左邊是true,右邊不執行。
^:相同則false,不同則true。
(4)比較運算子
a.包括:==,!=,>,>=,<,<=
b.結果為boolean型別
注意不要把==寫成=
(5)位運算子
a.^的特殊用法
一個數據針對另一個數據位異或兩次,該數不變
b.面試題
交換a,b 的值
a=a^b;
b=a^b;
a=a^b;
c.請用最有效率的方式計算出2乘以8的結果
2<<3
(6)三元運算子
a:格式
比較表示式?表示式1:表示式2;
b:執行流程:
首先計算比較表示式的值,看是true還是false。
如果是true,表示式1就是結果。
如果是false,表示式2就是結果。
四.流程控制語句
(1)順序結構
從上往下,依次執行
(2)選擇結構
1:格式1
if(比較表示式) {
語句體;
}
2:格式2
if(比較表示式) {
語句體1;
}else {
語句體2;
}
3:格式3
if(比較表示式1) {
語句體1;
}else if(比較表示式2){
語句體2;
}
...
else {
語句體n+1;
}
b.switch語句
1.格式:
switch(表示式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
...
default:
語句體n+1;
break;
}
2.說明:
表示式:可以是byte,short,int,char
JDK5以後可以是列舉
JDK7以後可以是字串
break:表示程式到這裡中斷,跳出switch語句
default可以省略,也可以放在任意位置
(3)迴圈結構
a.for迴圈
for(初始化語句;判斷條件語句;控制條件語句){
迴圈體語句;
}
b.while迴圈
初始化語句;
while(判斷條件語句){
迴圈體語句;
控制條件語句;
}
c.for和while的區別
a:使用上的區別
for語句的那個控制條件變數,在迴圈結束後不能在使用了。
而while的可以繼續使用。
b:理解上的區別
for適合於一個範圍的判斷
while適合次數不明確的
d.do....while迴圈
初始化語句;
do {
迴圈體語句;
控制條件語句;
}while(判斷條件語句);
e.三種迴圈的區別
a:do...while迴圈至少執行一次迴圈體
b:for和while必須先判斷條件是否是true,然後後才能決定是否執行迴圈體
(4)控制跳轉語句
a.break:中斷的意思
1:用在迴圈和switch語句中,離開此應用場景無意義。
2:作用
跳出單層迴圈
跳出多層迴圈,需要標籤語句的配合
b.continue:繼續
1:用在迴圈中,離開此應用場景無意義。
2:作用
a:跳出單層迴圈的一次,可以繼續下一次
c.return:返回
1:用於結束方法
2:一旦遇到return,程式就不會在繼續往後執行。
五:方法
a.方法:就是完成特定功能的程式碼塊。
b.格式:
修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2...) {
方法體語句;
return 返回值;
}
c.方法過載
在同一個類中,方法名相同,引數列表不同。與返回值無關。
引數列表不同指:
引數的個數不同。
引數的對應的資料型別不同。
六.陣列
(1)陣列:儲存同一種資料型別的多個元素的容器
(2)定義方式:
a.int[] arr=new int[5];
b.int[] arr=new int[]{1,3,4,5};
c.int[][] arr=new int[5][];
(3)陣列常見操作
a.遍歷
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
b.求最大值(最小值)
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
c.查詢
public static int getIndex(int[] arr,int value) {
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
return x;
}
}
return -1;
}
(4)氣泡排序
氣泡排序:依次比較相鄰的資料,將小資料放在前,大資料放在後,一趟比較後將最大的數放到最後一個位置
public static void bubbleSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
(5)選擇排序
選擇排序:將第一個資料和後面的資料依次比較,將小資料放在前,大資料放在後,一趟比較後將最小的資料放在第一個位置
public static void selectSort(int[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}