day05

day05

一、JVM的内存划分

JVM(Java Virtual Machine)Java虚拟机。Java虚拟机相当于是一个抽象化的计算机,平时代码执行的时候就是在虚拟机中执行的。

首先Java代码会被编译工具javac编译成class文件,然后再通过Java虚拟机解释成当前计算机对应的机器码。

Java虚拟机按照内存使用的方式不同,分成了如下五个部分:栈、堆、方法区、本地方法栈、程序计数器

栈:    存放的局部变量,方法执行的地方      【常用】
堆:    存放的对象(全都是new出来的内容)   【常用】
方法区: 存放的字节码对象,方法、常量、静态的变量   【常用】
本地方法栈: 存放的本地方法(C或C++写的方法)
程序计数器: 控制程序的执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-THBnul0M-1620290959623)(img/JVM运行时数据区域.png)]

二、数组

2.1 数组的内存图
一个数组的内存图
class Demo {
	
	public static void main(String[] args) {
		
		int[] arr = new int[3];
		
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println("------------");

		arr[0] = 11;
		arr[1] = 22;
		arr[2] = 33;
			
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLA69iIw-1620290959625)(img/image-20210412094634679.png)]

两个数组的内存图
class Demo2 {
	
	public static void main(String[] args) {
		
		int[] arr = new int[3];
		
		arr[0] = 11;
		arr[1] = 22;
		arr[2] = 33;
			
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println("------------");
		
		int[] arr2 = new int[3];
		System.out.println(arr2);
		System.out.println(arr2[0]);
		System.out.println(arr2[1]);
		System.out.println(arr2[2]);
		System.out.println("------------");
		arr2[0] = 66;
		arr2[1] = 77;
		arr2[2] = 88;
			
		System.out.println(arr2);
		System.out.println(arr2[0]);
		System.out.println(arr2[1]);
		System.out.println(arr2[2]);
		
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K1XpizrB-1620290959628)(img/image-20210412100959695.png)]

两个引用指向同一个数组
class Demo3 {
	
	public static void main(String[] args) {
		
		int[] arr = new int[3];
		
		System.out.println(arr);
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println("-------------");

		int[] arr2 = arr;
		System.out.println(arr2);
		System.out.println(arr2[0]);
		System.out.println(arr2[1]);
		System.out.println(arr2[2]);
		System.out.println("-------------");
		
		arr2[1] = 66;
		System.out.println(arr2[0]);
		System.out.println(arr2[1]);
		System.out.println(arr2[2]);
		System.out.println("-------------");
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
				
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vAvIudBW-1620290959630)(img/image-20210412101847862.png)]

2.2 数组的常见操作
数组的遍历

将数组中的元素从第一个开始获取一直到最后一个元素为止

class Demo4 {
	
	public static void main(String[] args) {
		
		int[] arr = {11, 22, 33, 44, 55};
		
		//初始版本
		//System.out.println(arr[0]);
		//System.out.println(arr[1]);
		//System.out.println(arr[2]);
		//System.out.println(arr[3]);
		//System.out.println(arr[4]);
		
		//改进版本
		/*
		for(int i = 0; i < 5; i++) { //i = 0 1 2 3 4 
			
			System.out.println(arr[i]);
		}
		*/
		
		/*
			获取数组长度的方法 length
				使用:数组名.length
			
		*/
		//System.out.println(arr.length);
		
		//最终版本
		for(int i = 0; i < arr.length; i++) {
			
			System.out.println(arr[i]);
		}
		
	}
}
数组的最值

求数组中的最大值及最小值

class Demo5 {
	
	public static void main(String[] args) {
		
		int[] arr = {11, 22, 33, 44, 55};
		
		//1. 先定义一个擂台,擂台上先随便放一个人,假定这个人是最高的人
		int max = arr[0];
		
		//2. 遍历这个数组,获取到每一个人
		for(int i = 0; i < arr.length; i++) {
			
			//arr[i]就是获取到的每一个人
			//3. 让每一个依次和擂台上的人进行比较。如果比擂台上的人高,那么就替换掉擂台上的人
			if(arr[i] > max) {
				
				max = arr[i];
			}
			
		}
		
		//4. 输出擂台上的人,这个就是最高的人
		System.out.println(max);
		
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UGklfIzg-1620290959631)(img/image-20210412103941545.png)]

数组的查找

定义一个方法,方法可以找到数据是否在数组中存在,如果找到就返回索引,如果找不到就返回-1

class Demo6 {
	
	public static void main(String[] args) {
		
		int[] arr = {11, 22, 33, 22, 55};
		
		System.out.println(getIndex(arr, 22));
		
	}
	
	public static int getIndex(int[] arr, int number) {
		
		//定义一个变量,用来存储索引,默认为-1(找不到的索引为-1)
		int index = -1;
		
		//1. 遍历传进来的数组
		for(int i = 0; i < arr.length; i++){
			
			//2. 将传入的数据number和数组中的每一个元素进行逐一的比较
			if(arr[i] == number) {
				//如果找到了,就将索引赋值给index
				index = i;
				break;
			}
			
		}
		
		return index;
	}
	
}
数组的排序

比如有一个数组{11, 33, 22, 55, 44} 升序排列之后为 {11, 22, 33, 44, 55}

冒泡排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yt369e0d-1620290959633)(img/冒泡排序.gif)]

数组的反转

比如:有一个数组为{11, 22, 33,66, 44, 55},反转后为 {55, 44, 33, 22, 11}

class Demo8 {
	
	public static void main(String[] args) {
		
		int[] arr = {11, 22, 33, 44, 55, 66};
		/*
			数组arr反转之后的结果为{66, 55, 44, 33, 22, 11}
			
			分析过程如下:
				第一步: 将数组的第1个元素和倒数第一个元素交换
						 arr[0]      arr[arr.length-1-0]
				第二步: 将数组的第2个元素和倒数第二个元素交换
						 arr[1]      arr[arr.length-1-1]
				第三步: 将数组的第3个元素和倒数第三个元素交换
						 arr[2]      arr[arr.length-1-2]
							
			发现规律如下:
						索引为:
						   0          arr.length-1-0
						   1		  arr.length-1-1
						   2		  arr.length-1-2
						   
						变化的值都为0 1 2 正好和for循环的i变化相同
						
			所以可以将以上三步给总结成一步为:
						arr[i]        arr[arr.length-1-i]
				
		*/
		
		//逆序
		for(int i = 0; i < arr.length / 2; i++) {  // i = 0 1 2
			
			int temp = arr[i];
			arr[i] = arr[arr.length-1-i];
			arr[arr.length-1-i] = temp;
				
		}
		
		//遍历
		for(int i = 0; i < arr.length; i++){
			
			System.out.println(arr[i]);
		}
		
	}
}

三、开发工具IDEA

3.1 下载
官网:https://www.jetbrains.com/zh-cn/idea/download/#section=windows

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rXhWrAFL-1620290959634)(img/image-20210412180119250.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BFhvMFnd-1620290959635)(img/image-20210412180300507.png)]

推荐下载的版本2019.3.5
下载地址为:https://download.jetbrains.com/idea/ideaIU-2019.3.5.exe
3.2 安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SBTE0cKl-1620290959636)(img/image-20210412182711115.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mwK00CYI-1620290959637)(img/image-20210412182827904.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0A5KBvdV-1620290959638)(img/image-20210412183013939.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HiuMnvEJ-1620290959639)(img/image-20210412183128693.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NW0aUxTq-1620290959639)(img/image-20210412183235384.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFUAkoip-1620290959640)(img/image-20210412183508422.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-71TakwTx-1620290959641)(img/image-20210412183834145.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XyYj6tXo-1620290959642)(img/image-20210412183937481.png)]

3.4 IDEA项目结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-91m6QjQR-1620290959643)(img/image-20210412192758602.png)]

注意:
	1. 一个项目Project中可以有多个模块Module
	2. 一个模块Module中可以有多个包Package
3.5 创建一个项目及模块
1. 在Idea初试界面点击 Create New Project
2. 选择Empty Project创建空项目
3. 在自动弹出来的Project Settings中对Project进行设置,设置之后点击apply应用一下(注意:先别点击OK)
		1. 进行SDK选择(一般选择jdk8或者jdk11)
		2. 进行编译版本选择(和jdk版本保持一致即可)
4. 在Project Settings中的Modules中点击 + 号 创建一个模块
		1. 点击 + 号之后会有一个add New Module
		2. 在弹出的New Module窗口中新建一个Java Module即可
	
注意:
	一个项目中是可以放多个模块Module的

在一个项目中添加多个Module的方式为:
1. 点击File,选择 Project Structure
2. 在弹出的Project Structure中的Modules中新建一个Module即可(方式同上)
image-20210105165320982 image-20210105165541733 image-20210105165738905 image-20210105165824707 image-20210105165930597 image-20210105170006331
3.6 简单配置
字体大小
方式一:一次性调节
			对File-Settings-Editor-Font中的Size进行字体大小设置
方式二:通过ctrl+鼠标滚轮调节
			在File-Settings-Editor中点击General,然后在右侧的Mouse中选择Change font size(Zoom)with Ctrl + Mouse Wheel
image-20210105170145480
主题
image-20210105170312424
3.7 快捷操作
1. main方法
		在编辑界面写上 main或者 psvm
2. 输出语句
		在编辑界面写上 sout
3. 单行注释
		Ctrl + /
4. 多行注释
		Ctrl + Shift + /
5. 删除选中的行
		Ctrl + Y
6. 赋值选中的行
		Ctrl + D

Ctrl + Mouse Wheel


<img src="笔记/img/image-20210105170145480.png" alt="image-20210105170145480" style="zoom: 67%;" />

##### 主题

<img src="笔记/img/image-20210105170312424.png" alt="image-20210105170312424" style="zoom:67%;" />

#### 3.7 快捷操作

```java
1. main方法
		在编辑界面写上 main或者 psvm
2. 输出语句
		在编辑界面写上 sout
3. 单行注释
		Ctrl + /
4. 多行注释
		Ctrl + Shift + /
5. 删除选中的行
		Ctrl + Y
6. 赋值选中的行
		Ctrl + D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值