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

JAVA基础-数组

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

JAVA基础-数组

目录

数组

一维数组的使用

如何调用数组指定位置的元素

如何获取数组的长度,如何遍历数组

数组的默认初始化值

数组的内存解析

一维数组的内存解析

二维数组的使用

二维数组的声明和初始化

如何调用数组指定位置的元素

获取二维数组的长度

遍历二维数组

二维数组的数组元素的默认初始值

二维数组的内存解析

数组中涉及常见的算法

一维数组和二维数组的例子

3.面试题目:创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同

4.回形数格式方的实现

数组的复制

数组的反转

查找(或搜索)

排序算法

Arrays工具类的使用

数组使用中的常见异常


数组

一维数组的使用

 

如何调用数组指定位置的元素

 

如何获取数组的长度,如何遍历数组

  1. 数组一旦初始化,其长度是确定的

  2. 长度一旦确定就无法修修改

数组的默认初始化值

 

数组的内存解析

 

一维数组的内存解析

 

二维数组的使用

 

二维数组的声明和初始化

 

如何调用数组指定位置的元素

 

获取二维数组的长度

 

遍历二维数组

 

二维数组的数组元素的默认初始值

 

二维数组的内存解析

 

数组中涉及常见的算法

 

一维数组和二维数组的例子
  1.  

上图中,x是一维数组,y是二维数组;

2.

 

3.面试题目:创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同

class ArrayExer {
    public static void main(String[] args) {
        //方式一:
//      int[] arr = new int[6];
//      for (int i = 0; i < arr.length; i++) {
//          arr[i] = (int) (Math.random() * 30) + 1;// [0,1) [0,30) [1,31)
//
//          boolean flag = false;
//          while (true) {
//              for (int j = 0; j < i; j++) {
//                  if (arr[i] == arr[j]) {
//                      flag = true;
//                      break;
//                  }
//              }
//              if (flag) {
//                  arr[i] = (int) (Math.random() * 30) + 1;
//                  flag = false;
//                  continue;
//              }
//              break;
//          }
//      }
//
//      for (int i = 0; i < arr.length; i++) {
//          System.out.println(arr[i]);
//      }
​
        //方式二:
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) {// [0,1) [0,30) [1,31)
            arr[i] = (int) (Math.random() * 30) + 1;
            
                for (int j = 0; j < i; j++) {
                    if (arr[i] == arr[j]) {
                        i--;
                        break;
                    }
                }
            }
​
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

4.回形数格式方的实现

 

//方式一
class RectangleTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入一个数字");
        int len = scanner.nextInt();
        int[][] arr = new int[len][len];
​
        int s = len * len;
        
        int k = 1;
        int i = 0, j = 0;
        for (int m = 1; m <= s; m++) {
            if (k == 1) {
                if (j < len && arr[i][j] == 0) {
                    arr[i][j++] = m;
                } else {
                    k = 2;
                    i++;
                    j--;
                    m--;
                }
            } else if (k == 2) {
                if (i < len && arr[i][j] == 0) {
                    arr[i++][j] = m;
                } else {
                    k = 3;
                    i--;
                    j--;
                    m--;
                }
            } else if (k == 3) {
                if (j >= 0 && arr[i][j] == 0) {
                    arr[i][j--] = m;
                } else {
                    k = 4;
                    i--;
                    j++;
                    m--;
                }
            } else if (k == 4) {
                if (i >= 0 && arr[i][j] == 0) {
                    arr[i--][j] = m;
                } else {
                    k = 1;
                    i++;
                    j++;
                    m--;
                }
            }
        }
​
        // 遍历
        for (int m = 0; m < arr.length; m++) {
            for (int n = 0; n < arr[m].length; n++) {
                System.out.print(arr[m][n] + "t");
            }
            System.out.println();
        }
    }
}
​
​
​
//方式二
class RectangleTest1 {
​
    public static void main(String[] args) {
        int n = 7;
        int[][] arr = new int[n][n];
​
        int count = 0; // 要显示的数据
        int maxX = n - 1; // x轴的最大下标
        int maxY = n - 1; // Y轴的最大下标
        int minX = 0; // x轴的最小下标
        int minY = 0; // Y轴的最小下标
        while (minX <= maxX) {
            for (int x = minX; x <= maxX; x++) {
                arr[minY][x] = ++count;
            }
            minY++;
            for (int y = minY; y <= maxY; y++) {
                arr[y][maxX] = ++count;
            }
            maxX--;
            for (int x = maxX; x >= minX; x--) {
                arr[maxY][x] = ++count;
            }
            maxY--;
            for (int y = maxY; y >= minY; y--) {
                arr[y][minX] = ++count;
            }
            minX++;
        }
​
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                String space = (arr[i][j] + "").length() == 1 ? "0" : "";
                System.out.print(space + arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}
​

数组的复制

 

数组的反转

 

查找(或搜索)

线性查找

注意:equals()和==的区别

二分法查找

前提:所查找的数组必须有序

 

排序算法

 

 

 

 

Arrays工具类的使用

import java.util.Arrays;    //导入Arrays工具类
public class test {
    public static void main(String []args) {
       int[] num = {21, 32, 44, 56, 78, 98};
		
		//二分法查找
		int index = Arrays.binarySearch(num, 56);    //调用工具类中带有的二分法
		System.out.println(index);     //找到的下标"
		
		//数组内容转字符串输出
		System.out.println(Arrays.toString(num));
		
		//数组排序
		int[] nums = {34, 65, 13, 35, 99, 56};
		Arrays.sort(nums);     //快速排序法
		
        System.out.println(Arrays.toString(nums));   //转成字符串输出
		
		// 数组的复制
		int[] num3 = Arrays.copyOf(nums, 10);       // 将数组nums的内容复制进来,多余的位置空着用int类型的默认值0补齐
		System.out.println(Arrays.toString(num3)); 
    }
}
 
// Tips:关于数组的复制,效率由高到低的排序是:System.arraycopy -> Arrays.copyOf -> for循环

数组使用中的常见异常

 

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

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

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