220220
集成环境:把代码,编写,编译,执行,调试等多功能综合工具
项目结构:
层级关系: project - module - package - class
project(项目,工程)中可以创建多个 module
module(模块) 中可以创建多个 package
package(包) 中可以创建多个class
=========================
快捷键:ctrl + alt + l : 格式化代码
alt + enter : 代码修正提醒
ctrl + d : 向下复制一行
ctrl + x : 剪切当前行
ctrl + / : 加入单行注释
ctrl + shift + / : 加入多行注释
alt + shift + 向上符号 : 上移当前行
alt + shift + 向下符号 : 下移当前行
shift + enter : 回车换行
数组
数组的动态初始化
数组用于存储 [同种数据类型] 的多个值
==================================
数组定义格式 : 数组类型[] 数组名
数据类型 数组名[]
==================================
数组的动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式 : 数组类型[] 数组名 = new 数据类型[数组长度]
int[] arr = new int[5];
System.out.println(arr);//[I@50cbc42f 打印出的是内存地址
=================================
数组元素访问
格式 : 数组名[索引]
索引 : 数组中空间的编号
特征 1 : 索引从0开始
特征 2 : 索引是连续的
特征 3 : 索引逐次增加,每次加1
作用:访问数组容器中的空间位置
注意:数组在创建后,即使没有赋值,取出时系统依然会为取出元素赋默认初始值,其中比较特殊的有:
char 初始值为 空字符,什么都没有
boolean 初始值 false
String 初始值 null
内存分配
java运行时,需要在内存中分配空间,为了提高运算效率,会对空间进行不同区域的划分,每一片区域都有特定的处理数据方式和内存管理方式
===================================
栈内存:方法运行时,进入的内存,局部变量都存放在这块内存中
堆内存:new 出来的内容都会进入堆内存,并且会存在地址值
方法区:字节码文件(.class文件)加载时进入的内存
//本地方法栈:调用操作系统相关资源
//寄存器:交给cpu去使用
===================================
注意: 1.每执行一次new操作,堆内存中就会新开辟一个空间地址,空间地址不会发生重复
2.Java中只有值传递,没有引用传递的概念
数组的静态初始化
静态初始化 : 初始化时,就可以指定数组要存储的元素,系统会自动计算出该数组长度
格式 : 数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3...};
简化格式 : 数据类型[] 变量名 = {数据1,数据2,数据3...};
int[] arr1 = new int[]{11,22,33};
int[] arr2 = {11,22,33};//注意本句的new int[]只是省略了,并不意味着不存在,计算机会识别并自动补全在运算
两种初始化对比
动态初始化 : 手动指定数组长度,有系统给出默认初始化值
静态初始化 : 手动指定数组元素,系统会根据元素个数,计算出数组长度
动态初始化适用于 : 只明确元素个数,不明确具体数值的场景
静态初始化适用于 : 需求中已经明确了要操作的具体数据的场景
数组操作的两个小问题
1.索引越界:访问了数组中不存在的索引
2.空指针异常:访问的数组已经不再指向堆内存的数据
int[] arr = new int[3];
//把null赋值给数组
arr = null;
//输出元素
System.out.println(arr[0]);
注意:null,空值,引用数据类型的默认值,表示不指向任何有效对象
数组常见操作
数组遍历:将数组中所有数据取出来
获取数组元素数量:数组名.length
注意:遍历指的是取出数据的过程,并不能简单理解为打印所有数据
================================
//获取最小值
public class TestArrayMin {
public static void main(String[] args) {
int[] arr = {12,45,98,73,60};
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (min > arr[i]){
min = arr[i];
}
//min = min > arr[i] ? arr[i] : min;
}
//soutv
System.out.println("min = " + min);
}
}
================================
//查找输入值索引数
import java.util.Scanner;
public class DemoArraySearch {
public static void main(String[] args) {
int[] arr = new int[]{19,28,37,46,50};
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据:");
int num = sc.nextInt();
//标记位思想
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (num == arr[i]){
index = i;
break;
}
}
System.out.println("index = " + index);
}
}
============================================
//键入值求和
import java.util.Scanner;
public class DemoArraySum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
int sum = 0;
for (int i = 0; i < arr.length; i++) {
System.out.println("输入"+(i+1)+
