java基礎(1)IntelliJ IDEA入門和陣列操作
一、 IntelliJ IDEA入門
1 快捷鍵和技巧
智慧補全程式碼,比如只寫首字母按回車:
- psvm+Enter :public stactic void main(String[] args)
- sout+Enter:System.out.println();
快捷鍵:
- Alt+4:調出執行框
- Alt+enter:程式碼修復,比如導包
- Ctrl+Y:刪除游標所在行
- Ctrl+D:複製所在行,並插入下一行
- Ctrl+Alt+L:格式化程式碼,對齊
- Ctrl+/:單行註釋,再按取消註釋
- Ctrl+Shift+/:註釋選中的程式碼,多行註釋,再按取消註釋
- Alt+Insert:自動生成程式碼,比如toString,get,set方法
- Alt+Shift+上下箭頭:移動程式碼
- Shift+F6:替換所選
2 IDEA 常用設定
file\settings\editor可以設定字型
file\settings\keymap\code\completion設定快捷鍵,比如設定自動補全程式碼,更換為alt+/
03 idea模組module的匯入
file\project structure
二、 java基礎
1 .java和.class檔案
.java檔案是原始檔,也就是我們自己寫的程式碼。
.class檔案是虛擬機器編譯得到的,虛擬機器需要把我們寫的.java檔案編譯成它可執行的位元組碼檔案。
projectname\src資料夾下是.java檔案
projectname\out資料夾下是.class檔案
javac.exe是JDK的編譯器;java.exe是直譯器
HelloWorld.java原始碼檔案:
public class HelloWorld{ } //檔名和類名需要保持一致
2 方法過載
方法過載:方法的名稱一樣,引數列表不一樣。
如原來的方法int sum(int a,int b)
相關:引數個數int sum(int a,int b,int c);引數型別int sum(int a,double b);引數的多型別順序int sum(double a, int b)。
無關:引數的名稱無關int sum(int x, int y);與返回值型別無關double sum(int a),因為在方法單獨呼叫時,如sum(10,20),不知道該去呼叫int sum(int a,int b)還是double sum(int a,int b)
3 陣列
陣列的定義-初始化
動態初始化(指定長度):
格式: 資料型別[ ] 陣列名 = new 資料型別[陣列長度]
int[] arrayA = new int[30]; //定義一個int型陣列,預設初始化為0
String[] arrayB = new String[20]; //定義一個String型陣列
可以拆分為兩個步驟:
int arrayB[];
arrayB = new int[30]; //定義一個int型陣列
靜態初始化(指定內容):
格式: 資料型別[ ] 陣列名 = new 資料型別[陣列長度]{元素1,元素2,... }
int [] arrayA = new int[]{5,15,20}
String [] arrayB = new String[]{"Hello","World"}
可以拆分為兩個步驟:
int arrayB[];
arrayB = new int[]{10,20,30};
下面是錯誤寫法:
int arrayB[]; arrayB[] = new int[]{10,20,30};
省略的靜態初始化:
格式: 資料型別[ ] 陣列名 = {元素1,元素2,... }
int [] arrayA = {5,15,20}
不能拆分成兩個步驟:
int arrayB[]; arrayB = {10,20,30};//錯誤寫法
4 陣列的記憶體分析
首先是java的記憶體分析:
注意:
陣列名稱是一個區域性變數,如int[] array是放在棧中的。
new出來的物件都放在堆中。
陣列的記憶體分析:
//地址賦值
public static void main(String[] args) {
int[] arrayA = new int[3];
arrayA[0]=10;
System.out.println(arrayA[0]);
System.out.println("=========");
int[] arrayB= arrayA;// arrayB存放的地址與arrayA相同,可以通過修改arrayB的值修改arrayA的值。即arrayB是arrayA的引用
arrayB[0]=100;
System.out.println(arrayA);
System.out.println(arrayA[0]);
System.out.println(arrayB);
System.out.println(arrayB[0]);
}
//輸出
10
=========
[[email protected]
100
[[email protected]
100
陣列的名稱不變,地址重新賦值:
int[] arrayC = new int[3]; System.out.println(arrayC);//0x666 arrayC = new int[5];//新new了一個數組,地址為0x999,仍然命名為arrayC。 System.out.println(arrayC);//0x999
//堆中有了兩個實體物件
5 對陣列的常見操作方法
//遍歷
int[] arrayD = new int[]{1,2,3,4}; for(int i=0;i<arrayD.length;i++) //在idea中快捷輸入的方式:array.fori回車 System.out.println(arrayD[i]); // 1 2 3 4
//求最大值
public static void main(String[] args) { int[] array = new int[]{1,2,5,8}; int max = array[0]; for(int i= 1;i<array.length;i++){ if(array[i]>max) max=array[i]; } System.out.print("max="+max); }
//
max=8
//反轉陣列
public static void main(String[] args) { int[] array = {2, 4, 6, 8, 10}; System.out.println("before reverse:"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); System.out.print(" "); } for (int min = 0, max = array.length - 1; min < max; min++, max--) { int temp = array[min]; array[min] = array[max]; array[max] = temp; } System.out.println("\nafter reverse:"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); System.out.print(" "); } }
//
before reverse:
2 4 6 8 10
after reverse:
10 8 6 4 2
//陣列作為引數傳遞給方法 public class Demo01ArrayParam { public static void main(String[] args) { int[] array = {10, 20, 30}; printArray(array); int[] array1 = {10*2, 20*2, 30*2}; printArray(array1); } public static void printArray(int[] a) { for (int i = 0; i < a.length; i++) System.out.println(a[i]); } }
//輸出結果
10
20
30
20
40
60
//陣列作為方法的返回值,返回的其實是陣列的地址值
public class Demo01ArrayReturn {
public static void main(String[] args) {
int[] result = calculate(10,20,30);
System.out.println("main方法返回值的地址是"+ result);
System.out.println("總和="+ result[0]);
System.out.println("平均數="+ result[1]);
}
public static int[] calculate(int a, int b,int c) {
int sum = a+b+c;
int avg = sum/3;
int[] array = {sum,avg};
System.out.println("calculate陣列的地址是"+ array);
return array;
}
}
//
calculate陣列的地址是[[email protected]
main方法返回值的地址是[[email protected]
總和=60
平均數=20