数组就是用来存储一批同种类型数据的内存区域。
数组的定义
静态初始化数组
定义数组的时候直接给数组赋值。
格式
数组变量名中存储的是数组在内存中的地址,数组是引用类型。
数组访问
格式:数组名称[索引]
数组的最大索引:length - 1(前提是元素个数大于0)。
注意
1. 数据类型[] 数组名 == 数据类型 数组名[]
2. 存储的数据类型要与数组类型保持一致。
3. 数组一旦定义出来,当运行的时候它的长度、类型固定不变。
动态初始化数组
定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。
格式
何时使用动态初始化?何时使用静态初始化?
当已经知道存入元素的值,用静态初始化。
不清楚存入元素的值,用动态初始化。
动态初始化数组的元素默认值
规则:
数组的遍历
遍历:就是一个一个数据的访问。
public class test {
public static void main(String[] args) {
int[] ages = {12,13,14};
for (int i = 0; i < ages.length; i++) { //快捷键:ages.fori
System.out.println(ages[i]);
}
}
}
案例
数组元素求和
某部门员工销售额为:16,26,36,6,100
求:计算整个销售额
//数组元素求和
public class test {
public static void main(String[] args) {
int[] num = {16,26,36,6,100};
int sum = 0;//求和
for (int i = 0; i < num.length; i++) {
sum += num[i];
}
System.out.println("总销售额为: " + sum);
}
}
数组求最值
某部门员工销售额为:16,26,36,6,100
求:单个员工销售额的最大值
//数组求最值
public class test {
public static void main(String[] args) {
int[] num = {16,26,36,6,100};
int max = num[0];//求和
for (int i = 0; i < num.length; i++) {
if(max < num[i]){
max = num[i];
}
}
System.out.println("单个员工销售额的最大值为: " + max);
}
}
猜数字游戏
// 猜数字游戏
import java.util.Random;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Random ra = new Random();
Scanner sc = new Scanner(System.in);
int[] data = new int[5];
for (int i = 0; i < data.length; i++) {
data[i] = ra.nextInt(20) + 1;
}
OUT:
while (true){
System.out.println("输入一个1-20之间的整数");
int guess = sc.nextInt();
for (int i = 0; i < data.length; i++) {
if (guess == data[i]) {
System.out.println("运气不错,猜中了");
System.out.println("该数据第一次出现的位置是第" + i + "位");
break OUT;//结束死循环,代表游戏结束了
}
}
System.out.println("未猜中,重猜");
}
for (int i = 0; i < data.length; i++) {
System.out.printf(data[i] + " ");
}
}
}
随机排名
public class demo {
public static void main(String[] args) {
int[] num = new int[5];
int temp;
Random ra = new Random();
Scanner sc = new Scanner(System.in);
System.out.println("输入五名员工工号");
for (int i = 0; i < num.length; i++) {
num[i] = sc.nextInt();
}
for (int i = 0; i < num.length; i++) {
int index = ra.nextInt(num.length);
temp = num[i];
num[i] = num[index];
num[index] = temp;
}
System.out.println("排序之后的工号为: ");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
}
}
数组排序
冒泡排序
//冒泡排序
public class demo {
public static void main(String[] args) {
int[] data = {5,2,3,1};
int temp;
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data.length; j++) {
if (data[j] > data[i]){
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
System.out.println("排序的结果为:");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
}
}
Java内存分配介绍
堆内存
new出来的东西会在堆内存中开辟空间,并产生地址。
栈内存
方法运行时所进入的内存变量也是在这里。
方法区
.class(字节码文件)加载时进入的内存。