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

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

双重for循环

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

//乘法表
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

#:一个数字

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

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程序设计有所帮助。

(0)

相关推荐

  • Java中使用While语句自增运算遍历数组典型实例

    public class BirdArray { public static void main(String args[]){ String[] str = new String[]{"麻雀","老鹰","白鸽","黄雀","百灵鸟","孔雀","鹦鹉","丹顶鹤"}; int index =0; //创建索引变量 System.out.prin

  • Java中的数组排序方式(快速排序、冒泡排序、选择排序)

    1.使用JavaApi文档中的Arrays类中的sort()进行快速排序 复制代码 代码如下: import java.util.Arrays; public class TestOne{ public static void main(String [] args){ int [] array={2,0,1,4,5,8}; Arrays.sort(array);//调用Arrays的静态方法Sort进行排序,升序排列 for(int show:array){ System.out.printl

  • java String[]字符串数组自动排序的简单实现

    如下所示: import java.util.Arrays; public class xulie { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String []str = {"abc","bca","cab","cba","aaa","111&

  • Java实现数组去除重复数据的方法详解

    本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现,有好多方法可以实现,现在就总结一下,比较简单的几种. 一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<s

  • Java编程实现中英混合字符串数组按首字母排序的方法

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序.例如: String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分"

  • Java中byte、byte数组与int、long的转换详解

    一.Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; } public static int byteToInt(byte b) { //Java 总是把 byte 当做有符处理:我们可以通过将其和 0xFF 进行二进制与得到它的无符值 return b & 0xFF; } 测试代码: //测试 int 转 byte int int0 = 234

  • Java数组的遍历与求和知识点

    一维数组遍历与求和: public class OneArry{ public static void main(String[] args) { double[] num = {1.9, 2.9, 3.4, 3.5,10,-1}; num[0]=new Double(2); //通过下标把1.9变为2.0 double sum = 0; for (int i = 0; i < num.length; i++) { //遍历 System.out.println(num[i]); sum+=nu

  • java利用冒泡排序对数组进行排序

    本文实例讲述了java利用冒泡排序对数组进行排序的方法.分享给大家供大家参考.具体如下: 一.冒泡排序: 利用冒泡排序对数组进行排序 二.基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.至此第一趟结束,将最大的数放到了最后.在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数

  • Java 数组声明、创建、初始化详解

    一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { int[] s ; int i ; s = new int[5] ; for(i = 0 ; i

  • java数组遍历 删除remove(示例代码)

    废话不多说,直接上代码 复制代码 代码如下: package com.b; import java.util.ArrayList; //数组遍历删除,添加 public class Core2 {     private String name;     private int num;     private String color; public Core2() {     } public Core2(String a, int b, String c) {         name =

  • java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)

    快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来. 选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组. 插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序. 复制代码 代码如下: package com.firewolf.sort; public class MySort { /**  * @param args  */ public s

  • Java中遍历数组使用foreach循环还是for循环?

    从JDK1.5起,增加了新功能Foreach,它是for循环遍历数据的一种简写形式,使用的关键字依然是for,但参数格式不同.其详细用法为: for(Type e:collection){ //对变量e的使用} 参数说明: e:其类型Type是集合或数组中元素值的类型,该参数是集合或数组collection中的一个元素. collections: 要遍历的集合或数组,也可以是迭代器. 在循环体中使用参数e,该参数是foreach从集合或数组以及迭代器中取得的元素值,元素值是从头到尾进行遍历的.

随机推荐