黑马程序员—Java基础—数组
2015-11-29 11:04
483 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
数组
数组(1)数组:存储同一种数据类型的多个元素的容器。
(2)特点:每一个元素都有编号,从0开始,最大编号是长度-1。
编号的专业叫法:索引
(3)定义格式
A:数据类型[]数组名;
B:数据类型数组名[];
(4)数组的初始化
A:动态初始化
只给长度,系统给出默认值
举例:int[]arr = new int[3];
B:静态初始化
给出值,系统决定长度
举例:int[]arr = new int[]{1,2,3};
简化版:int[]arr = {1,2,3};
(5)Java的内存分配
A:栈存储局部变量
B:堆存储所有new出来的
C:方法区(面向对象部分详细讲解)
D:本地方法区(系统相关)
E:寄存器(CPU使用)
注意:
a:局部变量在方法定义中或者方法声明上定义的变量。
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失。
堆:每一个new出来的东西都有地址
每一个变量都有默认值
byte,short,int,long 0
float,double0.0
char '\u0000'
boolean false
引用类型 null
数据使用完毕后,在垃圾回收器空闲的时候回收。
(6)数组内存图
A:一个数组
B:二个数组
C:三个数组(两个栈变量指向同一个堆内存)
(7)数组的常见操作
遍历 18行 Java
Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //方式1: public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } } //方式2: public static void printArray(int[] arr) { System.out.print("["); for(int x=0; x<arr.length; x++) { if(x == arr.length-1) { System.out.println(arr[x]+"]"); }else { System.out.println(arr[x]+", "); } } } |
最值 24行 Text
Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 最大值: public static int getMax(int[] arr) { int max = arr[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]; for(int x=1; x<arr.length; x++) { if(arr[x] < min) { min = arr[x]; } } return min; |
逆序 15行 Java
Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //方式1: public static void reverse(int[] arr) { for(int x=0; x<arr.length/2; x++) { int temp = arr[x]; arr[x] = arr[arr.length-1-x]; arr[arr.length-1-x] = temp; } } //方式2: public static void reverse(int[] arr) { for(int start=0,end=arr.length-1; start<=end; start++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; |
基本查找 25行 Java
Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | D:基本查找 方式1: public static int getIndex(int[] arr,int value) { for(int x=0; x<arr.length; x++) { if(arr[x] == value) { return x; } } return -1; } 方式2: public static int getIndex(int[] arr,int value) { int index = -1; for(int x=0; x<arr.length; x++) { if(arr[x] == value) { index = x; break; } } return index; } |
(1)元素是一维数组的数组。
(2)格式:
A:数据类型[][] 数组名 = new 数据类型[m]
;
B:数据类型[][] 数组名 = new 数据类型[m][];
C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
D:数据类型[][] 数组名 = {{...},{...},{...}};
(3)案例:
A:二维数组的遍历
B:二维数组的求和
C:杨辉三角形
打印杨辉三角形 38行 Java
Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /* * 题目:打印出杨辉三角形(要求打印出10行如下图) * 1 * 1 1 * 1 2 1 * 1 3 3 1 * 思路:定义一个二维数组int[][] arr=new int[][]; * arr[0]={1}; * arr[1]={1,1}; * arr[2]={1,arr[1][0]+arr[1][1],1}; * arr[3]={1,arr[2][0]+arr[1],arr[2][1]+arr[2][1],1} */public class Test33 { public static void main(String[] args) { for(int i=1;i<=10;i++){ for(int x=0;x<=array(i).length-1;x++){ System.out.print((array(i))[x]+"\t"); } System.out.println(""); } } public static int[] array(int n){ int[] arr=new int[n]; if(n==1){ arr[0]=1; }else if(n==2){ arr[0]=1; arr[1]=1; }else { arr[0]=1; for(int i=1;i<n-1;i++){ arr[i]=(array(n-1))[i]+(array(n-1))[i-1]; } arr[n-1]=1; } return arr; }} |
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
相关文章推荐
- 黑马程序员—java基础—常用API
- 栈和队列的区别是啥? 吃多了拉就是队列;吃多了吐就是栈(程序员段子)
- 远古程序员
- 黑马程序员—Java基础—面向对象
- 黑马程序员—Java基础知识汇总
- 黑马程序员——javaSE_IO流
- 黑马程序员——javaSE_集合框架-Map
- 黑马程序员_java用java进行复制文件(考虑使用多线程),能系统自带快吗??
- 从支付宝面试题谈:怎样有效减少用户咨询的客服成本
- 成为一名更好的程序员:如何阅读源代码
- 程序员能力矩阵翻译
- 黑马程序员——java基础语法
- 英语单词--程序员专属
- iOS进阶面试题
- 转 面试(马士兵聊)
- [转载] 面试的问题集
- 《程序员面试宝典》—上海某大学校招试题(第三章)
- IT职场人,切不要一辈子靠技术生存(转载)
- 读《VBScript程序员参考手册》,做的笔记
- 黑马程序员--匿名内部类问题