【Java学习4.6】深入数组(未完成)
来源:互联网 发布:webdriver调用js 编辑:程序博客网 时间:2024/06/06 03:16
这一节讲的是数组在内存中的存储机制。首先需要区分一组概念,什么是数组,什么是数组引用变量。
答:对于这个问题,可以这么解释。有这么一个东西,只要让他动起来,只要让他指向一个有效内存,他就可以访问数组元素。
其次,两者的存储方式似乎也不太一样。数据对象被存储在堆(heap)内存中,然而引用该数组对象的引用变量是存储在占栈内存中的。特别要说明的是在局部变量中,都是放在栈内存中的,用完即被销毁。堆内存会被反复利用最后清除。只有当一个引用变量没有被任何东西引用的时候,系统的垃圾回收器才会回收他。
package homework;public class mydemo {public static void main(String[] args) {int[] a = {5,7,20};int[] b = new int[4];System.out.println("b数组的长度是" + b.length);for(int i = 0 ,len = a.length ; i < len ; i++){System.out.println(a[i]);}for(int i = 0 ,len = b.length ; i < len ; i++){System.out.println(b[i]);} //将a的数值给了b//b = a ;//b引用指向a引用指向的数组//System.out.println("b数组的长度是" + b.length);}}
输出的效果:b数组的长度是457200000b数组的长度是3
这一段其实就讲了两个东西。数组引用变量和数组本身。不知道这个例子解释的正确不正确:a[1] = 10。a[1]被称为数组引用变量,10代表数组本身。
二、基本类型数组的初始化
下面这个东西定义了int[]初始化,采用动态初始化的方式初始化了该数组。
package homework;public class mydemo {public static void main(String[] args) { //定义一个int[]类型的数组变量//int[] iArr;iArr = new int[5];//在这里处理的时候所有的数据全是0.//for(int i = 0 ; i < iArr.length ; i++){iArr[i] = i + 10 ;}}}
三、引用类型数组的初始化
举个例子,这里使用了一个Person类,这是一个person类数组。
package homework;class Person{public int age;public double height ;public void info(){System.out.println("我的年龄是:" + age + ",我的身高是:" + height);}}public class mydemo {public static void main(String[] args) { Person[] students; students = new Person[2]; Person zhang = new Person(); zhang.age = 15 ; zhang.height = 158 ; Person lee = new Person(); lee.age = 16 ; lee.height = 161 ; students[0] = zhang ; students[1] = lee ; lee.info(); students[1].info();}}
四、没有多维数组
它的意思就是,本质上,二维数组就是一维数组的变形。
package homework;public class mydemo {public static void main(String[] args) { int[][] a ; a = new int[4][]; for(int i = 0 , len = a.length ; i < len ; i++) { System.out.println(a[i]); } a[0] = new int[2]; a[0][1] = 6 ; for(int i = 0 , len = a[0].length;i<len;i++) { System.out.println(a[0][i]); }}}
五、Java8增强工具类:Arrays
这是一个数据包。你可以通过调用这个数据包来去使用这里面的工具函数,下面依次举例说明。(大多是static的函数)
1.int binarySearch(type[ ] a,type key):利用二分法去寻找key元素在a中的索引。如果不包含key元素,则返回-1。(当然这也说明其中的必须得是升序排列。)
2.int binarySearch(type[ ] a,int fromIndex,int toIntex,type key):类似于上面的函数,但是这个是只在fromIndex到toIndex之间的数据中查找。
3.type[] copyOf(type[] orginal,int length):这个程序是复制一个original数组,新的长度为length。如果说original的长度比legnth大的话,把original数据length长度的保存在新的数据之中;如果original数据比length的数据小的话,把多余的赋值为0(数据类型),false(布尔类型),或者null(引用类型)。
- 【Java学习4.6】深入数组(未完成)
- Java学习:容器(未完成)
- Java学习笔记(未完成.....)
- VC学习(未完成)
- java Iterator(未完成)
- java学习之深入理解数组(一)
- Java学习记录(5)——深入数组
- 深入redis内部--字典实现(未完成)
- 国嵌深入班-串口(未完成)
- emacs学习笔记(未完成)
- redis学习总结(未完成)
- (未完成)Maven学习笔记
- ROS学习笔记(未完成)
- kmp算法学习(未完成)
- Java(编程语言)--未完成
- Java 垃圾回收 (未完成)
- Java 难点记录(未完成)
- Java制作画图板(未完成)
- mybatis逆向工程
- (!(m%a))的含义
- PAT 1099. Build A Binary Search Tree (30)建立二叉排序树
- 五、使用SSH密钥对远程连接ECS实例
- JavaScript备忘
- 【Java学习4.6】深入数组(未完成)
- Spring Mergeable
- 碰撞检查
- Mysql 介绍(下)
- Gerrit代码Review入门实战
- Laravel 实现简单Rbac 权限管理
- 简单的mycat分库操作
- bzoj1305 [CQOI2009]dance跳舞(二分答案+最大流判是否满流)
- windows客户端plsql连接不上,错误码:ORA-12537