您的位置:首页 > 职场人生

黑马程序员——Java基础---数组

2015-06-15 20:43 519 查看

------<a href="http://www.itheima.com"
target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1.数组的定义

1>概念:同一种类型数据的集合,其实数组就是一个容器。

2>格式:

a>元素类型[]数组名 = new
元素类型[元素个数或数组长度];

例:int[] arr = new int[5];

b>元素类型[]数组名 = new
元素类型[]{元素,元素....};

例:int [] arr = new int[]{1,2,3};

int [] arr = {1,3,5};

注意:int[] x = new int[3];

 int [] y =x;实际上是将x对应于堆内存数组的地址值赋给y,也就是此时   
xy同时指向堆内存中同一个数组。改变x中的元素,y中对应的元素也将改     变。

操作数组时常见问题:

 a>.数组角标越界异常(ArrayIndexOutOfBoundsException):操作数组时,访问   到了数组中不存在的角标。

 b>空指针异常(NullPointerException):当引用没有任何指向,值为null的情况,  该引用还在用于操作实体

2.数组常见操作

1>遍历

2>获取最值

3>排序:

a>顺序排序

 

b>冒泡排序

 public static voidbubbleSort(int[] arr) 

 { 

      for(int x=0; x<arr.length-1; x++) 

      { 

             for(int y=0;y<arr.length-1-x; y++) 

             { 

                    if(arr[y]>arr[y+1]) 

                    { 

                                      int temp = arr[y]; 

                                         arr[y]= arr[y+1]; 

                           arr[y+1]=temp; 

                    } 

             }     

      } 

 } 

 

4>查找

折半查找:提高效率,但是必须保证数组是有序的。

public static int halfSearch(int [] arr, int key)

{

int min,max,mid;

min = 0;

max = arr.length-1;

mid = (min + max) / 2;

while(arr[mid] != key)

{

if(key > arr[mid])

min = mid + 1;

else if(key < arr[mid])

max = mid -1;

if(min > max)

return -1;

mid = (min + max) / 2;

}

return mid;

}

3.二维数组(数组中的数组)

1>格式:

a> int [] [] arr = new int[3][2];

b> int [] [] arr = new int[3][];

c> int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

   arr.length
为一维数组的个数即3;arr[0].length为第一个一维数组中元素的个     
数即3;

关于数组的定义的问题

一维数组的定义:int[] x;int x[]

二维数组的定义:int[] [] y; int y[] []; int[] y[]

[]即可以放在变量的左边也可以放在变量的右边。

 

 

 

内存结构

Java运行时,为了提高运算效率,在内存中分了五片区域,每一片区域都有特定的处理数据方式和内存管理方式。

1>栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。

2>堆内存:数组和对象,通过new建立的实例都存放在堆内存中;每个实体都有内存地址值;实体中的变量都有默认初始化;实体不在被使用,会在不确定的时间内被垃圾回收器回收。

3>方法区

4>本地方法区

5>寄存器

 

05._Java语言基础(数组概述和定义格式说明)

 A:为什么要有数组

  现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,

  用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。

  为了解决这种问题,Java就提供了数组供我们使用

  结论:

   数组是存储多个变量(元素)的东西(容器)

   这多个变量的数据类型要一致 

 B:数组概念

  数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。

  数组既可以存储基本数据类型,也可以存储引用数据类型(后面讲解)。

 C:数组定义格式

  格式1: 数据类型[] 数组名;

  格式2: 数据类型   数组名[];

 举例:

  int[] a;  定义了一个int类型的数组a;

  int a[]; 定义了一个int类型的a数组;

  推荐使用第一种定义方式。

 

 

5._Java语言基础(Java中的内存分配以及栈和堆的区别)

 A:栈: 存放的是局部变量

  局部变量:在方法定义中或者方法声明上的变量都是局部变量。

 B:堆: 存放的是所有new出来的东西

  特点:

   a: 每一个new出来的东西都会为其分配一个地制值。

   b: 每一个变量都有一个默认的值

    byte,short,int,long  -- 0

    float,double      -- 0.0

    char        -- '\u0000'

    boolean        -- false

    引用数据类型     -- null  

   c: 使用完毕就变成了垃圾,等待垃圾回收器对其回收

 C:方法区:(面向对象部分讲解)

 D:本地方法区:(和系统相关)

 E:寄存器:(cpu使用)

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: