黑马程序员----------java基础知识(4)之数组
2014-05-18 16:45
344 查看
----------------------android培训、java培训、期待与您交流!
----------------------
今天主要学习了java中的函数,也就是方法,还有数组,下面针对数组做一下自己的总结。
:数组(重点)
(1)数组的概念和特点
A:数组时存放同一种数据类型的集合.数组是一个容器.
B:特点
**它会把元素自动从0开始编号,方便于操作元素.
(2)数组定义的两种格式
A:第一种
int[] arr = new int[长度]; 经常使用
/*
左边:
int 元素的数据类型
[] 表示这是一个数组
arr 是数组(变量)名
右边:
new 用于创建实体的.
实体:可以用于存放多个数据的东西.
就像class定义一个类似的.
int 元素的数据类型
[] 表示这是一个数组
长度 表示的是数组中的元素个数
*/
int arr[] = new int[长度]; //了解
B:第二种
int[] arr = new int[]{元素列表...};
int[] arr = {元素列表...}; 经常使用
C:那么,我们定义数组的时候使用哪种格式呢?
如果数组的元素能够明确的列出来,用第二种.否则,用第一种.
(3)什么时候使用数组呢?
当你要操作的数据是多个的时候,考虑使用数组.
(4)java中的内存图(看懂)
栈:存储的是具备变量(函数内定义的变量)
特点:离开使用空间,立刻自动释放.
堆:存储的是实体,就是 new出来的东西.
特点:
**堆内存中的实体都有首地址值
**堆内存中的实体的变量都有默认值
byte,short,int,long 0
float,double 0.0
boolean false
char '\u0000' 空字符
**堆内存中的实体不在被引用变量指向时,就变成了垃圾.
它会在jvm空闲的时候,有java的自动垃圾回收机制进行
清除.
方法区:后面讲
本地方法区:与系统相关的资源
寄存器:与CPU相关的资源
(5)数组常见问题
A:角标越界 访问了不存在的角标.
ArrayIndexOutOfBoundsException
B:空指针异常 数组为null,我们还在通过它访问数组中的元素.
NullPointException
(6)数组常见操作 肯定离不开角标
A:遍历
数组的属性:length
用法格式:数组名.length 获取数组的长度
//为了格式好看
B:最值
**最大值
**最小值
C:排序
**选择排序 用0角标的元素和其后元素依次比较,最值出现在左边.
**冒泡排序 原理是 相邻元素两两相比,最值出现在右边.
以前看过老师将的数组排序,其实数组的排序有很多种,其中冒泡排序和选择排序是最基本的最麻烦的排序算法,不过我感觉还行,自己代码没有必要一个不漏的背下来,只要自己知道原理就好了,在面试的时候也可以自己当场去总结其中的规律,直接就可以将代码写出来。
----------------------android培训、java培训、期待与您交流!
----------------------
----------------------
今天主要学习了java中的函数,也就是方法,还有数组,下面针对数组做一下自己的总结。
:数组(重点)
(1)数组的概念和特点
A:数组时存放同一种数据类型的集合.数组是一个容器.
B:特点
**它会把元素自动从0开始编号,方便于操作元素.
(2)数组定义的两种格式
A:第一种
int[] arr = new int[长度]; 经常使用
/*
左边:
int 元素的数据类型
[] 表示这是一个数组
arr 是数组(变量)名
右边:
new 用于创建实体的.
实体:可以用于存放多个数据的东西.
就像class定义一个类似的.
int 元素的数据类型
[] 表示这是一个数组
长度 表示的是数组中的元素个数
*/
int arr[] = new int[长度]; //了解
B:第二种
int[] arr = new int[]{元素列表...};
int[] arr = {元素列表...}; 经常使用
C:那么,我们定义数组的时候使用哪种格式呢?
如果数组的元素能够明确的列出来,用第二种.否则,用第一种.
(3)什么时候使用数组呢?
当你要操作的数据是多个的时候,考虑使用数组.
(4)java中的内存图(看懂)
栈:存储的是具备变量(函数内定义的变量)
特点:离开使用空间,立刻自动释放.
堆:存储的是实体,就是 new出来的东西.
特点:
**堆内存中的实体都有首地址值
**堆内存中的实体的变量都有默认值
byte,short,int,long 0
float,double 0.0
boolean false
char '\u0000' 空字符
**堆内存中的实体不在被引用变量指向时,就变成了垃圾.
它会在jvm空闲的时候,有java的自动垃圾回收机制进行
清除.
方法区:后面讲
本地方法区:与系统相关的资源
寄存器:与CPU相关的资源
(5)数组常见问题
A:角标越界 访问了不存在的角标.
ArrayIndexOutOfBoundsException
B:空指针异常 数组为null,我们还在通过它访问数组中的元素.
NullPointException
(6)数组常见操作 肯定离不开角标
A:遍历
数组的属性:length
用法格式:数组名.length 获取数组的长度
public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } }
//为了格式好看
public static void printArray(int[] 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.print(arr[x]+","); } } System.out.println("]"); }
B:最值
**最大值
public static int getMax(int[] arr) { int max = arr[0]; //0角标的元素作为了参照物 for(int x=1; x<arr.length; x++) { if(arr[x]>max) { max = arr[x]; } } return max; }
**最小值
public static int getMin(int[] arr) { int min = arr[0]; //0角标的元素作为了参照物 for(int x=1; x<arr.length; x++) { if(arr[x]<min) { min = arr[x]; } } return min; }
C:排序
**选择排序 用0角标的元素和其后元素依次比较,最值出现在左边.
public static void selectSort(int[] arr) { for(int x=0; x<arr.length-1; x++) { //y总是比x大1 for(int y=x+1; y<arr.length; y++) { if(arr[y]<arr[x]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } }
**冒泡排序 原理是 相邻元素两两相比,最值出现在右边.
public static void bubbleSort(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; } } } }
以前看过老师将的数组排序,其实数组的排序有很多种,其中冒泡排序和选择排序是最基本的最麻烦的排序算法,不过我感觉还行,自己代码没有必要一个不漏的背下来,只要自己知道原理就好了,在面试的时候也可以自己当场去总结其中的规律,直接就可以将代码写出来。
----------------------android培训、java培训、期待与您交流!
----------------------
相关文章推荐
- 黑马程序员_java基础学习笔记03_函数以及数组知识
- 黑马程序员 Java基础知识总结-数组
- 黑马程序员--Java学习日记之基础知识(循环结构与数组)
- 黑马程序员-Java基础知识预备之Java流程控制与数组
- 黑马程序员--------java基础知识 函数、数组
- 黑马程序员——java基础知识篇——>数组
- 黑马程序员--数组的排序和查找--java学习日记2(基础知识)
- 黑马程序员——Java基础知识——数组
- 黑马程序员_java初级基础知识汇总(常量和变量、语句、函数、数组)
- 黑马程序员----------java基础知识(6)之数组查找和二维数组及其应用
- 黑马程序员_java基础知识学习总结一
- 黑马程序员0829_java基础知识
- 黑马程序员--java基础知识注意点收录
- 黑马程序员_Java基础_数组
- 黑马程序员——java语言基础知识回顾(二)
- 黑马程序员_java基础知识学习总结二
- 黑马程序员——java语言基础——静态static知识小结
- 黑马程序员_java基础知识学习总结三
- 黑马程序员——java语言基础知识回顾(四)
- 黑马程序员-----java基础③(数组及循环练习)