搜索
首页Javajava教程Java数组的定义和使用方式

    一、数组的基本用法

    1.什么是数组

    数组:存储一组相同数据类型的数据的集合。

    2.定义数组 

    int[] :int类型数组 

    double[] :double类型数组

    通过类型就可以定义变量,比如:

    int[] array,array就是这个类型的变量,这个变量是存储一组相同数据的变量。

    三种数组定义的方式:

    Java中数组怎么定义使用

    第一种:

    int[] array = {1,2,3,4,5,6};定义一个数组且初始化 

    虽然没写new,但实际上也是一个对象

    注意事项:

    int[10] array =  {1,2,3,4,5,6};写法错误,int[] 属于类型,中括号里面不能加任何的数字,相当于在这里破坏了它的类型。

    第二种:

    int[] array2 = new int[3];

    Java中数组怎么定义使用

     定义数组未初始化

    第三种:

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

    Java中数组怎么定义使用

    定义且初始化 

    三种当中用的最多的就是第一种

    3.数组的使用

    获取数组长度:

    Java中数组怎么定义使用

    Java里面可以直接通过数组名array.length 求出当前数组的长度

    访问数组元素:

    Java中数组怎么定义使用

    访问数组下标为4的元素 

    越界访问数组元素:

    Java中数组怎么定义使用

     Java语言越界直接报错

    更改数组元素:

    Java中数组怎么定义使用

     通过数组名中括号的方式,不仅仅可以访问下标的内容,也可以往下标里面写一些数据 

    打印数组: 

    第一种:(for循环)

    Java中数组怎么定义使用

     第二种:(增强for循环,for each循环)

    Java中数组怎么定义使用

    for循环和for each循环的区别:

    for循环是可以拿到下标的,

    for each循环是拿不到下标的,更多的是用于集合中

    第三种:借助Java的操作数组工具类 Arrays

    Java中数组怎么定义使用

    二、数组作为方法的参数

    基本用法

    JVM简单介绍

    Java中数组怎么定义使用

    Java中数组怎么定义使用

     局部变量在内存中的储存:

    Java中数组怎么定义使用

    引用不指向对象写法:

    Java中数组怎么定义使用

    这个引用不指向任何的对象

    Java中数组怎么定义使用

    一个引用能不能同时指向多个对象吗? 

    Java中数组怎么定义使用

    对于这个代码来说只能指向一个对象,存一个对象的地址。最终只保存了最后一个对象的地址 

    数组作为方法的参数传递的过程:

    Java中数组怎么定义使用

    求解打印结果:

    前两种求解:

    Java中数组怎么定义使用

    fun2打印结果:

    Java中数组怎么定义使用

    分析例子:下图代表什么 

    Java中数组怎么定义使用

    代表array2这个引用,指向了array1这个引用指向的对象。

    下图就代表了上面例子的意思:

    Java中数组怎么定义使用

    注意事项:

    引用指向引用这句话 是错误的,引用只能指向对象

    引用一定在栈上吗?

    不一定,一个变量在不在栈上,是你变量的性质决定的,如果你就是一个局部变量,一定是在栈上的。如果不是,例如,实例成员变量那就不一定就是在栈上的。

    三、数组练习题

    1.交换两个变量的值

    public class TestDemo {
        public static void swap(int[] array){
            int tmp = array[0];
            array[0] = array[1];
            array[1] = tmp;
     
        }
        public static void main(String[] args) {
            int[] array = {10,20};
            System.out.println("交换前: "+array[0]+" "+array[1]);
            swap(array);
            System.out.println("交换后: "+array[0]+" "+array[1]);
        }

    打印结果:

    Java中数组怎么定义使用

    2.写一个方法, 将数组中的每个元素都 * 2 

     /**
         * 在原来的数组上扩大2倍
         * @param array
         */
        public static void enlarge(int[] array){
            for (int i = 0; i <array.length ; i++) {
                array[i] = array[i]*2;
            }
     
        }
     
        public static void main(String[] args) {
            int[] array = {1,2,3,4,5,6,7};
            enlarge(array);
            System.out.println(Arrays.toString(array));
        }

    打印结果:

    Java中数组怎么定义使用

    把原来数组扩大2倍的值放在一个新的数组中

    /**
         * 把原来数组扩大2倍的值放在一个新的数组中
         * @param array
         * @return
         */
        public static int[] func(int[] array) {
            int[] ret = new int[array.length];
            for (int i = 0; i < array.length; i++) {
                ret[i] = array[i] * 2;
            }
            return ret;
        }
     
        public static void main(String[] args) {
            int[] array = {1,2,3,4,5,6,7};
           int[] ret =  func(array);
            System.out.println(Arrays.toString(ret));
        }

    3.模拟实现tostring函数

    public static String myToString(int[] array){
            String str = "[";
     
            for (int i = 0; i <array.length ; i++) {
                str = str+array[i];
                if(i != array.length-1){
                    str+= ",";
                }
            }
            str= str + "]";
            return str;
        }
     
        public static void main(String[] args) {
            int[] array = {1,2,3,4,5,6,7};
           String str =  myToString(array);
            System.out.println(str);
        }

    打印结果:

    Java中数组怎么定义使用

    4.找数组中的最大元素 

    public static int maxNum(int[] array){
            if(array == null) return -1;
            if (array.length == 0) return -1;
            int max = array[0];
            for (int i = 1; i <array.length ; i++) {
                if(max < array[i]){
                    max = array[i];
     
                }
            }
            return max;
        }
     
        public static void main(String[] args) {
            int[] array = {12,8,14,26,5,7,8};
            int max = maxNum(array);
            System.out.println(max);
        }

    打印结果:

    Java中数组怎么定义使用

    5.查找数组中指定元素(顺序查找) 

       public static int findNum(int[] array,int key){
            for (int i = 0; i <array.length ; i++) {
                if(array[i] == key){
                    return i;
                }
            }
            return -1;
        }
     
        public static void main(String[] args) {
            int[] array = {2,4,5,6,11,7,8,9};
            System.out.println(findNum(array, 7));
     
        }

    打印结果:

    Java中数组怎么定义使用

    6.查找数组中指定元素(二分查找) 

    二分查找的必要条件是必须有序的数列
        public static int binarySearch(int[] array,int key){
            int left = 0;
            int right = array.length-1;
            while(left <= right){
                int mid = (left+right)/2;
                if(array[mid] > key){
                    right = mid - 1;
                }else if(array[mid] < key){
                    left = left + 1;
                }else{
                    return mid;
                }
     
            }
            return -1;
        }
     
        public static void main(String[] args) {
            int[] array = {12,14,15,16,18,23};
            System.out.println(binarySearch(array, 15));
        }

    打印结果:

    Java中数组怎么定义使用

    以上是Java数组的定义和使用方式的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明
    本文转载于:亿速云。如有侵权,请联系admin@php.cn删除
    为什么Java是开发跨平台桌面应用程序的流行选择?为什么Java是开发跨平台桌面应用程序的流行选择?Apr 25, 2025 am 12:23 AM

    javaispopularforcross-platformdesktopapplicationsduetoits“ writeonce,runanywhere”哲学。1)itusesbytbytybytecebytecodethatrunsonanyjvm-platform.2)librarieslikeslikeslikeswingingandjavafxhelpcreatenative-lookingenative-lookinguisis.3)

    讨论可能需要在Java中编写平台特定代码的情况。讨论可能需要在Java中编写平台特定代码的情况。Apr 25, 2025 am 12:22 AM

    在Java中编写平台特定代码的原因包括访问特定操作系统功能、与特定硬件交互和优化性能。1)使用JNA或JNI访问Windows注册表;2)通过JNI与Linux特定硬件驱动程序交互;3)通过JNI使用Metal优化macOS上的游戏性能。尽管如此,编写平台特定代码会影响代码的可移植性、增加复杂性、可能带来性能开销和安全风险。

    与平台独立性相关的Java开发的未来趋势是什么?与平台独立性相关的Java开发的未来趋势是什么?Apr 25, 2025 am 12:12 AM

    Java将通过云原生应用、多平台部署和跨语言互操作进一步提升平台独立性。1)云原生应用将使用GraalVM和Quarkus提升启动速度。2)Java将扩展到嵌入式设备、移动设备和量子计算机。3)通过GraalVM,Java将与Python、JavaScript等语言无缝集成,增强跨语言互操作性。

    Java的强键入如何有助于平台独立性?Java的强键入如何有助于平台独立性?Apr 25, 2025 am 12:11 AM

    Java的强类型系统通过类型安全、统一的类型转换和多态性确保了平台独立性。1)类型安全在编译时进行类型检查,避免运行时错误;2)统一的类型转换规则在所有平台上一致;3)多态性和接口机制使代码在不同平台上行为一致。

    说明Java本机界面(JNI)如何损害平台独立性。说明Java本机界面(JNI)如何损害平台独立性。Apr 25, 2025 am 12:07 AM

    JNI会破坏Java的平台独立性。1)JNI需要特定平台的本地库,2)本地代码需在目标平台编译和链接,3)不同版本的操作系统或JVM可能需要不同的本地库版本,4)本地代码可能引入安全漏洞或导致程序崩溃。

    是否有任何威胁或增强Java平台独立性的新兴技术?是否有任何威胁或增强Java平台独立性的新兴技术?Apr 24, 2025 am 12:11 AM

    新兴技术对Java的平台独立性既有威胁也有增强。1)云计算和容器化技术如Docker增强了Java的平台独立性,但需要优化以适应不同云环境。2)WebAssembly通过GraalVM编译Java代码,扩展了其平台独立性,但需与其他语言竞争性能。

    JVM的实现是什么,它们都提供了相同的平台独立性?JVM的实现是什么,它们都提供了相同的平台独立性?Apr 24, 2025 am 12:10 AM

    不同JVM实现都能提供平台独立性,但表现略有不同。1.OracleHotSpot和OpenJDKJVM在平台独立性上表现相似,但OpenJDK可能需额外配置。2.IBMJ9JVM在特定操作系统上表现优化。3.GraalVM支持多语言,需额外配置。4.AzulZingJVM需特定平台调整。

    平台独立性如何降低发展成本和时间?平台独立性如何降低发展成本和时间?Apr 24, 2025 am 12:08 AM

    平台独立性通过在多种操作系统上运行同一套代码,降低开发成本和缩短开发时间。具体表现为:1.减少开发时间,只需维护一套代码;2.降低维护成本,统一测试流程;3.快速迭代和团队协作,简化部署过程。

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热工具

    SublimeText3 英文版

    SublimeText3 英文版

    推荐:为Win版本,支持代码提示!

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    功能强大的PHP集成开发环境

    MinGW - 适用于 Windows 的极简 GNU

    MinGW - 适用于 Windows 的极简 GNU

    这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

    适用于 Eclipse 的 SAP NetWeaver 服务器适配器

    适用于 Eclipse 的 SAP NetWeaver 服务器适配器

    将Eclipse与SAP NetWeaver应用服务器集成。

    Atom编辑器mac版下载

    Atom编辑器mac版下载

    最流行的的开源编辑器