《疯狂Java讲义(第3版)》.(李刚)——数组
来源:互联网 发布:东方财富mac 编辑:程序博客网 时间:2024/05/21 22:10
1、数组
1)简介:数组也是一种数据类型,它本身是一种引用类型。一旦数组初始化完成数组所占用的空间将被固定下来,因此数组的长度不可变。即使数组清空,它所占的空间依然保留,属于该数组。数组既可以存储基本数据类型也可以存储引用类型,只要所有数组元素具有相同类型即可。
2)定义数组:
[1]方式1(推荐,更能表明数组类型)
类型 [] 变量名 = new 类型 [数组中元素的个数];
比如:
int[] a = new int[10];
数组名,也即引用a,指向数组元素的首地址。
[2]方式2(同C语言)
类型 变量名[] = new 类型 [数组中元素的个数];
如:
int a[] = new int[10];
[3]方式3定义时直接初始化
类型 [] 变量名 = new 类型 []{逗号分隔的初始化值};
其中红色部分可省略,所以又有两种:
int[] a = {1,2,3,4};
int[] a = new int[]{1,2,3,4};
其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。
3)数组运用基础
[1]数组长度
Java中的每个数组都有一个名为length的属性,表示数组的长度。
length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。
[2]数组比较
自定义数据equals
package com.alex.demo04;import java.util.Arrays;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a> * <br> * <br> * <br> * <br> * * @author Alex * @version 1.0 */public class ArrayEqualsTest{ /** * 比较俩个数据 * @param a * @param b * @return */ public static boolean isEquals(int[] a, int[] b) { if( a == null || b == null ) { return false; } if(a.length != b.length) { return false; } for(int i = 0; i < a.length; ++i ) { if(a[i] != b[i]) { return false; } } return true; } /** * 主方法,程序的入口 * * @param args */ public static void main(String[] args) { //静态初始化 int[] a = {1, 2, 3}; int[] b = {1, 2, 3}; System.out.println(isEquals(a,b)); System.out.println(Arrays.equals(a,b)); }}
[3]非基本数据类型数组
package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a> * <br> * <br> * <br> * <br> * * @author Alex * @version 1.0 */public class ArrayTest2{ /** * 主方法,程序的入口 * * @param args */ public static void main(String[] args) { //动态初始化 Person[] p = new Person[3]; //未生成对象时,引用类型均为空 System.out.println(p[0]); //生成对象之后,引用指向对象 p[0] = new Person(10); p[1] = new Person(20); p[2] = new Person(30); for(int i = 0; i < p.length; i++) { System.out.println(p[i].age); } }}class Person{ int age; public Person(int age) { this.age = age; }}
输出结果:
3)二维数组
[1]基本的定义方式有两种形式,如:
类型 [][] i = new 类型[2][3];(推荐)
类型 i[][] = new 类型[2][3];
package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a> * <br> * * @author Alex * @version 1.0 */public class ArrayTest3{ /** * 主方法,程序的入口 * * @param args */ public static void main(String[] args) { int[][] i = new int[2][3]; System.out.println("Is i an Object? " + (i instanceof Object)); System.out.println("Is i[0] an int[]? " + (i[0] instanceof int[])); }}
[2]变长的二维数组
二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是注意,第一维大小不能空缺(不能只指定列数不指定行数)。
package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a> * * @author Alex * @version 1.0 */public class ArrayTest4{ /** * 主方法,程序的入口 * * @param args */ public static void main(String[] args) { //二维变长数组 int[][] a = new int[3][]; a[0] = new int[2]; a[1] = new int[3]; a[2] = new int[1]; //Error: 不能空缺第一维大小 //int[][] b = new int[][3]; }}
二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始化值的个数不同,可以生成不同长度的数组元素。
package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a> * * @author Alex * @version 1.0 */public class ArrayTest5{ /** * 主方法,程序的入口 * * @param args */ public static void main(String[] args) { int[][] c = new int[][]{{1, 2, 3},{4},{5, 6, 7, 8}}; for(int i = 0; i < c.length; ++i) { for(int j = 0; j < c[i].length; ++j) { System.out.print(c[i][j]+" "); } System.out.println(); } }}
数字中问演示和五子棋大家自行联系完成吧!
- 《疯狂Java讲义(第3版)》.(李刚)——数组
- 《疯狂Java讲义(第3版)》.(李刚)——Java运行机制及JVM
- 《疯狂Java讲义(第3版)》.(李刚)——前言
- 《疯狂Java讲义(第3版)》.(李刚)——面向对象及UML
- 《疯狂Java讲义(第3版)》.(李刚)——注释
- 《疯狂Java讲义(第3版)》.(李刚)——标识符和关键字
- 《疯狂Java讲义(第3版)》.(李刚)——基本数据类型
- 《疯狂Java讲义(第3版)》.(李刚)——运算符
- 《疯狂Java讲义(第3版)》.(李刚)——流程控制
- 《疯狂Java讲义(第3版)》.(李刚)——8大排序
- 《疯狂Java讲义(第3版)》.(李刚)——面向对象(上)
- 《疯狂Java讲义(第3版)》.(李刚)——类和对象
- 《疯狂Java讲义(第3版)》.(李刚)——Java的开发准备及环境配置
- 李刚java疯狂讲义(笔记)
- (转载:李刚《疯狂Java讲义》)
- 疯狂Java讲义(第3版)pdf
- 《疯狂JAVA讲义》——二维数组
- 《Java疯狂讲义》—李刚——Java语言的发展历史
- debian8.4(jessie)配置nginx1.10.0+LDAP来授权
- pycaffe
- AJAX POST&跨域 解决方案 - CORS
- C#设计模式--简单工厂
- header头解决跨域请求
- 《疯狂Java讲义(第3版)》.(李刚)——数组
- Xcode真机测试图片资源不加载
- jQuery中 trigger() & bind() 使用心得
- Cocosd2d-js 实现模态对话框
- Android应用经典主界面框架之二:仿网易新闻客户端、CSDN 客户端 (Fragment ViewPager)
- angularjs开发中的坑
- 双击返回键退出应用
- 我要你快乐。。
- Android 基础动画