java基础重温_04: IDEA常用快捷键、数组(动态初始化,静态初始化、数组元素访问、数组内存)、数组操作常见异常、遍历数组、获取数组最值 (3.19)
1、IDEA常用快捷键:
快捷键 | 功能 |
---|---|
Ctrl + Shift + / | 选中代码注释,多行注释,再按取消注释 |
Ctrl + Alt + L | 格式化代码 |
Ctrl + / | 添加或取消单行注释 |
Ctrl + x | 删除光标所在行 |
Ctrl + D | 复制光标所在行的内容,插入光标位置下面 |
Alt + Shift + 上下箭头 | 移动当前代码行 |
Shift + Enter | 快速换行 |
psvm | 快速生成main方法 |
sout | 快速生成打印语句 |
Ctrl + Alt + Space | 自动代码补全提示 |
2、数组
数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。
格式1:
数据类型[] 数组名
int[] arr; double[] arr; char[] arr;
格式2:
数据类型 数组名[]
int arr[]; double arr[]; char arr[];
数组动态初始化
数组动态初始化就是只给定数组的长度,由系统给出默认初始化值。
String数组的默认值是null
int 的默认值是0
double的默认值是0.0
格式:
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
- 等号左边: int:数组的数据类型
- []:代表这是一个数组
- arr:代表数组的名称
-
new:为数组开辟内存空间
数组元素访问 (索引)
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。
这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
访问数组元素格式: 数组名[索引];
public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; //输出数组名 System.out.println(arr); //[I@880ec60 //输出数组中的元素 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }
3、内存分配
内存概述
内存是计算机中的重要原件,临时存储区域,作用是运行程序。
我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。
必须放进内存中才能运行,运行完毕后会清空内存。
Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。
java中的内存分配
目前我们只需要记住两个内存:栈内存和堆内存
栈内存: 存放基本类型的变量,对象的引用和方法调用,遵循先入后出的规则
堆内存: 存放所有new出来的对象
区域名称 | 作用 |
---|---|
寄存器 | 给CPU使用,和我们开发无关。 |
本地方法栈 | JVM在使用操作系统功能的时候使用,和我们开发无关。 |
方法区 | 存储可以运行的class文件。 |
堆内存 | 存储对象或者数组,new来创建的,都存储在堆内存。 |
方法栈 | 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 |
单个数组内存图
int[] arr = new int[3]
=号左边部分:int[] arr 放在栈内存
=号右边部分:new int[3] 放在堆内存。指定数组长度,系统默认讲数组元素赋值为0
多个数组内存图
多个数组指向相同内存图
4、数组静态初始化
什么是静态初始化?
在创建数组时,直接将元素确定
静态初始化格式
完整版
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
简化版
数据类型[] 数组名 = {元素1,元素2,...};
示例代码:
public class ArrayDemo { public static void main(String[] args) { //定义数组 int[] arr = {1, 2, 3}; //输出数组名 System.out.println(arr); //输出数组中的元素 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }
数组操作的两个常见小问题
1、索引越界异常
数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。
程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
实例代码
public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3];System.out.println(arr[3]); } }
解决方案
将错误的索引修改为正确的索引范围即可!
2、空指针异常
arr = null 这行代码,意味着变量arr将不会再保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
实例代码
public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; //把null赋值给数组 arr = null; System.out.println(arr[0]); } }
解决方案
给数组一个真正的堆内存空间引用即可!
5、数组遍历【应用】
数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
需求:
使用循环遍历数组,数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。
代码实现:
public class ArrayTest01 { public static void main(String[] args) { //定义数组 int[] arr = {11, 22, 33, 44, 55}; //使用通用的遍历格式 for(int x = 0; x < arr.length; x++) { System.out.println(arr[x]); } } }
6、数组最值
最大值获取:
从数组的所有元素中找出最大值。
实现思路:
- 定义变量,保存数组0索引上的元素
- 遍历数组,获取出数组中的每个元素
- 将遍历到的元素和保存数组0索引上值的变量进行比较
- 如果数组元素的值大于了变量的值,变量记录住新的值
- 数组循环遍历结束,变量保存的就是数组中的最大值
代码实现:
public class ArrayTest02 { public static void main(String[] args) { //定义数组 int[] arr = {12, 45, 98, 73, 60}; //定义一个变量,用于保存最大值 //取数组中第一个数据作为变量的初始值 int max = arr[0]; //与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中 for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } //循环结束后打印变量的值 System.out.println("max:" + max); } }
数组最小值获取同理
- 点赞
- 收藏
- 分享
- 文章举报
- 黑马程序员——Java基础---- 数组(静态初始化_常见问题)(04)
- 尚硅谷第四课0722班 java-特殊流程控制 -数组元素的默认初始化-数组操作常见问题-Java内存的结构
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
- Java基础 - 数组,内存,数组遍历、取最值等操作
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
- java学习笔记之数组、数组访问、越界异常、空指针异常、遍历、获取最大值
- Java语言基础-数组的静态初始化和内存分析
- Java语言基础-数组的动态初始化和内存分析
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
- Java数组概述、定义格式说明、初始化、内存分配及常见操作
- Java基础知识总结04-数组及数组的常见操作
- java的基础复习02 (数组的定义,数组的属性,数组遍历 ,数组的排序,数组的常见异常)
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
- java基础常见问题和eclipse常用快捷键
- java基础-Map的静态初始化以及Map的遍历等.....................
- JAVA基础再回首(二十三)——操作基本数据类型的流、内存操作流、打印流、随机访问流、合并流、序列化流
- 04.java语言基础-数组中的数组(多维数组)-多维数组的操作
- Java基础之方法的重载 数组定义遍历内存分析
- Java 数组的静态初始化和动态初始化
- 数组的常见的异常--Java基础029