3.17问题发现及解决

来源:互联网 发布:微信点赞用什么软件好 编辑:程序博客网 时间:2024/06/06 01:50
  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];}

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

0 0