(数组)

版权声明:Java基础,个人笔记。 https://blog.csdn.net/liu19951104/article/details/81149198

数组定义与访问

数组:就是存储数据长度固定的容器,保证多个数据的类型要一致。

方式1(动态数组)

格式:

数组存储的数据类型[  ]      数组名字  =   new  数组存储的数据类型  [ 长度  ]

  • 数组存储的数据类型 : 创建的数组容器可以存储什么样的数据类型
  • [   ] :表示数组
  • 数组名字: 为自定义的数组起个变量名,满足标识符规范,可以使用名字操作数组
  • new : 关键字,创建数组使用的关键字
  • [长度] :数组的长度,表示数组容器中可以储存什么类型数据
  • 数组由定长特性,也就是说,数组的长度一旦确定,不可更改

方式2(静态数组)

格式1:

数组存储的数据类型[  ]      数组名字  =   new  数组存储的数据类型  [   ]{ 元素1,元素2,元素3.........}

格式2:

数组存储的数据类型[  ]      数组名字  =   { 元素1,元素2,元素3.........}

数组的访问

索引:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引,可以通过数组的索引访问到数组中的元素

格式: 数组名  [  索引]

数组的长度属性:每个数组都具有长度,而且都是固定的。Java中赋予了数组的一个属性,可以获取到数组的长度,语句为;数组名.length,属性length的执行结果是数组的长度,int类型结果。所以我们不难看出,数组中的最大索引值为数组名.length -1

索引访问数组中的元素:

  • 数组名 【 索引】=数值,表示为数组中的元素赋值
  • 变量 = 数组名 【索引】,表示获取数组中的元素

数组原理内存图

内存概述:内存是计算机中的重要原件,临时存储区域,作用是运行程序1.我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存

Java虚拟机的内存划分

为了提高效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据的方式以及内存管理的方式。

JVM的内存划分

区域名称 作用

寄存器

给CPU使用,与java开发无关
本地方法栈 JVM在使用操作系统功能的时候使用,与java开发无关
方法区 存储可以运行的.class文件
堆内存 存储对象和数组。new来创建的,都储存在堆内存里
方法栈 方法运行时使用的内存,比如main方法运行,进入栈方法中执行

数组遍历: 就是将数组中的每一个元素分别获取出来,就是遍历,遍历也是数组操作中的基石。

public static void main (String[] args){
       int [] array = {a,b,c,d,e,f,g};
        for(i = 0; i < array.length; i++){
            System.out.println(array[i]);
        }
}

数组获取最大值元素:从数组的所有元素中找出最大值。

实现思路:

  • 定义变量,保存数组0索引上的元素
  • 遍历数组,获取出数组中的每一个元素
  • 将遍历到的元素和保存数组0索引上值的变量进行比较
  • 如果数组元素的值大于变量的值,变量便会记录住新的值。总而言之就是变量始终保存的是数组中的最大的值
  • 数组循环遍历结束,变量保存的就是数组中的最大值

数组反转:数组中的元素颠倒顺序,打个比方,原数组  1,2,3,4,5 ,反转之后为5,4,3,2,1

实现思想:

  • 实现反转,就需要将数组最远端元素位置交换
  • 定义两个变量,保存数组的最小索引和最大索引
  • 两个索引的元素交换位置
  • 最小索引++,最大索引--,再次交换位置
  • 最小索引超过最大索引,数组反转操作结束

思路:

数组作为方法参数和返回值()

数组作为方法参数,传递的参数是数组内存的地址。

 

数组作为数组的返回值,返回的是数组的内存地址

public static void main(String[] args){
 // 调用方法,接收数组的返回值
 //接收到的是数组内存的地址值
    int [] array = 
    for(int i = 0; i< array.length ; i++){
       System.out.println();            
}
/*
    定义方法,返回值是数组类型
    return返回的数组的地址
*/
}
public static int [] getArray(){
    int [] array = {1,2,3,4,5};
    //返回数组的地址,返回给调用者
        return  array;
}

数组练习题

//模拟在一副牌中,抽取第一张,第五张和第五十张扑克牌。

package lwd05.dwl05.demo05;

public class LoveStory07 {
    public static void main(String[] args) {
        //获取所有的扑克牌
        String [] puke = vok();
        //抽取指定的三种扑克牌
        int a = 1;
        int b = 5;
        int c = 50;
        String[]puke3 = get(puke,a,b,c);
        //打印抽取的牌
        for (int i = 0; i < puke3.length; i++) {
            System.out.print(puke3[i] + " ");
        }

    }
    public static String[]  vok (){
        String [] colors = {"红桃","黑桃","梅花","方片"};
        String [] sum = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        String [] puke = new String [54];
        int num = 0;
        for (int i = 0; i < colors.length; i++) {
            for (int i1 = 0; i1 < sum.length; i1++) {
                puke[num] = colors[i] + sum[i1];
                num++;
            }
        }
        puke[52] = "小王";
        puke[53] = "大王";
        return puke;
    }
    public static String [] get (String[] puke, int i1,int i2,int i3){
        String [] puke3 = new String[3];
        puke3[0] = puke[i1 - 1];
        puke3[1] = puke[i2 - 1];
        puke3[2] = puke[i3 - 1];
        return puke3;

    }


}

猜你喜欢

转载自blog.csdn.net/liu19951104/article/details/81149198