目录
数组定义
注意点:
地址值是数组在内存中实际存储的地址。
案例遍历:遍历数组得到每一个元素,求数组里面所有数据和
案例:定义数组,遍历能被3整除的数字
案例:遍历一个数组,奇数将当前值扩大两倍,偶数当前数变为原来1/2
数组的动态的初始化:
案例:定义动态数组
案例:求最值:求最大值求最小值
案例:生成10个1-100之间的随机数存入数组,求所有数据的和,数据的平均数,多少数据比平均值小
案例:交换数组中的数据:
案例:打乱数组中的数据:
Java内存分布:
数组定义
注意点:
数组的初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器的过程。
数组一旦创建完毕,数组的长度就不会在发生变化了。
地址值是数组在内存中实际存储的地址。
arr.lenth是数组的长度。
自动快速生成数组遍历的方式:用IDEA:数组名.fori就可以快速生成。
案例遍历:遍历数组得到每一个元素,求数组里面所有数据和
package textwj;
//遍历数组得到每一个元素,求数组里面所有数据和
public class text11 {
public static void main(String[] args) {
//定义一个数组
int[]arr={1,2,3,4,5};
//定义一个求和变量
int sum=0;
for(int i=0;i<arr.length;i++){
//求数组里面数据的和
sum+=arr[i];
//输出数组里面每一项的数
System.out.println("数组第"+"i"+"位的值为:"+arr[i]);
}
System.out.println("数组每一项加起来的和:"+sum);
}
}
案例:定义数组,遍历能被3整除的数字
package textwj;
//定义数组,遍历能被3整除的数字
public class text13 {
public static void main(String[] args) {
//定义一个数组,存1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
int[]arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
//遍历数组得到每一个元素
int sum = 0;
System.out.println("数组中是3的倍数的是:");
for (int i = 0; i < arr.length; i++) {
//判断元素是否为3的倍数,如果是
if (arr[i] % 3 == 0) {
System.out.println(arr[i]);
sum++;
}
}
System.out.println("总共有"+sum+"个数是3的倍数");
}
}
案例:遍历一个数组,奇数将当前值扩大两倍,偶数当前数变为原来1/2
package textwj;
//遍历一个数组,奇数将当前值扩大两倍,偶数当前数变为原来1/2
public class text14 {
public static void main(String[] args) {
int[]arr = {1,2,3,4,5,6,7,8,9,10};
//遍历每一个数,得到数
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0) {
//偶数
System.out.println("偶数/2"+" "+arr[i]/2);
}else {
//奇数
System.out.println("奇数*2"+" "+arr[i]*2);
}
}
}
}
数组的动态的初始化:
案例:定义动态数组
数组静态初始化和动态初始化区别
数组内存图:下一个阶段在学。
案例:求最值:求最大值求最小值
package textwj;
import java.util.Scanner;
//定求最大值
public class text15 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数组中的5个数值");
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
int l = sc.nextInt();
int r = sc.nextInt();
int[] arr = new int[5];
int max=arr[0];
for (int i = 0; i < arr.length; i++) {
if (i==0){
arr[i] = n;
} else if (i==2) {
arr[i] = m;
} else if (i==3) {
arr[i] = k;
}else if (i==4) {
arr[i] = l;
}else{
arr[i] = r;
}
}
for (int i=0;i<5;i++){
if (arr[i]>max){
max=arr[i];
}
}
int min=arr[0];
for (int i=0;i<5;i++){
if (arr[i]<min){
min=arr[i];
}
}
System.out.println("最大值是");
System.out.println(max);
System.out.println("最小值是");
System.out.println(min);
}
}
案例:生成10个1-100之间的随机数存入数组,求所有数据的和,数据的平均数,多少数据比平均值小
package textwj;
import java.util.Random;
//生成10个1-100之间的随机数存入数组,求所有数据的和,数据的平均数,多少数据比平均值小
public class text16 {
public static void main(String[] args) {
int[] a = new int[10];
Random rand = new Random();
for (int i = 0; i < 10; i++) {
//赋值1-100之间的数,所以末尾加1
a[i] = rand.nextInt(100) + 1;
}
System.out.println("生成的数是");
for (int i = 0; i < a.length; i++) {
int j = 0;
j = i + 1;
System.out.println("生成你的第" + j + "数为: " + a[i]);
}
//求平均数
int sum = 0;//总和
for (int i = 0; i < a.length; i++) {
sum =sum+a[i];
}
System.out.println("平均数为" + sum / 10);
//哪些数比平均数小
int count = 0;//计数
System.out.println("比平均值小的数为:");
for (int i = 0; i < a.length; i++) {
if (a[i] < sum/10) {
System.out.println(a[i]);
count++;
}
}
System.out.println("比平均数小的总共为" + count + "个");
}
}
案例:交换数组中的数据:
package textwj;
//数组倒序交换
public class text17 {
public static void main(String[] args) {
int[]a={1,2,3,4,5};
for (int i = 0,j=a.length - 1; i<j;i++,j--) {
//交换指向元素
int k=a[i];
a[i]=a[j];
a[j]=k;
}
for (int i=0;i<a.length;i++) {
System.out.println(a[i]);
}
}
}
案例:打乱数组中的数据:
package textwj;
import java.util.Random;
public class text18 {
public static void main(String[] args) {
int[]a={1,2,3,4,5};
Random rand = new Random();
int random=rand.nextInt(a.length);
System.out.println(random);
for (int i = 0; i < a.length; i++) {
int temp=a[i];
a[i]=a[random];
a[random]=temp;
}
//验证
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
Java内存分布:
数组终于学完了