一、 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型数组,默认初始化为0String[] arrayB = new String[20]; //定义一个String型数组
可以拆分为两个步骤:
1int arrayB[]; 2arrayB = new int[30]; //定义一个int型数组
静态初始化(指定内容):
格式: 数据类型[ ] 数组名 = new 数据类型[数组长度]{元素1,元素2,... }
1int [] arrayA = new int[]{5,15,20} 2 3String [] arrayB = new String[]{"Hello","World"}
可以拆分为两个步骤:
1int arrayB[]; 2arrayB = new int[]{10,20,30}; 3 4下面是错误写法:int arrayB[]; 5arrayB[] = new int[]{10,20,30};
省略的静态初始化:
格式: 数据类型[ ] 数组名 = {元素1,元素2,... }
int [] arrayA = {5,15,20}
不能拆分成两个步骤:
1int arrayB[]; 2arrayB = {10,20,30};//错误写法
4 数组的内存分析
首先是java的内存分析:

注意:
数组名称是一个局部变量,如int[] array是放在栈中的。
new出来的对象都放在堆中。
数组的内存分析:

1//地址赋值 2 3public 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]);} 4 5//输出
10
=========
[I@1b6d3586
100
[I@1b6d3586
100
数组的名称不变,地址重新赋值:
1int[] arrayC = new int[3]; 2System.out.println(arrayC);//0x666 3arrayC = new int[5];//新new了一个数组,地址为0x999,仍然命名为arrayC。 4System.out.println(arrayC);//0x999//堆中有了两个实体对象

5 对数组的常见操作方法
1//遍历int[] arrayD = new int[]{1,2,3,4}; 2for(int i=0;i<arrayD.length;i++) //在idea中快捷输入的方式:array.fori回车 3System.out.println(arrayD[i]); 4// 51 62 73 84 9 10//求最大值public static void main(String[] args) { 11 int[] array = new int[]{1,2,5,8}; 12 int max = array[0]; 13 14 for(int i= 1;i<array.length;i++){ 15 if(array[i]>max) max=array[i]; } System.out.print("max="+max); }//max=8 16 17//反转数组public static void main(String[] args) { 18 int[] array = {2, 4, 6, 8, 10}; 19 System.out.println("before reverse:"); 20 21 for (int i = 0; i < array.length; i++) { 22 System.out.print(array[i]); 23 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
1//数组作为参数传递给方法 2public class Demo01ArrayParam { 3 public static void main(String[] args) { 4 int[] array = {10, 20, 30}; 5 printArray(array); 6 int[] array1 = {10*2, 20*2, 30*2}; 7 printArray(array1); 8 } 9 10 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
1//数组作为方法的返回值,返回的其实是数组的地址值 2 3public 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