Java数组常见应用详解【创建、遍历、排序、查找】_java

来源:脚本之家  责任编辑:小易  

1,创建二维数组语句:int[][]array=new int[3][3];2,直接创建二维数组并赋值语句:int[][]array={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};二维数组,也可以理解为用一维数组保存的元素为一维数组。对于三维数组,等等7a64e4b893e5b19e31333337393562,都可以这样划分。不过我们在编程中使用三维以上的数组比较少。因为那样使用起来非常不方便。下面我们来学习二维数组的声明。其声明同一位数组一样,可以先声明再分配内存,也可以声明时分配内存第一种,先声明再分配内存的方式数组声明:数据类型 数组名[][];内存分配:数组名=new 数据类型[行的个数][列的个数];举例:假如我们需要统计一个象棋上放的是黑棋还是白棋。这时,我们可以建立一个坐标,即以象棋盘的两边建立坐标轴。这时,我们可以这样定义这个二维数组:声明数组:int Chess[][];内存分配 Chess=new int[64][64];第二种,即声明时即分配内存的方式。使用格式是:数据类型 数组名[][]=new 数据类型[行的个数][列的个数];使用上个步骤中的例子,我们可以将数组的声明和分配内存写成以下方式:声明即分配内存:int Chess[][]=new int[64][64];二维数组的赋值,同一维数组类似。只是在{}中的每个元素又是每个一维数组。如下格式:数据类型 数据名[][]={{值1,值2,值3,值4 },/第一行数据{值5,值6,值7,值8},/第二行数据}二维数组中,可以有列数不相等的数组。即每一行的列数不同时。我们需要对每一行进行赋值。对于这两种二维数组。我们分别来进行分别举例进行赋值。第一种是:列数相同的数组其赋值格式如下:String ClassRoom[][]={{"小王","小李","小张"},{"小红","小明","小花"},}即第一行的人数和第二行的人数相同。第二种:即列数不相等的数组的赋值格式如下:String ClassRoom[][]={{"小王","小李","小张"},{"小红","小明","小花"},{"小雨","小风","小平","小雷"},{"小单"}}看上述例子。对于不同的行,其相应的列数是不同的www.zgxue.com防采集请勿采集本网。

本文实例讲述了Java数组常见应用。分享给大家供大家参考,具体如下:

双重for循环

那是行和列的意思,例如:int[][]a=new int[3][5];也就是说建立一个3行5列的二维数组 你大概没弄明白java数组定义,多看看书,java中实际上没有多维数组的概念。只有一维数组。多维数组实际上是一维

外循环控制行,内循环控制列。

public ArrayTest { public static void main(String[]args){ 创建 for(int i=0;i;i+){ intArr[i]=i;}/初始化 for(int i=0;i;i+){ System.out.println(intArr[i]);}/应用 } }

//乘法表for(int i = 1; i <= 9; i++) { for(int j = 1; j <= i ;j++) { System.out.print(j+"*"+i+"="+(i*j)+"\t"); } System.out.println();}

DecimalFormat

通过下面代码定义就是匿名数组 System.out.println(new String[]{\"a\",\"b\"});这里创建了一个匿名数组,3、使用匿名数组的策略仅仅就是创建、初始化、应用,因为它没有任何名字因此你没法重用它。

#:一个数字

是的,数组是线性顺序存取,所以一定要指定具体的长度。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和

0:一个数字,不够位数用0补位

·数组是可以保存一组数据的一种数据结构,它本身也会占用一个内存地址,因此数组是引用类型 一个数组中只能保存一种类型的数据,可以保存基本类型,也可以保存Object。一个int,一个String是不能

DecimalFormat f = new DecimalFormat("###.##");DecimalFormat f = new DecimalFormat("000.00000");System.out.println(sum);System.out.println(f.format(sum));System.out.println(f.format(34.567));

break 

用在 switch和循环中。

用在单层循环中,用来结束循环。

continue

用在循环中。

作用 结束本次循环进行下一次循环条件判断。

对于双重循环,可以自定义一个标签,break或continue 到标签处。

一维数组 

Java 语言中提供的数组是用来存储固定大小的同类型元素。

声明数组

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

int[] arr;//声明数组,告诉计算机我要存储一组整数(推荐)或//int arr[];

int x1,x2,x3;//声明了3个int类型的变量int [] n1,n2,n3;//声明了3个数组int num1 [],num2,num3;//声明了一个int类型的数组num1,两个Int类型的变量。

创建数组

arr = new int[6];//创建一个数组,计算机在内存中分配6个空间,并初始化

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arr.length-1。

数组初始化

//动态初始化:我们制定长度,系统赋值。int[] arr = new int[5];//0//初始值//整数:0  小数:0.0  布尔:false  char:\0000  //String:null  //静态初始化:我们赋值,系统分配长度(arr2.length)int[] arr2 = {11,22,33};

赋值数组

arr[2]=33;

栈stack

是作为构思算法的辅助工具,不是完全的数据存储工具。是插入和删除操作被限制在表的线性表。 只能从栈顶入栈,也只能从栈顶出站 是一种后进先出的结构

遍历数组

普通for循环

public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (int i = 0; i < myList.length; i++) { System.out.println(myList[i] + " "); } // 计算所有元素的总和 double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("Total is " + total); // 查找最大元素 double max = myList[0]; for (int i = 1; i < myList.length; i++) { if (myList[i] > max) max = myList[i]; } System.out.println("Max is " + max); }}

增强for循环

public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (double element: myList) { System.out.println(element); } }}

增强for循环的特点:

【1】简洁

【2】不能制定范围访问,只能访问全部

【3】不能反转输出,只能正序访问

【4】不能修改数组元素的值

数组排序

冒泡排序

package day4;public class Demo12 { public static void main(String[] args) { // 冒泡排序 int[] arr = {34,1,78,9,43}; int temp; for(int i = 0 ; i < arr.length-1;i++) {//轮 for(int j = 0; j < arr.length-1-i; j++) {//次 if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j]= arr[j + 1]; arr[j + 1] = temp; } } } for(int n: arr) { System.out.println(n); } }}

选择排序

package day4;import java.util.Arrays;public class Demo13 { public static void main(String[] args) { // 选择排序 int [] arr = {5,12,3,78,345}; int temp; for(int i = 0; i < arr.length-1; i++) {//位置 for(int j = i + 1; j < arr.length; j++) { if(arr[i] > arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } for(int n:arr) { System.out.println(n); }// System.out.println(Arrays.toString(arr)); }}

数组查找方法

普通查找方法(效率比较低)

public class ArrayTest { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = {4,6,8,33,66,44,99,54}; int num=searchKey(arr,66); System.out.println(num); } //查找一个元素在数组中的第一次出现的位置 public static int searchKey(int[] arr,int key) { for(int i=0;i

二分查找法(效率比较高)

public class binarySearch { public static void main(String[] args) { int[] arr = {9,12,15,24,36,41,59,68}; int num =searchArray(arr,12); System.out.println(num); } //二分查找。前天:数组必须是有序的。 /* * 思路: * 1.通过角标先获取中间角标上的元素 * 2.让该元素和要找的数据比较。 * 3.如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标 * 如果要找的数效率,要找的范围 头角标---中间角标-1。 * 4.不断如此重复,就可以找到元素对应的角标。 * */ public static int searchArray(int[] arr,int key) { int max,min,mid; min = 0; max = arr.length-1; mid = (min+max)>>1; while(arr[mid]!=key) { if(key > arr[mid]) { min = mid + 1; }else{ max = mid - 1; } //判断元素是否存在。 if(max>1; } return mid; }}

public class ArrayTest1 { public static void main(String[] args) { int[] arr = {9,12,15,24,36,41,59,68}; int num =binarySearch(arr,44); System.out.println(num); } //二分查找。前天:数组必须是有序的。 /* * 思路: * 1.通过角标先获取中间角标上的元素 * 2.让该元素和要找的数据比较。 * 3.如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标 * 如果要找的数效率,要找的范围 头角标---中间角标-1。 * 4.不断如此重复,就可以找到元素对应的角标。 * */ public static int binarySearch(int[] arr,int key) { //定义单个变量,记录头角标,尾角标,中间角标 int max,min,mid; min = 0; max = arr.length-1; while(min<=max) { mid = (min+max)>>1; if(key > arr[mid]) { min = mid + 1; }else if(key < arr[mid]) { max = mid - 1; }else { return mid; } } return -1; }}

数组的复制

package cn.java.study;import java.util.Arrays;public class Demo5 { public static void main(String[] args) { int[] arr1 = {1,4,6,83,45}; int[] arr2 = new int[arr1.length]; // 源数组 源数组起始位置 目标数组 目标数组起始位置 复制长度 System.arraycopy(arr1, 1, arr2, 2, 3); System.out.println(Arrays.toString(arr2)); }}

常用API之Arrays类

package cn.java.study;//工具类import java.util.Arrays;public class Demo5 { public static void main(String[] args) { //Arrays int[] arr = {1,4,7,434,232,55}; //将数组转换成字符串 System.out.println(Arrays.toString(arr)); //对数组进行升序排序 Arrays.sort(arr); System.out.println(Arrays.toString(arr)); //排序数组名 排序数组元素开始位置 排序数组元素结束位置(实际上,取到终止位置减一)[起始位置,终止位置) Arrays.sort(arr,2,4); System.out.println(Arrays.toString(arr)); //多核处理器下并行操作使用 Arrays.parallelSort(arr); //二分查找下标,数组 查找的数字,返回的是插入点,没有的话返回的是负的插入点减一的值 System.out.println(Arrays.binarySearch(arr, 8)); //数组比较:元素的个数和对应位置的数组元素相同 int[] arr1 = {1,2,5}; int[] arr2 = {1,2,5}; System.out.println(Arrays.equals(arr1, arr2)); //数组的填充,将数组中所有的元素替换为666 Arrays.fill(arr, 666); System.out.println(Arrays.toString(arr)); //数组的复制,返回的是一个数组, (要复制的数组,几个元素) int[] arr3 = Arrays.copyOf(arr1, 2); System.out.println(Arrays.toString(arr3)); }}

二维数组

格式1:

int[][] arr = new int[3][2]; 定义了名称为arr的二位数组 二维数组中有3个一维数组 每一个一维数组中有2个元素 一维数组的名称分别为arr[0],arr[1],arr[2] 给第一个一维数组1角标位赋值为666的写法是:arr[0][1] = 666;

System.out.println(arr); // [[Ie6f7d2二位数组实体 e6f7d2是哈希值,[是数组,[[二位数组

格式2:

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

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《Java字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结

希望本文所述对大家java程序设计有所帮助。

List list1=new ArrayList();Collections.addAll(list,new String[]{"aaaa内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • java封装数组实现在数组中查询元素和修改元素操作示例
  • java基于数组实现的商品信息查询功能示例
  • java数组高级算法与arrays类常见操作小结【排序、查找】
  • java检查数组是否有重复元素的方法
  • java中删除 数组中的指定元素方法
  • java删除数组中的某一个元素的方法
  • java 删除数组元素与删除重复数组元素的代码
  • java数组,去掉重复值、增加、删除数组元素的方法
  • java封装数组实现包含、搜索和删除元素操作详解
  • java使用continue语句的实例详解
  • 基于java创建xml(无中文乱码)过程解析
  • jstorm源码解析之bolt异常处理方法
  • 解析runtime中shutdown hook的使用详解
  • java编程实现打印螺旋矩阵实例代码
  • java多线程并发开发之delayqueue使用示例
  • java实现调用mysql存储过程详解
  • 浅谈java模板引擎性能对比
  • 在java代码中获取jvm参数的方法
  • spring配置扫描多个包问题解析
  • java中的匿名数组创建之后怎么在程序中应用,比方说用System.out…输出
  • JAVA中如何创建一个二维数组,然后给二维数组赋值!
  • java中如何创建动态数组
  • java 中数组的长度必须在创建是指定?
  • Java二维数组如何使用?
  • 编写java程序,分别申明、创建、初始化和应用一维数组
  • java中匿名数组如何创建
  • java 中数组的长度必须在创建是指定?
  • 在java中数组的特点是?
  • 如何在Java里面创建一个动态的二维数组??
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页javajava数组操作技巧总结java字符与字符串操作技巧总结java数学运算技巧总结java数据结构与算法教程java操作dom节点技巧总结java封装数组实现在数组中查询元素和修改元素操作示例java基于数组实现的商品信息查询功能示例java数组高级算法与arrays类常见操作小结【排序、查找】java检查数组是否有重复元素的方法java中删除 数组中的指定元素方法java删除数组中的某一个元素的方法java 删除数组元素与删除重复数组元素的代码java数组,去掉重复值、增加、删除数组元素的方法java封装数组实现包含、搜索和删除元素操作详解java使用continue语句的实例详解基于java创建xml(无中文乱码)过程解析jstorm源码解析之bolt异常处理方法解析runtime中shutdown hook的使用详解java编程实现打印螺旋矩阵实例代码java多线程并发开发之delayqueue使用示例java实现调用mysql存储过程详解浅谈java模板引擎性能对比在java代码中获取jvm参数的方法spring配置扫描多个包问题解析java使double保留两位小数的多方java8 十大新特性详解java.net.socketexception: connjava写入文件的几种方法分享java环境变量的设置方法(图文教程java 十六进制与字符串的转换java list用法示例详解java中file类的使用方法javaweb实现文件上传下载功能实例java 字符串截取的三种方法(推荐java获取当前时间并格式化代码实例spring security认证提供程序示例详解java实现简单网络象棋游戏java长整除问题浅谈java编程实现基于udp协议传输数据的方法spring mvc深入学习之启动初始化过程mybatis中实现枚举自动转换方法详解基于spring boot的logback日志轮转配置详深入浅析jdk8新特性之lambda表达式spring validator接口校验与全局异常处理
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved