java 数组 jorn_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型数组

可以拆分为两个步骤:

intarrayB[];

arrayB = new int[30];//定义一个int型数组

静态初始化(指定内容):

格式:  数据类型[ ] 数组名 = new 数据类型[数组长度]{元素1,元素2,... }

int [] arrayA = new int[]{5,15,20}

String [] arrayB = new String[]{"Hello","World"}

可以拆分为两个步骤:

intarrayB[];

arrayB = new int[]{10,20,30};

下面是错误写法:

int arrayB[];

arrayB[] = new int[]{10,20,30};

省略的静态初始化:

格式: 数据类型[ ] 数组名 = {元素1,元素2,... }

int [] arrayA = {5,15,20}

不能拆分成两个步骤:

intarrayB[];

arrayB= {10,20,30};//错误写法

4 数组的内存分析

首先是java的内存分析:

e3b9371a9e1405bbdcfaaedef371401f.png

注意:

数组名称是一个局部变量,如int[] array是放在栈中的。

new出来的对象都放在堆中。

数组的内存分析:

5ecf2e2a9e3ba401e972d0b283fcf5ae.png

//地址赋值

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

//堆中有了两个实体对象

06bc217c73074c663b8b8181470a8a2e.png

5 对数组的常见操作方法

//遍历

int[] arrayD = new int[]{1,2,3,4};for(int i=0;i

System.out.println(arrayD[i]);//1

2

3

4

//求最大值

public static voidmain(String[] args) {int[] array = new int[]{1,2,5,8};int max = array[0];for(int i= 1;imax)

max=array[i];

}

System.out.print("max="+max);

}

//

max=8

//反转数组

public static voidmain(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 classDemo01ArrayParam {public static voidmain(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的安装目录:

be1df7aa807fdfd94ead60df9080f145.png

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

xms是Heap初始值

xmx是Heap最大值

e6c4781c1f57a651220d5a9fb283cb7f.png

这也太小了吧.

修改成:

-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秒以内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值