当前位置: 移动技术网 > IT编程>开发语言>Java > 数组的初始化及其基本属性

数组的初始化及其基本属性

2019年04月29日  | 移动技术网IT编程  | 我要评论

私人召唤,收到银行承兑汇票账务处理,国珍松花粉的功效

数组的初始化及其基本属性

1. 数组:属于引用类型,就是一个存放同类型变量数据的容器。(容器概念以后再补)

2. 数组初始化

第一种:数据类型[] 数组名 = new 数据类型[数据长度];(动态初始化过程)
int[] arr = new int [5];
第二种:数据类型 数组名[] = {数据1,数据2,数据3……};(静态初始化过程)
int arr[] = {1,2,3,4,5};
动态初始化:我们自己指定了数组长度,系统会自动开辟相应的内存空间,并且给所有位置分配一个默认值。
静态初始化:我们在初始化开始就给定了数组值,系统会根据值的数量,开辟内存空,所以不需要我们指定数组长度。
静态对象还可以用在匿名对象上(参考面向对象的匿名对象)

例:string str = arrays.tostring(new int[] {1,2,3,4,5})(这里的数组没有名字,是临时定义的)

3.访问数组的元素

数组名[下标/索引]引用存储数据的地址(实际上就是使用了指针,而java中没有指针,故使用引用对象)。

例:int arr[] ={1,2,3,4,5};
    system.out.println(arrays.tostring(arr));
输出:
    [1,2,3,4,5]
    int arr1[]=arr; //这里是把数组arr引用对象的地址给了arr1,所以这俩数组实际上都是一个东西,
                    //对其中一个修改,两边引用的数组都会发生改变。
    arr1[0]=5;
    system.out.println(arrays.tostring(arr));
    system.out.println(arrays.tostring(arr1));
输出:
    [5,2,3,4,5]
    [5,2,3,4,5]

当引用对象赋值给其他对象时,修改的是地址上的数据,所以只要引用这个对象的值都会发生变化。
这里得说说引用传递,值传递。
引用传递:引用传递最终操作的是引用指向jvm虚拟机堆里面存储的数据,所有引用这组数据的引用对象都会受到影响。
值传递:直接对数据进行操作,改变的只是装着这个值的单个变量。

4.数组的基本操作

首先建立一个数组

package com.study.monday;

import java.util.arrays;
import java.util.scanner;

public class arraypractice2 {

    public static void main(string[] args) {
        /*
         * 有一个数列:8,4,2,1,23,344,12
         * 求出最大值 
         * 数组查找
         * 数组排序
         */
        int[] arr= {8,4,2,1,23,344,12};
        system.out.println("最大值为:" + getarrmax(arr));       //获取最大值
        ascorder(arr);      //升序排列数组
        descorder(arr);     //降序排列数组
        lookuparr(arr);     //查找数组中是否存在相同的数值
    }

遍历数组的用法,主要是利用for循环来对数组每一个数进行访问使用。

    /*
     * 方法名:getarrmax
     * 功能:求出数组的最大值max
     * 返回值类型:int
     */
    public static int getarrmax(int arr3[]) {
        int max = arr3[0];
        for (int i = 1; i < arr3.length; i++) {
            max = max > arr3[i] ? max : arr3[i];
        }
        return max;
    }

对数组的排序(冒泡法),检索。(排序、查找单独写一篇详细记录)

    /*
     * 方法名:lookuparr
     * 功能:键盘输入一个值,查看数组内是否有相同的值
     * 返回值类型:void
     */
    public static void lookuparr(int arr5[]) {
        scanner input = new scanner(system.in);
        int a = input.nextint();
        for (int i = 0; i < arr5.length; i++) {
            if (a == arr5[i]) {
                system.out.println("有!!在a[" + i + "]");
            }
        }
    }
    /*
     * 方法名:ascorder
     * 功能:对数组进行升序排列,并且输出
     * 返回值类型:void
     */
    public static void ascorder(int arr6[]) {
        int a;
        for (int i = 0; i < arr6.length; i++) {
            for (int j = 0; j < arr6.length -1-i; j++) {
                if (arr6[j] > arr6[j + 1]) {
                    a = arr6[j];
                    arr6[j] = arr6[j + 1];
                    arr6[j + 1] = a;
                }
            }
        }
        system.out.print("升序排列为:");
        printarray(arr6);
    }

这些就是上课老师讲的,我自己理解的,最后汇总出来的。有些东西是老师的,有些是我自己的,我只是把自己认为比较重要的写出来了。关于最后的数组排序,查询,还有上面提到过的程序效率问题,决定单独再写一篇来自己总结一下,八大排序,二分法查询,目前自己已知的程序效率算法。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网