3.17问题发现及解决

  1. Q:Java中声明完一个变量是否意味着就已经分配了内存空间?

    A:声明一个变量只是将变量名标识符的有关信息告诉编译器,使编译器“认识”该标识符,但是声明并不一定引起内存的分配!而定义一个变量意味着给变量分配内存空间,用于存放对应类型的数据;
    《Java编程思想》:第20页,变量一直等到它赋值完成,在内存中的值才会存在,即才被分配的内存空间。

    2.Q:数据的长度,声明过长,会不会导致内存的浪费?

    A:《Java编程思想》:不同于基本数据类型的声明,声明一个数组变量时并不在内存中给数组分配任何空间,它只是创建一个对数组的引用的存储位置。当给数组分配空间时,必须通过指定该数组能够存储的元素个数来确定数组的大小,创建数组后就不能修改数组的大小。
    数组的后置默认为0的复制情况:

int[] array = new int[50];
        for(int i=1;i<=5;i++){
            array[i-1] = i;
        }
        for(int i=0;i<array.length;i++){
            System.out.println(array[i]);
        }
  1. Q:对于数组的交换,是否就是交换了下标?

A:

    private void swap(int n1,int n2){
        long temp = a[n1];
        a[n1] = a[n2];
        a[n2] = temp;
    }
public static void swap(int[] array){
    int temp = a[0];
    int a[0] = a[1];
    int a[1] = a[0];
}

第二个代码块是第一种的特例,即知道要交换哪一对元素的情况下才能这样写,第一个代码块是在冒泡排序中出现的,即不知道两个具体元素的时候,交换下标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值