黑马程序员技术交流社区

标题: 黑马程序员——“数组”笔记(1) [打印本页]

作者: luorenyu    时间: 2015-8-2 21:31
标题: 黑马程序员——“数组”笔记(1)
A、基本概念
定义:同一个类型数据的集合,其实数组就是一个容器。
数组的好处:可以自动给数组中的元素0开始编号,方便操作这些元素。
格式1
元素类型[ ] 数组名= new 元素类型[ 元素个数或数组长度]
示例:int [ ]arr = new int[3 ]也可以写成:int arr [] = new int[3 ],但一般都按规范来写。
定义一个可以存储3个整数的容器。
int [ ]x = new int[ 3 ];
格式2
元素类型[ ] 数组名=new 元素类型[ ] { 元素,元素,……};
示例: int [ ] arr = new int[ ] {3,5,1,7 };
也可简化为:int [ ]arr = { 3,5,1,7 };
B、内存结构
前言:java程序在运行时,需要在内存中分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据的方式和内存管理方式。
   栈内存:用于存储局部变量,当数据使用完毕后,所占的空间会被自动释放。
   堆内存:
   *数组和对象,通过new建立的实例都存放在堆内存中。
   *每一个实体都有内存地址值
   *实体中的变量都有默认的初始化值(例int0booleanfalsedouble0.0
   *实体不在被使用,会在不确定的使劲按内被垃圾回收器回收
另:除了以上两个内存区外,还有方法区、本地方法区、寄存器
实例:
classArrayDemo
{
public static void main(String[] args)
{
    int[] arr = new int[3];
   arr=null;
    System.out.println(arr[3]);
}
}
在没有arr=null;运行时给出错误提示:
Array indexout of bounds exception:3:操作数组时,访问到了数组中不存在的角标。
在有arr=null;运行时给出错误提示:
Null pointerexception:空指针异常,当引用没有任何指向值为null的情况,该引用还在用语操作实体。
C 1、数组的常见操作——遍历
获取数组中的元素,通常会用到遍历
classArrayDemo2
{
public static void main(String[] args)
for(int x=0; x<arr.length; x++)
{
    int[] arr = new int[]{ 3,6,5,1,8,9,67};
    System.out.println(“arr[“+x+”]=”+arr[x]+”;”);
}
}
总结:数组中有一个属性可以直接获取到数组元素的个数:length
     使用方式:数组名称.length”
上面的程序在或许打印元素的取值范围时就有用到。
练习:用于打印数组中的元素int[]arr={ 36518967};,元素间用逗号隔开
classArrayDemo2
{
public static void main(String[] args)
{
    int[]arr={ 3,6,5,1,8,9,67}
printArray(arr);
}
public static void printArray([ ]arr)
{
    System.out.print(“[”)
for(int x=0; x<arr.length; x++)
{
   if(x!=arr.length-1)
System.out.print(arr[x] + ”,”);
else
System.out.println(arr[x] + ”]”);
      }
}
}
注:再打印数组时,如果直接用“System.out.print(arr)”来进行打印,那么得到的会是该数组空间的16进制的内存地址值。

练习题:
给定一个数组{5164289}
1、 获取该数组中的最大值和最小值。
思路:
a、获取最值需要进行比较,每一次比较都会有一个较大的值,因为该值不确定,通过一个变量进行临时存储。
b、让数组中的每一个元素都和这个变量中的值进行比较,如果大于了变量中的值,就用该变量记录较大值。
c、当所有的元素都比较完成,那么该变量中储存的值就是数组中的最大值了
步骤:
a、  定义变量,初始化数组中的任意一个元素即可,
b、  通过循环语句对数组进行遍历
c、  在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量:
需要定义一个功能来完成,以便提高复用性。
a、  明确结果,数组中的最大元素 int类型
b、  未知内容:一个数组,int[ ]
publicstatic int getMax(int[ ] arr)
{
   int max=arr[ 0 ];
    for(intx=1;x<arr.length;x++)
   {
      if(arr[x]>max)
         max = arr[ x ];
}
returnmax;
}
publicstatic void main(String[ ] args)
{
   int[ ] arr={5,1,6,4,2,8,9}};
   int max = getMax(arr);
   System.out.println(“max=”+max);
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2