一、什么是数组及其作用?

定义:具有相同数据类型的一个集合

作用:存储连续的具有相同类型的数据

二、java中如何声明和定义数组

2.1 声明和定义的语法:

数据类型[ ] 数组名;( int[ ] nums ; )

  或 数据类型 数组名[];  ( int nums[ ] ;)

2.2 为数组分配空间

  数组名=new 数据类型[数组的长度]; ( nums=new int[5] ;)

2.3 声明数组,同时分配空间

  数据类型[]数组名= new 数据类型[数组的长度];

  数据类型 数组名[]=new 数据类型[数组的长度];

( int[ ] nums=new int[5] ;)   ( int nums[ ]=new int[5] ;)

三、 如何读取数组中的元素— 通过下标(索引)来获取

下标(索引)是从0开始,最大下标为  数组长度-1

下标越界:ArrayIndexOutOfBoundsException

int类型的数组,每个元素的默认值为0

String类型的数组,每个元素的默认值为null

3.1、 获取单个元素的值

  数据类型 变量名=数组名[下标];

3.2、循环读取数组中的每个元素

  数组的长度:数组名.length 属性自动计算

  for(int i=0;i<数组名.length ;i++){

  数组名[i];

  }

四、如何给数组中的元素赋值

方式1(赋予数组固定值):

声明数组,分配空间,并赋值

(数组的长度由值的个数决定)

数据类型  数组名[]=new 数据类型[]{值1,值2…值n};

数据类型 []数组名={值1,值2…值n};

说明:[]中括号可以放在数组名前面或后面

方式2:动态的给数组赋值(从键盘中输入)

Scanner  input = new Scanner(System.in);

for(int i=0;i<数组名.length ; i++){

String类型的数组名[i]= input.next ();

int类型的数组名[i]= input.nextInt ();

double类型的数组[i]=input.nextDouble();

}

五、求数组中最值的位置

1、在循环的外面,定义变量k(赋值为0),用于保存最值的下标

2、在循环中,比较找出最值的同时,给变量k赋值

 public class Practice1 {
public static void main(String[] args){
int[] grade= new int[5];
int max=0;
Scanner input = new Scanner(System.in);
System.out.println("请输入5位学员的成绩:");
for(int i=0;i<grade.length;i++){
grade[i]=input.nextInt();
}
max=grade[0];
for(int i=1;i<grade.length;i++){
if(grade[i]>max){
max=grade[i];
}
}
System.out.println("考试成绩最高分为:"+max);
}
}

示例1

运行结果:如图:

六、求最大值或最小值

实现思路:将数组中的第1个元素的值,假想成最大(小)值【赋值】;然后数组中的每个元素和假想的这个最大(小)数进行比较,如果数组中的某个元素的值,比最大(小)数要大(小),将该元素的值,保存到假想的最大(小)值对应的变量中【给假想最值变量赋值】

七、数组排序问题

使用Arrays. sort(数组名);

实现对数组中的元素按升序或降序输出

 public class practice2 {
public static void main(String[] args){
int[] a={5,4,2,9,1};
Arrays.sort(a); //进行排序
for(int i: a){
System.out.print(i+"\t");
}
}
}

示例2

运行结果:如图:

八、斐波那契数列

1,1,2,3,5,8,13,21,34……求第20个数字的值?(使用循环)

规律:第i个 + 第(i+1)个 = 第(i+2)个

步骤1:定义数组,数组长度为20

int []nums=new int[20];

  步骤2:根据规律,获取第0个和第1个数的初值

nums[0]=1;

nums[1]=1;

  步骤3:通过循环,给数组中的所有元素赋值

for ( int i=0;i<nums.length-2;i++){

nums [i+2]=nums[i]+nums[i+1];

}

for(int i=2;i<nums.length;i++){

nums[i]=nums[i-2]+nums[i-1];

}

  步骤4:输出nums[19]的值

九、已知1个按升序或降序排列的数组,向该数组中,插入一个新的值,插入成功后,数组仍然按照升序或降序排列?

1、 设置插入位置变量index的初始值为:数组长度-1;

2、 使用第1个循环,让插入的数值和数组中的每个元素进行比较,如果插入的数值比数组中某个元素的值要大或小,把该元素的下标的值, 赋予插入位置变量index,同时终止循环

3、 使用第2个循环,移动位置,从【数组长度-2】到【插入位置变量index】

4、 将插入的值,保存到数组下标为index的位置

5、 使用第3个循环,输出数组所有元素的值,同时输出新值插入的位置

 public class Practice4 {
public static void main(String[] args){
int[] ming =new int[6];
ming[0]=98;
ming[1]=85;
ming[2]=82;
ming[3]=63;
ming[4]=60;
int index=ming.length;
System.out.println("请输入新增成绩:");
Scanner input = new Scanner(System.in);
int num=input.nextInt();
for(int i =0;i<ming.length;i++){
if(num>ming[i]){
index = i;
break;
}
}
for(int j=ming.length-1;j>index;j--){
ming[j]=ming[j-1];
}
ming[index] = num;
System.out.println("插入成绩的下标是:"+index);
System.out.println("插入后的成绩信息是:");
for(int l=0;l<ming.length;l++){
System.out.print(ming[l]+"\t");
}
}
}

示例3

运行结果:如图:

java(7)数组的更多相关文章

  1. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

  2. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  3. JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

  4. java将数组中的零放到末尾

    package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...

  5. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  6. 在java 中,数组与 List<T> 类型的相互转换

    在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...

  7. Java RGB数组图像合成 ImageCombining (整理)

    /** * Java RGB数组图像合成 ImageCombinning (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * 注意事项: * 1.本程序为java程序,同时感谢您花费 ...

  8. java对象数组

    问题描述:     java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...

  9. Java中数组的初始化方式

    Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...

  10. Java动态数组

    其中java动态数组: Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList. ...

随机推荐

  1. 实现element-ui中table点击一行展开

    转:https://www.jianshu.com/p/e51ba4cb11d6 先上效果   效果图 三要素 1.row-click 点击行 2.ref 自行了解vue 3.toggleRowExp ...

  2. python之迭代器、生成器、面向过程编程

    一 迭代器 一 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而不 ...

  3. 专治编译器编辑器vscode中文乱码输出 win10 配置系统默认utf-8编码

    VS Code输出会出现乱码,很多人都遇到过.这是因为VS Code内部用的是utf-8编码,cmd/Powershell是gbk编码.直接编译,会把“你好”输出成“浣犲ソ”.如果把cmd的活动代码页 ...

  4. Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述

    https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企 ...

  5. 两台主机,ssh端口不同,如何拷贝文件

    A主机ip:172.26.225.199 ssh端口12995 B主机ip:172.26.225.200 ssh端口12991 将B主机的文件拷贝到A主机 [root@test2019030517 s ...

  6. java 服务端I/O非阻塞实现05

    /** * 非阻塞IO多线线程服务端 * 当一个任务进入多线程,这个任务线程需要处理接收信息.发送信息.因而发生I/O阻塞问题 * 利用selector可以实现异步 * */ public class ...

  7. mac 版 Pycharm 激活

    mac 版 Pycharm 激活   获取注册码地址: http://idea.lanyus.com 输入注册码之后可能会报 this license XXXXXXXX has been cancel ...

  8. 【Swift 4.0】扩展 WCDB 支持 SQL 语句

    前言 入坑 wcdb 有两个月了,整体来说还是很不错的,具体优点可以参考文档说明,由于官方明确说明不支持 SQL 只好自己写一个扩展支持一下了

  9. c语言之控制语句:循环

    #include<stdio.h> int main(void) { long num; long sum = 0L; int status; printf("Please en ...

  10. OracleSql语句学习(五)

    --数据库对象数据库对象包含:表,视图,索引,序列视图VIEN视图在SQL语句中体现的角色与表一样,但是视图并非真实存在的表,它只是对应一条查询语句的结果集 使用视图通常是为了重用子查询,简化SQL语 ...