iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java数组归纳总结
  • 588
分享到

Java数组归纳总结

2024-04-02 19:04:59 588人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、一维数组1.创建方法2.初始化数组(一维数组)二、二维数组1.创建方法2.初始化二维数组三、遍历数组四、替换元素五、数组排序六、数组拷贝七、元素查询八、排序算法1.冒泡排序2

一、一维数组

1.创建方法

  • 数组元素类型 数组名字[];
  • 数组元素类型[] 数组名字;

比如:

int array[];//int 类型数组
String str[];//String类型数组

我们还要给数组申请空间:

数组名字 = new 数组元素的类型[数组元素的个数];
array = new int[10];//代表创建了一个有10个元素的整型数组
//注意

当我们用new关键字为数组分配内存的时候,整型数组中各个元素初始值都为0

综合上面两种方法,我们可以直接在声明数组的时候为其开辟内存空间:

数组元素的类型 数组名 = new 数组元素的类型[数组元素的个数];

int array[] = new int[10]

2.初始化数组(一维数组)

常见的初始化方法如下:

int array[] = new int[]{1,2,3,4,5};

或者

int shuzu[] = {1,2,3,4,5};

看一个栗子:

public class Day {
    public static void main(String[] args) {
        int array[] = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
        int i;
        for(i = 0;i<12;i++){
            System.out.println((i+1)+"月"+array[i]+"天");
        }
    }
}
//我们创建数组array来承接天数,然后循环将其输出。

二、二维数组

二维数组一般表示行列间的关系,也是要重点掌握的。

1.创建方法

  • 数组元素的类型 数组名字[][];
  • 数组元素的类型[][] 数组名字;

代码如下:

int array[][];
我们可以直接分配内存空间:
array = new int[2][5];
或者
也可以分别为每一维分配内存空间:
array = new int[2][];
array[0] = new int[2];
array[1] = new int[3];

两种方法均可

2.初始化二维数组

type arrayname[][] = {value1,value2,value3....};

我们看一个代码:

int array[][] = {{2,5},{5,1}};

我们应当注意初始化我们的二维数组后,应当注意数组的小标是在0开始的。
对于数组赋值,我们也可以直接进行赋值:

array[1][1] = 20;  

我们写一个类Matrix,在主方法中编写代码实现输出一个3行4列且所有元素均为0的矩阵:

public class Matrix {
    public static void main(String[] args) {
        int array[][] = new int[3][4];
        for(int i=0; i<array.length;i++){
            for(int j=0; j<array[i].length;j++){
                System.out.println(array[i][j]);
            }
            System.out.println();
        }
    }
}

和一维数组一样,创建成功后,系统会给每一个元素分配初始值 0。

三、遍历数组

我们一般使用for循环来实现遍历数组,我们重点看一下如何遍历二维数组,我们需要双重for循环。

举个简单例子:

public class Matrix {
    public static void main(String[] args) {
        int array[][] = new int[3][4];
        for(int i=0; i<array.length;i++){
            for(int j=0; j<array[i].length;j++){
                System.out.println(array[i][j]);
            }
            System.out.println();
        }
    }
}

但是一般在JAVA里面,我们不会这么玩,我们使用 foreach 来实现数组遍历:

public class Find {
    public static void main(String[] args) {
        int array[][] = {{4,3},{5,3}};
        int i = 0;
        for(int a[]: array){
            i++;
            int j=0;
            for(int b: a){
                j++;
                if(i==array.length && j==a.length){
                    System.out.println(b);
                }else{
                    System.out.println(b + ",");
                }
            }
        }
    }
}

四、替换元素

有时我们会遇到让我们替换数组里一些元素的情况,我们使用fill方法来实现:

fill(int[] array,int value);

使用指定的int值分配给int型数组的每个元素

我们来看一个简单的栗子:

import java.util.Arrays;
public class Swap{
    public static void main(String[] args) {
        int array[] = new int[5];
        Arrays.fill(array,6);
        for(int i = 0;i<array.length;i++){
            System.out.println("第"+i+"个元素是:"+array[i]);
        }
     }
}

上面的栗子,使得我们数组里面的每一个元素赋值均为6;

但是我们一般想要的是指定一些位置,那么我们继续来看:

fill(int[] array,int fromIndex,int toIndex,int value);
fromIndex 是要使用指定值填充的第一个元素的索引(被包括)
toIndex 是使用指定值填充的最后一个元素的索引(不包括)
value 是储存在数组所有元素中的值
//我们应当注意不要让索引位置越界,否则会出现数组越界异常
import java.util.Arrays;

public class Fill{
    public static void main(String[] args) {
        int array[] = new int[]{1,2,3,4};
        Arrays.fill(array,1,2,6);//替换数组里第二个元素
        for(int i=0; i<array.length;i++){
            System.out.println("第"+i+"个元素是:"+array[i]);
        }
    }
}

五、数组排序

在JAVA里面提供了很棒的排序方法,也就是sort( )方法。

Arrays.sort(object);//object也就是数组的名称

直接上代码:

import java.util.Arrays;

public class A{
    public static void main(String[] args) {
        int array[] = new int[]{1,2,3,4};
        Arrays.sort(array);
        for(int i = 0;i<array.length;i++){
            System.out.println(array[i]);
        }
    }
}

JAVA里面对于String类型数组的排序,遵循的原则是数字排在字母前面,大写字母排在小写字母前面。

六、数组拷贝

Java里面一般可以用copyOf() copyOfRange()来实现对数组的复制。
我们先来看copyOf():

copyOf(array,int newlength);
array 是要进行复制的数组
newlength 是复制后的新数组的长度,如果比原来大,那么空余的地方用0填充,如果小,那么就截取到满足条件为止。

看一下代码:

import java.util.Arrays;

public class Copy {
    public static void main(String[] args) {
        int array[] = new int[]{1,2,3};
        int newarray[] = Arrays.copyOf(array,5);
        for(int i=0; i<newarray.length; i++){
            System.out.println(newarray[i]);
        }
    }
}

然后来看一下copyOfRange的方法:

copyOfRange(array,int fromIndex,int toIndex)

  • array 是要进行复制的数组对象
  • fromIndex 开始复制数组的索引位置,需要包括
  • toIndex 是指要复制范围的最后索引位置,但是是不包括Index的元素
import java.util.Arrays;

public class Copy{
    public static void main(String[] args) {
        int array[] = new int[]{1,2,3,4,5};
        int newarray[] = Arrays.copyOfRange(array,0,3);//前三个元素
        for(int i = 0;i<newarray.length;i++){
            System.out.println(newarray[i]);
        }
    }
}

七、元素查询

二分法想必大家都听说过,在JAVA里面也有二分的思想,也就是binarySearch( )方法,二分搜索方法来搜索数组,获取我们的指定对象,返回我们要搜索的元素的索引。
与复制相似,也有两种类似写法:

binarySearch(Object[ ],Object key) binarySearch(Object[ ] ,int fromIndex, int toIndex ,Object key ) 先看第一个:

binarySearch(Object[ ] array,Object key)
//array 是要进行搜索的数组
//key 是要进行搜索的值,如果这个key包含在数组里面,则返回搜索值得索引,否则返回 -1 或 " - "

我们看一个栗子:

int array[] = new int[]{4,16,10};
Arrays.sort(arr);
int index = Arrays.binarySearch(array,0,1,7);

我们看一下上面这个程序,我们发现原来的数组里面是没有 7 的,我们在返回值前面加一个 “ - ” ,然后它索引在0~1,我们看 7 是不是应该在 16 前面,在4的后面,经过sort排序之后,我们的顺序是{4,10,16},此时16的位置是 2 ,所以,我们搜索7的返回值index是 -2。

对于这种方法,应当注意,我们要是找某个元素,那么一定是排顺序后,排序好的,如果没有提前排序,那么结果是无法确定的。

我们再看一个可以查询到的:

import java.util.Arrays;

public class B{
    public static void main(String[] args) {
        int array[] = new int[]{5,2,4,3,1};
        Arrays.sort(array);
        int index = array.binarySearch(array,4);
        System.out.println("4的索引位置是"+index);
    }
}
//返回值是 3 ,也就是 4 的索引位置

我们再来看一下binarySearch(Object[ ] ,int fromIndex, int toIndex ,Object key )

 binarySearch(Object[ ] array,int fromIndex, int toIndex ,Object key)

  •  array要检索的数组
  •  fromIndex是指定范围的开始处索引
  •  toIndex 是指范围内的结束处索引
  •  key 是指要搜索的元素

使用此方法依然要进行数组的排序

举个栗子:

import java.util.Arrays;

public class C{
    public static void main(String[] args) {
        String str[] = new String[]{"ab","cd","ef","gh"};
        Arrays.sort(str);
        int index;
        index = Arrays.binarySearch(str,0,2,"cd");
        System.out.println("cd的索引位置:"+index);
    }
}
//cd的索引位置:1 

八、排序算法

笔者对于常见的排序算法有过详细的讲解: 小白学六大排序算法(C语言版),思想都是一样的,这里笔者就不再讲解,选取冒泡排序,直接选择排序,反转排序这三个方面来用JAVA实现一下 :

1.冒泡排序

public class BubbleSort {
    public static void main(String[] args) {
        int[] array = {1,5,6,9,8,7};
        BubbleSort bubbleSort = new BubbleSort();
        bubbleSort.sort(array);
    }

    public void sort(int[] array){
        for(int i = 1;i<array.length;i++){
            for(int j = 0;j<array.length-i;j++){
                if(array[j]>array[j+1]){
                    int temp;
                    temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
        showArray(array);
    }

    public void showArray(int[] array){
        for(int i:array){
            System.out.print(" "+i);
        }
        System.out.println();
    }

}

2.直接选择排序

public class SelectSort {
    public static void main(String[] args) {
        int array[] = {5,1,2,9,4,6,7};
        SelectSort selectSort = new SelectSort();
        selectSort.sort(array);
    }

    public void sort(int[ ] array){
        int index;
        for(int i = 1; i<array.length; i++){
            index = 0;
            for(int j=1;j<=array.length-i;j++){
                if(array[j]>array[index]){
                    index = j;
                }
            }
            int temp;
            temp = array[array.length-i];
            array[array.length-i] = array[index];
            array[index] = temp;
        }
        showArray(array);
    }

    public void showArray(int[] array){
        for(int i:array){
            System.out.print(" "+i);
        }
        System.out.println();
    }
}

3.反转排序

public class ReverseSort {
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6};
        ReverseSort reverseSort = new ReverseSort();
        reverseSort.sort(array);
    }
    public void sort(int[] array){
        System.out.println("原数组:");
        showArray(array);
        int temp;
        for(int i = 0; i<array.length/2; i++){
            temp = array[i];
            array[i] = array[array.length-1-i];
            array[array.length-1-i] = temp;
        }
        System.out.println("反转之后:");
        showArray(array);
    }

    public void showArray(int[] array){
        for(int i:array){
            System.out.print(" "+i);
        }
        System.out.println();
    }
}

到此这篇关于Java数组归纳总结的文章就介绍到这了,更多相关Java数组归纳 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java数组归纳总结

本文链接: https://www.lsjlt.com/news/163483.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java数组归纳总结
    目录一、一维数组1.创建方法2.初始化数组(一维数组)二、二维数组1.创建方法2.初始化二维数组三、遍历数组四、替换元素五、数组排序六、数组拷贝七、元素查询八、排序算法1.冒泡排序2...
    99+
    2022-11-13
  • python 基础知识点归纳总结
    目录 1. python 基础知识点归纳总结1.1. 变量1.2. 数据类型1.3. 控制流语句1.3.1. if 语句1.3.2. for 循环1.3.3. while 循环 1.4....
    99+
    2023-10-20
    python 开发语言
  • 总结归纳pythonos库常用方法
    目录常用的函数和方法getcwd()函数:listdir()函数:path.exists()函数:path.isdir()函数:path.isfile()函数:path.join()...
    99+
    2023-03-23
    python os库方法 python os库归纳
  • 数据库基本操作语法归纳总结
    关系型数据库:以表作为实体,以主键和外键关系作为联系的一种数据结构。主键:在关系型数据库中,用一个唯一的标识符来标志每一行,这个标识符就是主键。主键有两个特点:非空和不能重复。外键:在关系型数据库中,外键就是用来表达表与表之间的关系、联系,...
    99+
    2023-05-31
    数据库 语法
  • MHA工具的优缺点归纳总结
    MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为...
    99+
    2022-10-18
  • Java编程技巧:if-else优化实践总结归纳
    目录一、使用策略枚举来优化if-else二、使用三目运算符来优化if-else1、根据if-else条件来判断赋值的,如:2、利用if-else条件来判断调用方法,如:三、使用Str...
    99+
    2022-11-12
  • JavaScript数组详细归纳
    目录一、数组归纳1. 字符串拆分为数组2. 将集合和映射转换为新数组3. 对现有数组进行浅复制4. arguments 对象轻松转换为数组5. 转换自定义对象二、迭代器方法三、数组常...
    99+
    2022-11-12
  • Qt信号与槽知识点总结归纳
    目录一.含义与使用(一).含义(二).connect使用(三).信号函数(四).槽函数二.示例总结一.含义与使用 (一).含义 信号与槽是qt中一种常用的通信手段。发送方发送信号,接...
    99+
    2022-12-28
    qt信号与槽机制 qt信号的定义 qt信号与槽函数
  • ASP.NET学习中常见错误总结归纳
    目录前言下拉框绑值绑值GridView删除数据修改修改赋值到另外一个页面修改赋值到另外一个页面绑定值换页不报错前言 自己在学习.NET中常犯的错误(持续更新) 下拉框绑值 p...
    99+
    2022-11-12
  • MYSQL常用的性能指标总结和归纳
    (1) QPS(每秒Query量) QPS = Questions(or Queries) / uptime mysql> show global status like 'Question%'; m...
    99+
    2022-10-18
  • Torch not compiled with CUDA enabled 报错的归纳总结
    以前总是嫌装环境太麻烦,碰到些需要用到GPU的项目都不想去复现了。。。这次因为论文需要,下定决心要把pytorch的安装问题搞定,但是期间遇到了很多问题,最烦人的莫过于这个' AssertionError: Torch not compil...
    99+
    2023-09-08
    pytorch 深度学习 python Powered by 金山文档
  • 【Java 线程系列】一文看懂--并发编程归纳总结
    作者:半身风雪 上篇:线程池原理解析 并发编程归纳总结 一、JMM 基础-计算机原理 二、Java 内存模型(JMM) 2.1、可见性 2.2、原子性 ...
    99+
    2023-09-13
    java 开发语言 android
  • SQL Azure与SQL Server的异同点总结和归纳
    SQL Azure并不完全支持SQL Server内所有的特性和数据类型。当前版本的SQL Azure并不支持分析服务、复制、报表服务以及Service Broker。 因为SQL Azure负责物理管理,...
    99+
    2022-10-18
  • MySQL主从延迟解决方法的归纳和总结
    MySQL主从延迟情况共分为以下四类 一.MIXED模式无索引或SQL慢 在从库上 pager grep -v Sleep;show processlist 查看到正在执行的SQL 解决方法: 1.SQL比...
    99+
    2022-10-18
  • 归纳总结Remix 表单常用方法及示例详解
    目录Remix 的三种表单回顾表单基础表单提交的形式阻止跳转Remix 提供的表单组件一个简单的 demo使用钩子函数提交函数Remix fetcher 表单一个简单的 demo没有...
    99+
    2023-03-24
    remix 表单用法归纳 Remix 表单常用方法
  • java编程之递归算法总结
    1.何为递归个人理解就是自己调用自己,直到满足一个条件结束自己调用自己的过程,这个就是递归。举一个通俗的点的例子:假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问前一排的人「你坐在哪一排?」,这样前面的人 ...
    99+
    2023-05-30
    java 递归算法 ava
  • 浅谈Java数据结构之稀疏数组知识总结
    稀疏数组 当一个数组中的元素大多为0或者相同元素的时候,可以用稀疏数组来压缩 稀疏数组只记录 行row 列col 值value 将下列的二维数组转为稀疏数组,如下...
    99+
    2022-11-12
  • Java数组与堆栈相关知识总结
    一、数组创建 1.1 声明并赋值 int[] a = {1,2,3}; 1.2 声明数组名开辟空间并且赋值 int[] a; a = new int[]{1,2,3}; ...
    99+
    2022-11-12
  • Java数组操作经典例题大总结
    目录数组中元素的求和使用二维数组打印一个10行的杨辉三角求数值型数组中元素的最大值、最小值、平均数、总和等*使用简单数组线性查找二分法查找冒泡排序求一个3*3矩阵对角线元素之和总结&...
    99+
    2022-11-13
  • JavaScript数组操作总结
    目录1.定义2.数组的本质3.数组的length4. in5. for…in6.数组的空位7.类数组(伪数组)总结1.定义 数组是按次序依次排列的一组值 任何数据类型都...
    99+
    2022-11-13
    JavaScript数组 JS数组类型 JS数组操作
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作