数组的概念:
1. 什么是数组?
可以存储多个元素,并且必须是同一种数据类型的元素的容器,叫数组.
数组定义格式:
格式一(推荐的方式):
数据类型[] 数组名;
格式二:
数据类型 数组名[];
实例:
定义一个数组,存储学生成绩 小数
double[] scores
定义一个数组,存储学生的姓名
String[] names
2. 数组的定义格式一_动态初始化
总结:
什么是动态初始化:
- 我们给出数组的长度,由系统给出默认的初始化值;
int a = 10;
数组的格式:
数据类型[] 数组名 = new 数据类型[长度];
定义一个数组,存储50个学生成绩 浮点数:
double[] scores = new double[50];
定义一个数组,存储80个学生的姓名
String[] names = new String[80];
格式解释:
数据类型: 数组中的存储的元素是什么数据类型
[]: 代表的是一维数组
数组名: 数组的名称 按照定义标识符的规则定义即可
new: 关键字,创建了一个数组
数据类型: 跟左边的数据类型是一致的
长度: 代表的是数组中可以存储多少个元素
3. 访问数组元素进行获取
1.直接打印数组变量名, 结果是什么?
数组的地址值
2.索引概念如何解释:
编号的意思,编号都是连续的
3.如何使用索引获取元素:
获取元素的格式:
数组名[索引]
给元素赋值格式:
数组名[索引] = 值;
4.数组中最小索引是: 0
最大索引是: 数组的长度-1
4. Java中的内存划分
- 栈
存储局部变量 在方法中或者是在方法的声明上()存储的变量,程序的运行都必须要进栈的. - 堆
只要是能被new出来的都是存储在堆内存中地址值是以十六进制的形式打印出来的. - 方法区
存储.class文件的 - 本地方法区
跟系统有关的 - 寄存器
跟CPU有关系的
- 数组的定义格式二_静态初始化
静态初始化的基本格式为?
总结:
静态初始化:我们给出数组中的元素,由系统自动计算数组的长度.
标准的格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,…};
简化的格式:
数据类型[] 数组名 = {元素1,元素2,元素3,…};
- 静态初始化有长度吗?
有, 长度是有系统计算的.
常见问题_数组索引越界异常:
- 访问了不存在的索引 就会报 ArrayIndexOutOfBoundsException : 数组索引越界异常
2.如何解决:
只要访问存在的索引就可以解决这个问题
常见问题_空指针异常:
总结:
引用类型变量 没有指向有效的堆内存中的地址了,就会报 NullPointerException: 空指针异常
如何解决:
只要让引用类型变量指向有效的堆存在中的地址即可,解决这个问题
求出数组中的最值:
public class ShuZu{
public static void main(String[] args){
int[] arr = {23,544,56,1,23,45,21,1,78};
int max=arr[0];
for (int i = 1; i < arr.length; i++) {
if(max < arr[i]){
max = arr[i];
}
}
System.out.println(max);
}
}
此为案例二
import java.util.Random;
/*
1:设定一个长度为十的int类型数组
2:给该数组赋上随机值
3:打印个位十位不包含7的元素
*/
public class ZuoYe{
public static void main(String[] args) {
//创建对象
Random r = new Random();
// 创建一个元素总数为十的int类型的数组
int[] shuzu = new int[10];
//使用for循环对数组内的所有元素进行随机赋值.
for(int l=0;l<shuzu.length;l++) {
shuzu[l]=r.nextInt(80-50+1)+50;
//展示所有元素的数值
System.out.println(shuzu[l]);
}System.out.println("---------");
for(int l =0;l<shuzu.length;l++){
shuzu[l]=r.nextInt(80-50+1)+50;
//设置两个变量分别为个位数与十位数的取余
int ge =shuzu[l]%10;
int bai = shuzu[l]/10%10;
//运用if语句对个位和十位数进行判断
if (ge!=7&&bai!=7){
//判断后进行打印
System.out.println(shuzu[l]);
}
}
}
}
案例三生成随机数组
/*
第五题:分析以下需求并实现
1.定义一个用于存放班级分数的数组 int[] score;数组长度为5,并使用随机数(范围为0-100)为数组赋值
2.求出班级不及格人数(分数低于60分的就是不及格)
3.求出班级的平均分
4.求出班级的总分数
*/
import java.util.Random;
public class ZuoYe{
public static void main(String[] args) {
Random r = new Random();
//定义长度为5的数组
int[] fenshu = new int[5];
//利用for循环产生5个随机数并给数组
int bujige = 0;
double zongfen = 0;
for (int j = 0; j < fenshu.length; j++) {
//使用随机数给数组赋值
fenshu[j] = r.nextInt(101);
//这里是每次赋值后对所有的数值进行的加法计算并赋值给一个变量.
zongfen += fenshu[j];
//展示数组内的五个分数
System.out.println("分数为:" + fenshu[j]);
//此处用来计算不及格的人的数.
if (fenshu[j] < 60) {
bujige++;
}
}
//这个语句为 平均分的计算 用所有的数值总和除以数组的元素个数,然后输出.
double pingjunfen=zongfen/fenshu.length;
System.out.println("不及格为" + bujige+"个");
System.out.println("总分为:"+zongfen);
System.out.println("平均分:"+pingjunfen);
}
}
第三题:分析以下需求并实现
1.打印1到100之内的整数,但数字中包含9的要跳过
2.每行输出5个满足条件的数,之间用空格分隔
3.如:1 2 3 4 5
public class Test{
public static void main(String[] args) {
//使用for循环来实现1-100之间整数的打印
//此处需要定义一个变量来进行换行
int huanhang = 0;
for (int shu = 1; shu <= 100; shu++) {
//使数字中包含9的数字跳过
if (shu % 10 != 9 && shu / 10 % 10 != 9) {
System.out.print(shu + " ");
huanhang++;
if (huanhang % 5 == 0) {
System.out.println();
}
}
}
}
}