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

java基础(1)IntelliJ IDEA入门和数组操作 解决idea启动速度慢--配置JVM的更多相关文章

  1. java基础-引用数据类型之二维数组(Array)

    java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...

  2. java基础(10)---leetcode的String、数组以及集合的一些使用

    整数 一.整数反转_7 /* 12345 变成 54321 */ public class 整数反转_7 { public static void main(String[] args){ int x ...

  3. Java 基础-IO、stream 流、文件操作

    输入输出流的分类 在 java.io 包中,包含了输入输出操作所需的类. I/O 流可以安装不同的标准分类: 按照流的方向分类: 输入流:将信息从代码外部输入代码 输出流:将代码得到的数据输出到文件. ...

  4. Javascript入门(五)数组操作、循环语句

    一.数组与数组操作 <script type="text/javascript"> //数组定义方式 var list1 = new Array(1,2,3); var ...

  5. 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换

    ------- android培训.java培训.期待与您交流! ---------- 集合框架的工具类:        Collections : 集合框架的工具类.里面定义的都是静态方法. Col ...

  6. Java基础知识强化105:打印数组的方法总结

    1. 使用for循环打印数组. 2. 使用Arrays工具类,将数组转化为有序的List打印出来. 3. 使用Arrays工具类,使用Arrays.toString()输出数组内容. 上面三种方法打印 ...

  7. java基础64 JavaScript中的Arrays数组对象和prototype原型属性(网页知识)

    1.Arrays数组对象的创建方式 方式一: var 变量名=new Array(); //创建一个长度为0的数组. 方式二: var 变量名=new Array(长度); //创建一个指定长度的数组 ...

  8. Java基础(四)方法和数组

    一.方法 1.方法的定义 方法也叫函数,就是一个能独立完成某个功能的一段代码.方法可以看作一个整体. 语法: 修饰符 返回类型 方法名字(数据类型 变量名,数据类型 变量名,……[形式参数(0个到n个 ...

  9. java基础知识(三)之数组

    声明数组: 语法:数据类型[ ] 数组名://例:int[ ] scores;  或者 数据类型 数组名[ ]://例:int scores[ ];分配空间 语法:数组名 = new 数据类型 [ 数 ...

随机推荐

  1. Linux 跟踪连接netfilter 调优

    Netfilter介绍 linux内核中的netfilter是一款强大的基于状态的防火墙,具有连接跟踪(conntrack)的实现.conntrack是netfilter的核心,许多增强的功能,例如, ...

  2. FL Studio的模式剪辑是什么?

    FL Studio里的模式剪辑功能里,有一个模式菜单.模式剪辑菜单和模式选择器面板.模式可以作为模式剪辑放置在播放列表中,模式剪辑的名称显示在剪辑的标题栏中.(注意:模式注释和事件自动化可以共享相同的 ...

  3. UVA11992 Fast Matrix Operations

    思路 注意到最多20行,拆成20颗线段树即可 注意set标记清空左右儿子的add,不要清空自己的add,因为这个set操作之后可能还有add存在这个节点上 代码 #include <cstdio ...

  4. 实体关系图应用——google ads

    实体关系 本页展示了 AdWords 实体的关系图,其中的可点击图片可帮助您找到最合适的文档. 表示法图例 实体:链接到相关性最高的指南. 基数:允许的实例数量.例如,1..\* 表示允许一个或多个. ...

  5. Pandas 基础(9) - 组合方法 merge

    首先, 还是以天气为例, 准备如下数据: df1 = pd.DataFrame({ 'city': ['newyork', 'chicago', 'orlando'], 'temperature': ...

  6. php向mariaDB插入数据时乱码问题解决 --- mysqli_set_charset(设置默认字符编码)

    参考文章: https://www.w3schools.com/php/func_mysqli_set_charset.asp http://php.net/manual/zh/mysqli.set- ...

  7. 巧用同步请求处理react页面刷新问题

    很多时候,我们会遇到这种情况,组件加载需要请求后台数据,然后填充组件.那么我们一般会这样处理:如[使用异步请求的方式]代码: 加载组价的时候,未获得数据,render一个空的div: 然后异步请求数据 ...

  8. CentOS 7安装后的配置

    一.设置IP地址.网关DNS 说明:CentOS 7.x默认安装好之后是没有自动开启网络连接的,所 以需要我们自己配置. 在命令行输入#vi  /etc/sysconfig/network-scrip ...

  9. Katy Perry - E.T.

    作曲 : Katy Perry, Łukasz Gottwald, Max Martin, Joshua Coleman 作词 : Katy Perry, Łukasz Gottwald, Max M ...

  10. linux文件管理之链接文件

    文件链接 ====================================================================================软链接 或 符号链接硬 ...