JAVA学习笔记五之(1)数组

JAVA学习笔记五之(1)数组

一、java内存分配

  1、java针对程序的内存分配问题:
    不同内存地方的处理程序的效率不同。

  2、java内存分配:
    (1)、栈(Stack):
      A:局部变量
        局部变量:
          在方法的定义中,或者方法声明上的变量都叫局部变量。
          局部变量的使用,必须先声明,初始化,然后使用。
          
      B:方法的调用
      
      C:注意:
        1、局部变量的数据没有初始化值。
        2、当方法调用完毕,局部变量就消失。
    (2)、堆(Heap):
      所有被new出来的东西。
      
      A、都有首地址值。
      
      B、堆内存的数据有默认初始化值:
        整数:0
        浮点数:0.0
        字符:’\u0000’
        布尔类型:false
        String类型:null
        
      C、只要有栈内存的引用指向堆内存的数据,堆内存的数据就一直存在。如果想它不存在,把这个指向去掉就ok。
        不用但心垃圾回收的问题。因为java语言会自动进行垃圾回收。垃圾回收的时候,是在不确定的时间上。
        当jvm内存不够,jvm还得要空闲的时候。
    (3)、方法区:(面向对象讲解)
    (4)、本地方法栈:(操作系统的一些资源)
    (5)、寄存器:(CPU要使用)

二、数组

  1、数组的定义:
      存储多个同一种数据类型的多个元素容器。

  2、数组的特点:
     数组中每一个元素进行编号,方便我们查找到每一个元素。
    
    注意:编号是从0开始。

    如何查找呢?
      数组名[编号]。就表示获取的是第(编号+1)个元素。

  3、数组的定义格式:
      数据类型[] 变量名 = new 数据类型[个数];

    解释:
      左边:
        int:说明我定义的数组的元素类型。
        []:说明是一个数组。
        intArray:是数组的名称。
        
      右边:
        new:创建对象,创建实例。所有的实例都是通过new关键字做的。
           通过new出来的数据和不new出来的数据存储位置不同。
        int:说明数组中的元素的数据类型。
        []:说明是数组。
        3:说明数组中的元素个数。
        
      念法:
        定义了一个int数组类型的变量intArray,里面有3个int类型的元素。
        
      另外的一种写法,意思和这个比较类似:
        int intArray[] = new int[3];

class ArrayDemo1 {
    public static void main(String[] args) {
        //数据类型[] 变量名 = new 数据类型[个数];
        int[] intArray = new int[3];

        System.out.println(intArray); //[I@79f1d448 -- 这是该数组在内存中的地址值
        System.out.println(intArray[0]); //0 -- 获取数组中的第一个元素的值
    }
}

  4、数组的内存图解
    (1)、一个数组的内存图解
    一个数组的内存图解

    (2)、两个数组的内存图解
    两个数组的内存图解
    (3)、多个栈内存的引用变量指向同一个堆内存地址
    多个栈内存的引用变量指向同一个堆内存地址

class ArrayDemo2 {
    public static void main(String[] args) {
        //定义第一个数组
        int[] intArray = new int[3];
        intArray[0] = 1;
        intArray[1] = 2;
        intArray[2] = 3;

        System.out.println(intArray[0]);
        System.out.println(intArray[1]);
        System.out.println(intArray[2]);

        System.out.println("-------------");

        //定义第二个数组
        int[] intArray2 = new int[3];
        intArray2[0] = 1;
        intArray2[1] = 2;
        intArray2[2] = 3;

        System.out.println(intArray2[0]);
        System.out.println(intArray2[1]);
        System.out.println(intArray2[2]);

        //比较
        System.out.println(intArray == intArray2); //false

        System.out.println("-------------");

        //定义第三个数组
        int[] intArray3 = intArray; //两个栈内存的变量指向同一个数组
        intArray3[0] = 10;
        intArray3[1] = 20;
        intArray3[2] = 30;

        System.out.println(intArray3[0]);
        System.out.println(intArray3[1]);
        System.out.println(intArray3[2]);

        System.out.println(intArray[0]);
        System.out.println(intArray[1]);
        System.out.println(intArray[2]);

        //比较
        System.out.println(intArray == intArray3); //true
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值