数组与一维数组(重点)

相关概念:
数组是数据结构中一种最基本的结构
-
数组名
-
元素
-
角标,下标,索引
-
数组的长度:元素的个数
-
特点:数组是有序排列的
-
数组的类型是引用类型;但是里面的元素类型不是,可能是基本数据类型(int , double)或者引用数据类型(String)。
-
创建数组对象会在内存中开辟一块连续的空间
-
数组的长度一旦确定以后就不可以修改
数组的分类:
-
按照维度:一维数组、二维数组。。。。。。
-
按照数组元素的类型:基本数据类型元素数组、引用数据类型元素数组
一维数组的使用:
-
一维数组的声明和初始化
-
如何调用数组的指定位置的元素
-
如何获取数组的长度
-
如何遍历数组
-
数组元素的默认初始化值
-
数组的内存解析
package com.my.nonworking;
/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月15日下午8:02:01
*/
public class Array01 {
public static void main(String[] args) {
int num;//声明
num=10;//初始化
//声明+初始化:int nun=10;
int[] nums;//一维数组的声明
//注意:下面是静态初始化
//静态初始化:数组的初始化和数组元素的赋值同时进行
nums= new int[] {10,20,30,40,50,60,70};//一维数组的静态初始化
//注意:接下来是动态初始化
//动态初始化:数组已经初始化,但是元素并没有赋值(分开赋值)
String[] names= new String[5];//场景举例:比如银行的客户信息存储。[5]表示指定长度
//数组一旦完成初始化,其长度就确定了(无论是静态还是动态)
//接下来开始进行赋值:
names[0]="老张";//注意:赋值的角标(下标或索引)从0开始,数组的长度-1结束
names[1]="老李";//charAt(0);可以获取字符串里面的具体的值
names[2]="老王";
names[3]="老周";
names[4]="老孙";
//如何获取数组的长度:通过属性length
System.out.println(names.length);//5
System.out.println(nums.length);//7
//如何遍历数组元素:(使用循环结构)
for(int i=0;i<names.length;i++) {
System.out.println(names[i]);
/*
* 输出结果:
* 5
* 7
* 老张
* 老李
* 老王
* 老周
* 老孙
*/
}
}
}
不同类型的元素默认初始值不同:
-
整形的默认初始化值:0
-
浮点型的默认初始化值:0.0
-
char型的默认初始化值:0、\u0000
-
boolean型的默认初始化值:false
-
String型的默认初始化值:null
package com.my.nonworking;
/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月15日下午8:07:16
*/
public class Array02 {
public static void main(String[] args) {
// 数组元素的默认初始化值
int[] num= new int[4];
for(int i=0;i<num.length;i++) {
System.out.println(num[i]);
// 0
}
System.out.println("==========================");
float[] num1= new float[4];
for(int i=0;i<num1.length;i++) {
System.out.println(num1[i]);
//0.0
}
System.out.println("==========================");
char[] num2= new char[4];
for(int i=0;i<num2.length;i++) {
System.out.println(num2[i]);
//
System.out.println("*"+num2[i]+"*");
//* *
}
if(num2[3]==0) {System.out.println("嘿嘿");}
//嘿嘿
//char num5='\u0000';
//System.out.println("*"+num5+"*");
System.out.println("==========================");
boolean[] num3= new boolean[4];
for(int i=0;i<num3.length;i++) {
System.out.println(num3[i]);
//false
}
System.out.println("==========================");
String[] num4= new String[4];
for(int i=0;i<num4.length;i++) {
System.out.println(num4[i]);
//null
}
}
}
网红招租:
单间500元一个月,房东电话为:
package com.my.nonworking;
/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月15日下午9:37:55
*/
public class Array03 {
public static void main(String[] args) {
int[] arr=new int[] {8,2,1,0,3};
int[] index=new int[] {2,0,3,2,4,1,0,3,2,3,3};
String tel="";
for(int i=0;i<index.length;i++) {
tel+=arr[index[i]];
}
System.out.println(tel);
}
}
来看一个题目:从键盘统计学生个数,循环记录从键盘输入的学生成绩,然后输出对应的成绩登记,并且统计最高成绩
package com.my.nonworking;
import java.util.Scanner;
/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月15日下午10:15:57
*/
public class Array04 {
//规则:最高分100,90分以上A,80-90分B,70-80分C,其余为D。
//随意输入五个学生成绩,最后计算出最高分
public static void main(String[] args) {
//1.从键盘读取学生成绩
//2.创建数组,准备存储学生成绩
//3.给数组中的元素赋值
//4.获取数组元素的最大值:最高分
//5.根据学生成绩输出对应的成绩的等级
Scanner scanner= new Scanner(System.in);
System.out.println("请输入学生个数:");
int num=scanner.nextInt();
int max=0;
int[] grades=new int[num];
System.out.println("请输入"+num+"个学生的成绩:");
for(int a=0;a<grades.length;a++) {
grades[a]=scanner.nextInt();
if(grades[a]>=max) {max=grades[a];}
}
for(int a=0;a<grades.length;a++) {
switch(grades[a]/10) {
case 10:
case 9:System.out.println("student"+a+"的成绩登记为A");break;
case 8:System.out.println("student"+a+"的成绩登记为B");break;
case 7:System.out.println("student"+a+"的成绩登记为C");break;
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:System.out.println("student"+a+"的成绩登记为D");break;
}
}
//for(int a=0;a<grades.length;a++) {
// if(grades[a]>=max) {max=grades[a];
//}
//}
System.out.println("最高分为:"+max);
}
}
注意:引用类型的数组,堆里面存放的要么是null要么是地址。

浙公网安备 33010602011771号