JavaSE(上)-Day6
JavaSE(上)-Day6
- 数组
- 数组的定义
- 数组的初始化
- 打印数组分析
- 数组索引
- 数组内存图
- 方法
- 方法的定义和调用
- 方法的重载
- 方法的内存图
- 二维数组
- 二位数组的创建和初始化
- 二维数组的内存图
数组
1.数组是一种容器,可以一次存储多个相同类型的数据
数组的定义
int[] array1;
int array2[];
数组的初始化
// 1.两种静态初始化 静态初始化当开始明确了数组填充的值使用
// 1.1 完整格式
int[] array3 = new int[]{18, 24, 32};
// 1.2 简写格式
double array4[] = {175.5, 173.5, 182.0};
// 2. 一种动态初始化 动态初始化开始只可以确定长度时使用
int[] array33 = new int[10];
array33[0] = 1;
// 注意:数组动态初始化,会赋予默认值
// 基本数据类型中:整数 0 浮点数 0.0 char '\u0000' boolean false
// 引用数据类型: null
打印数组分析
// 打印是数组的地址
//[I@4eec7777、[D@3b07d329 [表示数组 I/D表示数组的类型 @后面是16进制,真正的地址
数组索引
- 数组索引从零开始
- 注意:数组索引不在范围内会报错
数组内存图
- 方法运行就会进入栈中执行
- new出现就会在堆中开辟地址 图1
- 多个数组可以指向同一个地址 图2
方法
- 方法是程序执行的最小单位
- 方法用于打包重复或者独立功能的代码
- 方法提高了代码的复用性和可维护性
方法的定义和调用
package com.itheima.demo;
/**
* 方法练习
*/
public class MehthodDemo01 {
public static void main(String[] args) {
// 无参无返回值方法的调用
// 看到方法调用方法,方法执行完毕返回调用处。
playGame();
//有参无返回值方法的调用
// 方法调用填充的变量或字面量的数目和类型要与方法定义是参数保持一致
// 方法调用的参数叫实参
ChangC(15, 5);
cicleS(2.2);
// 有参有返回值方法的调用
double s1 = getArea(1.2, 2.2);
double s2 = getArea(1.5, 1.7);
if (s1 > s2) {
System.out.println("第一个长方形的面积大");
} else if (s1 < s2) {
System.out.println("第二个长方形的面积大");
} else if (s1 == s2) {
System.out.println("两个长方形的面积一样大");
}
}
// 无参无返回值方法的定义
public static void playGame() {
System.out.println("1.选择角色");
System.out.println("2.进入王者峡谷");
System.out.println("3.对线");
System.out.println("4.推水晶");
System.out.println("5.打赢结束");
}
// 有参无返回值方法的定义
// 方法定义的是形参
// 计算长方形的周长
public static void ChangC(int length, int width) {
System.out.println(length * 2 + width * 2);
}
// 计算圆的面积
public static void cicleS(double r) {
System.out.println(r * r * Math.PI);
}
// 比较两个长方形的面积
public static double getArea(double len, double width) {
return len * width;
}
}
方法的重载
- 同一个类中,有数目不同或形参类型不同的多个重名方法称之为重载,与返回值类型无关
方法的内存图
- 基本数据类型和引用数据类型的区别
- 基本数据类型的数据值是存在栈里变量定义的空间中的
- 引用数据类型的数据值是存在堆里开辟的空间的,开辟空间的地址存在栈里变量定义的空间中
- 数据类型的传值传递的就是栈里存储的数据。对应基本数据类型是真正的值,对应引用数据类型是地址。
二维数组
二维数组应用于对一组数据进行分组
二位数组的创建和初始化
- 静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5,6}};
int[][] arr2 = {{1,2,3},{4,5,6}};
- 动态初始化
int[][] arr3 = new int[2][3];
arr[0][0] = 1;
- 遍历二维数组(略)
- 动态给二维数组赋值(略)
二维数组的内存图
- 栈中执行main方法
- 栈中创建arr变量
- 堆中初始化一个长度为2的二维数组 索引0和1初始为null
- 堆中初始化两个长度为3的一位数组 索引填充值为0,地址分别填充至二维数组
- 栈中arr变量保存堆中的二维数组地址
1.特殊情况1 不指定每个一位数组的长度
- 特殊情况2