Java 核心知识(六)--数组与内存模型(堆栈)及进制转换算法举例
Java 核心知识(六)--数组与内存模型(堆栈)及进制转换算法举例 王利华 2012 -5
注:有些大写字母是软件造成的,请更正。如:Int—int
一、数组的创建
数组两种定义格式,推荐使用第一种。
Int [] arry=new int[3];
Int arr[]=new int [4];
二、数组的初始化
Int arry[]=new int[]{1,2,3} //静态初始化
Int [] arry={1,2,3,4}
三、话说堆栈
New关键字在内存中创建的数组是堆里创建的。如:Int [] arry=new int[3];arry指向堆内存中的数组。arry是引用在栈内存中。
例如:int []arr=new int[3]; arr指向堆内存中的数组。运行时,在堆内存中开辟空间。
Int []arry=arr; arry指向堆内存中的数组。
arr与arry是引用,指向的是同一数组。数组的赋值等变化引起arr和arry的同时变化。
当 arr=null;时,arr不再指向数组,栈内存释放,堆内存产生垃圾。
Java中有个垃圾回收机制,java会不定时地回收垃圾。
四、数组的应用
(1)、遍历数组
Int [ ] arr=new int[]{1,2,3};
For(int x=0;x<3;x++)
{
System.out.println("arr["+x+"]="+arr[x]+";");
}
数组遍历的改进:运用数组中的一个属性,获取数组长度System.out.println(arrr.length);
属性的使用测试:int []arrr =new int[]{1,2,3,4}; System.out.println(arrr.length);
(2)打印数组
注意:
打印数组,不能使用println(arrr);-----这打印的是数组的地址,哈希值
我们可以定义一个函数:printArry
//定义一个函数,用于打印数组的元素,元素间用逗号
public static void printArry(int []arr)
{
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]);
}
}
设计说明:为什么采用if语句?----因为打印数组可能有多个,可以换行。
(3)获取数组中的最值---10个数,取最大数,最小数
public static void maxMinArry(int [] arr)
{
int max=arr[0];
int min=arr[0];
for(int x=0;x<arr.length;x++)
{
if(arr[x]>max)
{
max=arr[x];
}
if(arr[x]<min)
{
min=arr[x];
}
}
System.out.println(min);
System.out.println(max);
}
(4)额外说明算法---进制转换举例
public static void toBin(int num)
{
StringBuffer strBu=new StringBuffer();//StringBuffer是个容器
while(num>0)
{
strBu.append(num%2); //数据添加到容器
num=num/2;
}
System.out.print(strBu.reverse());//数据反转。
}
我们调用
public static void main(String[] arg)
{
toBin(2);//转换成二进制。
}