java基礎(1)IntelliJ IDEA入門和數組操作 解決idea啟動速度慢--配置JVM


一、 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
=========
[I@1b6d3586
100
[I@1b6d3586
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數組的地址是[I@1b6d3586
main方法返回值的地址是[I@1b6d3586
總和=60
平均數=20

 

每次啟動idea超級慢,大概需要2分鍾。最近看了jvm相關的東西,有博客說可以通過修改jvm的配置提高運行速度。

先找到idea的安裝目錄:

 

可以默認的idea中jvm的配置:

xms是Heap初始值

xmx是Heap最大值

 

這也太小了吧.

 修改成:

-Xms1024m -Xmx2048m -XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow

 重啟idea,啟動速度基本上在30秒以內。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM