栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的数组

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的数组

数组 一维数组

数组是同一类型的多条数据的容器。

数组是容器,是存取数据的载体,不是数据本身。

数组用于存储多条数据,单条数据没必要使用数组。

数组的数据只能是同一种类型,不能是多种类型。

数组的四个重要概念:
1、数组              是数据的容器,存取数据找数组;但数组不是数据本身,不要拿数组进行运算。
2、数组元素/元素     数组元素才是数据,一个数组会有多个数组元素。
3、数组下标          就是数组元素在数组中的编号,从0开始,记录了元素在数组中的位置。
4、数组长度          就是数组中元素的个数。

数组下标从0开始,到长度减1.
定义数组的方式:
元素类型[]   数组变量名 = 值; 
int[] arr = 值;
String[] arr = 值;
int[] arr ;
  arr 是 数组;
  arr[0]  arr[1]  ...  是 数组元素;
  其中,0,1 ...是 数组下标;
 arr.length        是 数组长度;

定义一个数组变量,不只有一个数组变量可以用; 数组元素,数组长度都可以使用。

数组的赋值有两种方式:
 静态初始化  --  就是数组和元素同时赋值
int[] arr = {1,2,3,4,5};
String[] name = {"liubei","guanyu","zhangfei"};
动态初始化  -- 先赋值数组,后赋值元素,分别赋值

int[] arr = new int[10];  //必须在右边指定长度,否则系统不知道该分配多少内存空间

数组的操作就是对下标的操作。

数组的增加元素和删除元素

增加元素时,如果不是在最后追加;那么需要把后面的所有元素后移一个位置。
删除元素时,如果不是在最后删除,那么需要把后面的所有元素前移一个位置。

增删元素时,数组的效率并不好;而链表增删元素时效率比较好。
而查询元素时,数组效率比较高,而链表的效率很低。

一维数组内存解析

练习 1.简易版的学生成绩管理系统

功能: 先输入班级人数,作为数组的长度。然后用循环输入每个同学的姓名和考试成绩,然后求最高分,总分和平均分。最高分要打印所有最高分学生的名字。

public class Student {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("输入班级的人数");
		int num=sc.nextInt();
		
		if(num<1){
			System.out.println("人数输入错误,程序结束");
			return;
		}
		
		double[] arr=new double[num];
		String[] name=new String[num];
		double sum=0.0;
		double max=arr[0];
		
		for(int i=0;i100){
				System.out.println("输入成绩错误,请重新输入");
				i--;
			}
		}
		
		for(int i=0;i 
2.公司年底抽奖程序。 

定义一个长度是20的字符串数据,把公司的人名都输入进去。然后抽取3等奖3名,2等奖2名,1等奖1名。

注意:中奖人不会出现重复。

使用随机数。

public class Prize {
	public static void main(String[] args) {
		Random ran = new Random();
		String[] name={"刘备","关羽","张飞","赵云", "黄忠","马超","诸葛亮","庞统","关平","关兴","张苞","刘禅","黄权", "姜维","魏延","马岱","法正","李严","廖化","孙尚香"};
		int[] flag=new int[name.length];
		
		String[] emps=new String[6];
		
		for(int i=0;i 
3.输入一个数字,统计其中每个数出现的次数。比如: 输入 33791 , 输出结果: 

​ 1出现了1次 3出现了2次 7出现了1次 9出现了1次

public class Appear {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个正数");
		int num=sc.nextInt();
		
		if(num<0){
			System.out.println("输入不合法,退出程序");
		}
		
		int n=0;
		int[] flag=new int[10];
		int[] times=new int[10];
		for(;;){
			n=num%10;
			num=num/10;
			if(flag[n]==1){
				times[n]++;
			}else{
				flag[n]=1;
				times[n]=1;
			}
			if(num==0){
				break;
			}
		}
		
		for(int i=0;i<10;i++){
			if(times[i] !=0){
				System.out.println(i+"出现了"+times[i]+"次");
			}
		}
	}
}
4.身份证 第 18位 校验位的 算法:

1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

2、将这17位数字和系数相乘的结果相加。

3、用加出来和除以11,看余数是多少?

4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。

5、通过上面得知如果余数是3,就会在身份证的第18位数字上出现的是9。如果对应的数字是10,身份证的最后一位号码就是罗马数字X。

public class IdCard {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入身份证前十七位:");
		String num=sc.next();
		if(num.length() != 17){
			System.out.println("非法输入,程序结束");
			return;
		}
		int[] xi={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
		String[] res={"1","0","x","9","8","7","6","5","4","3","2"};
		int sum=0;
		for(int i=0;i 
二维数组:数组中的数组 
格式1(动态初始化):int[] [] arr=new int[3] [2]; 

定义了名称为arr的二维数组

二维数组中有3个一维数组

每一个一维数组中有2个元素

一维数组的名称分别为arr[0], arr[1], arr[2]

给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

格式2(动态初始化):int[] [] arr = new int[3] [];

二维数组中有3个一维数组。

每个一维数组都是默认初始化值null (注意:区别于格式1)

可以对这个三个一维数组分别进行初始化

arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];

注:

int[] []arr = new int[] [3]; //非法

格式3(静态初始化):int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};

定义一个名称为arr的二维数组,二维数组中有三个一维数组

每一个一维数组中具体元素也都已初始化

第一个一维数组 arr[0] = {3,8,2};

第二个一维数组 arr[1] = {2,7};

第三个一维数组 arr[2] = {9,0,1,6};

第三个一维数组的长度表示方式:arr[2].length;

注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。

Java中多维数组不必都是规则矩阵形式

二维数组内存解析

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/286904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号