黑马程序员——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使用)
相关文章推荐
- 黑马程序员——Java基础之函数与数组
- 黑马程序员--结构体知识总结
- 常见前端面试题之HTML/CSS部分
- 反省自己!我将来可是要做一个生活家程序员的男人!
- 黑马程序员--面向对象--1st day
- 黑马程序员_面向对象
- 黑马程序员__java基础__IO流(字节流、字符流)
- 黑马程序员——java基础之语法(二)
- 面试题 IQ
- Java面试题
- 阿里负责人揭秘面试潜规则
- 黑马程序员-------小数运算之BigDecimal
- 黑马程序员——Java基本语法(一):关键字、标识符、常量与变量、运算符
- 黑马程序员----面象对象及封装
- 微软100题(84)百度面试题_随机发生器
- 微软100题(83)百度面试题_memmove实现
- 黑马程序员_单例设计模式
- 如果像招聘程序员那样招聘木匠
- 黑马程序员_反射
- 黑马程序员_异常