第七章 数组
7.1、数组概述
7.1.1、为什么需要数组
答:有时候需要存储或处理一系列数据,数组就可以充当这样的角色,它在内存中是相连的数据,并且在栈中的引用只有一个,
如果不用数组,那数据就得一个一个定义一个一个声明,浪费内存空间,显然不合理。
7.1.2、java中的数组
答:数组的结构和基本要素:
1、标识符:数组的名称,用于区分不同数组。
2、数组元素:向数组中存放的数据。
3、元素下标:对数组元素进行编号。
4、元素类型:数组元素的数据类型。
7.2、如何使用数组
7.2.1、使用数组的步骤
答: 语法:数据类型[] 数组名 数据类型 数组名[] 数组名[下标值]
数组名=new 数据类型[数组长度] 数据类型[] 数组名=new 数据类型[数组长度]
数据类型[] 数组名={值1,值2,值3,......,值n}
7.2.2、常见错误
答:1、数组下标从0开始
2、数组访问越界
7.2.3、上机练习
答:public class Goodsput{
public static void main(String[]arg){
String[] goods=new String[]{"fdgjf","jyhty","iyof","","jykyukl","klyuoyt","syhhffg"};
System.out.println("本次活动特价商品有:");
for(int i=0;i<goods.length;i++){
System.out.println(goods[i]);
}
}
}
7.3、数组应用
7.3.1、数组排序
答:import java.util.*;import java.util.Arrays;
public class ScoreSaort{
public static void main(String[]args){
int[] scores=new int[5];
Scanner input=new Scanner(Sysem.in);
System.out.println("请输入5为同学的学习成绩:");
for(int i=0;i<scores.length;i++){
scores[i]=input.nextInt();
}
Arrays.sort(scores);
System.out.println("学生成绩按升序排序");
for(int i=0;i<scores.length;i++){
System.out.println(scores[i]+" ");
}
}
}
7.3.2、上机练习
答:import java.util.Scanner;import java.util.Arrays;
public class ziMu{
public static void main(String[]args){
String[] zimu=new String[8];
System.out.println("请输入8个字符:");
for(int i=0;i<zumu.length;i++){
System.out.println(zimu[i]);
}
Arrays.sort(zumu);
System.out.println("升序字符序列:");
for(int i=0;i<ziMu.length;i++){
System.out.println(ziMu[i]+"");
}
System.out.println("逆序字符序列:");
for(int i=7;i>=0;i--){
System.out.println(ziMu[i]+"");
}
}
}
7.3.3、求数组最大值
答:import java.util.Scanner;
public class MaxScore{
public static void main(String[]args]);
int[] score=new int[15];
int max=0;
System.out.println("请输入学生成绩:");
for(int i=0;i<score.length;i++){
score[i]=input.nextInt();
}
max=score[0];
for(int i=1;i<score.length;i++){
if(score[i]>max){
max=score[i];
}
System.out.println("成绩坐分:");
}
}
7.3.4、上机练习
答:import java.util.*;
public class zuiXiaoZhi{
public static void main(String[] args){
int[] num=new int[54];
int min=0;
Scanner input=new Scannet(System,in);
System.out.println("请输入4家店的价格");
for(int i=0;i<num.length;i++){
System.out.println("第"+(i+1)+"家店的价格是:");
num[i]=input.nextInt());
}
min=num[0];
for(int i=0;i<num.length;i++){
if(num[i]<min){
min=num[i];
}
}
System.out.println("最低价格是:"+min);
}
}
7.4、深入了解数据类型
7.4.1、基本数据类型
答:对于基本数据类型,不同的变量会分配不同的存储空间,并且存储空间中存储的是该变量的值。赋值操作传递的是变量的值,
改变一个变量的值不会影响另一个变量的值。
7.4.2、引用数据类型
答:public class ReferenceTypeDemo{
public static void main(String[]args){
int[] infoZhang=new int[]{170,60};
int[] infoLi=infoZhang;
System.out.println("去年张的身高是"+infoZhang[0]+"体重是"+infoZhang[1]+"公斤");
infoLi[0]=180;
infoLi[1]=70;
System.out.println("去年张的身高是"+infoZhang[0]+"体重是"+infoZhang[1]+"公斤","黎明的身高是"+infoLi[0]+"体重是"+info[1]);
}
}
7.4.3、上机练习
答:import java.util.Scanner;
public class shangji5 {
public static void main(String[]args){
int[]points=new int[5]; //积分组
int[] newpoints=new int[5];
Scanner input=new Scanner(System.in);
System.out.println("请输入5位会员的积分:");
for(int i=0;i<points.length;i++){
System.out.println("第"+(i+1)+"次会员积分:"); //历史积分
points[i]=input.nextInt();
}
System.out.println("序号"+"\t\t\t历史积分"+"\t\t\t新年积分");
for(int i=0;i<points.length;i++){
newpoints[i]=points[i];
newpoints[i]=newpoints[i]+500; //赠送500积分
System.out.println((i+1)+"\t\t\t"+points[i]+"\t\t\t"+newpoints[i]);
} //(i+1):从1开始,从零开始不加1
}
}
本章总结
答:数组是可以在内存中连续存储多个元素的结构,数组中的所有元素必须相同的数据类型。
数组中元素通过数组的下标进行访问,数组下标从0开始。
一维数组可用一个循环动态初始化,或者用一个循环动态输出数组中的元素信息。
int,double,char,boolean类型是基本数据类型。
String和数组是引用数据类型。
本章作业
答:import java.util.Scanner;
public class NumberCount {
/** * 统计合法数字(1,2,3)和非法数字的个数 */
public static void main(String[] args) {
int[] num = new int[10]; //数字数组
int[] count = new int[4]; //统计每个数出现的个数
Scanner input = new Scanner(System.in);
System.out.println("请输入10个数");
for(int i = 0; i < num.length; i++){
num[i] = input.nextInt();
switch(num[i]){
case 1:
count[0]++;
break;
case 2:
count[1]++;
break;
case 3:
count[2]++;
break;
default:
count[3]++;
break;
}
}
System.out.println("数字 1 的个数:" + count[0]);
System.out.println("数字 2 的个数:" + count[1]);
System.out.println("数字 3 的个数:" + count[2]);
System.out.println("非法数字的个数:" + count[3]); }
}