javase-数组
来源:互联网 发布:sd照片恢复软件 编辑:程序博客网 时间:2024/05/29 04:43
一.数组的本质
数组的本质是引用类型的数据。
二.数组的初始化
1.初始化方法
(1).int[] arr1;// 也可以写成 arr1[]
arr1 = new int[3];
arr1[0] = 0;
arr1[1] = 1;
arr1[2] = 2;
(2).int[] arr1 = new int [] {0, 1, 2};//最常用
(3).int [] arr1 = {0, 1, 2};
2.创建数组在内存中的情况
如:Int[] b =new int[3];
内存图:
b中保存的不是具体的数据。是在堆区中的数据的起始地址。
类似于b这样的变量,就称为引用类型变量。 数据不会保存在变量中,变量只是保存数据所在的内存地址。
3.数组创建好就不能改变其长度,只能通过new动态扩充数组(但不可能在原来的对象上扩充,集合将改善这一点)。
4.数组没有初始化,则依据数组类型的不同,会预设不同的初始值。
如int型数组的初始值就是0。
5.length属性返回的是数组所能容纳的数,而不是实际存储的数。
三.多维数组
1.初始化
import java.util.Random;/** * date:2017年4月16日09:04:24 * target:多维数组。 * @author ypy */ public class Test{static Random rand = new Random();static int pRand(int mod) {return Math.abs(rand.nextInt())%mod + 1;} public static void main(String[] args) {//基本数据类型初始化多维数组int[][] a1 = {{1, 2, 3},{4, 5, 6}};for (int i=0; i<a1.length; i++) {for (int j=0; j<a1[i].length; j++) {System.out.println("a1[" + i + "][" + j + "]:" + a1[i][j]);}}//基本数据类型用new立即分配三维数组boolean[][][] a2 = new boolean[2][3][4];for (int i=0; i<a2.length; i++) {for (int j=0; j<a2[i].length; j++) {for (int k=0; k<a2[i][j].length; k++){System.out.println("a2[" + i + "][" + j + "][" + k + "]:" + a2[i][j][k]);}}}//基本数据类型多维数组矩阵中每个矢量都可以有任意长度double[][][] a3 = new double[pRand(5)][][];for (int i=0; i<a3.length; i++) {a3[i] = new double[pRand(5)][];for (int j=0; j<a3[i].length; j++) {a3[i][j] = new double[pRand(5)];for (int k=0; k<a3[i][j].length; k++){System.out.println("a3[" + i + "][" + j + "][" + k + "]:" + a3[i][j][k]);}}}//非基本数据类型多维数组的初始化//java内部封装的类可以像基本数据类型一样使用,如Integer可以像int定义数组一样定义//而自己写的类必须newInteger[][] a4 = {{new Integer(1), new Integer(2)},{new Integer(3), new Integer(4)},{new Integer(5), new Integer(6)},};for (int i=0; i<a4.length; i++) {for (int j=0; j<a4[i].length; j++) {System.out.println("a4[" + i + "][" + j + "]:" + a4[i][j]);}}//非基本数据类型多维数组矩阵中每个矢量也都可以有任意长度Integer[][] a5;a5 = new Integer[3][];for (int i=0; i<a5.length; i++) {a5[i] = new Integer[4];for (int j=0; j<a5[i].length; j++) {a5[i][j] = new Integer(i*j);System.out.println("a5[" + i + "][" + j + "]:" + a5[i][j]);}}}}/* ***************jdk1.8运行结果*************** a1[0][0]:1a1[0][1]:2a1[0][2]:3a1[1][0]:4a1[1][1]:5a1[1][2]:6a2[0][0][0]:falsea2[0][0][1]:falsea2[0][0][2]:falsea2[0][0][3]:falsea2[0][1][0]:falsea2[0][1][1]:falsea2[0][1][2]:falsea2[0][1][3]:falsea2[0][2][0]:falsea2[0][2][1]:falsea2[0][2][2]:falsea2[0][2][3]:falsea2[1][0][0]:falsea2[1][0][1]:falsea2[1][0][2]:falsea2[1][0][3]:falsea2[1][1][0]:falsea2[1][1][1]:falsea2[1][1][2]:falsea2[1][1][3]:falsea2[1][2][0]:falsea2[1][2][1]:falsea2[1][2][2]:falsea2[1][2][3]:falsea3[0][0][0]:0.0a3[0][0][1]:0.0a3[0][0][2]:0.0a3[0][0][3]:0.0a3[0][1][0]:0.0a3[0][1][1]:0.0a3[0][1][2]:0.0a3[1][0][0]:0.0a3[1][0][1]:0.0a3[1][0][2]:0.0a3[1][0][3]:0.0a3[1][1][0]:0.0a3[1][1][1]:0.0a3[1][1][2]:0.0a3[1][1][3]:0.0a3[1][2][0]:0.0a3[1][2][1]:0.0a3[1][2][2]:0.0a3[1][3][0]:0.0a3[1][3][1]:0.0a3[1][3][2]:0.0a3[2][0][0]:0.0a3[2][0][1]:0.0a3[2][0][2]:0.0a3[2][0][3]:0.0a3[2][1][0]:0.0a3[2][2][0]:0.0a3[2][2][1]:0.0a3[2][2][2]:0.0a3[2][3][0]:0.0a3[3][0][0]:0.0a3[3][0][1]:0.0a3[3][0][2]:0.0a3[3][0][3]:0.0a4[0][0]:1a4[0][1]:2a4[1][0]:3a4[1][1]:4a4[2][0]:5a4[2][1]:6a5[0][0]:0a5[0][1]:0a5[0][2]:0a5[0][3]:0a5[1][0]:0a5[1][1]:1a5[1][2]:2a5[1][3]:3a5[2][0]:0a5[2][1]:2a5[2][2]:4a5[2][3]:6 */
2.内存图
如:
int[][] a = {
{1,2,3},
{4,5,6},
{7,8,9}
};
四.数组的拷贝
1.System.arraycopy方法。
/* 时间:2016年1月26日20:21:07 目的:数组的拷贝。*/public class Shuzu_2{ public static void main(String[] args) {int[] arr1 = new int[]{1, 2, 3, 4, 5};int[] arr2 = new int[]{-1, -2, -3, -4, -5};int i;System.arraycopy(arr1, 0, arr2, 1, 2);// aar1数组下标从0开始的2个,覆盖掉arr2数组下标从1开始的System.out.printf("arr1 = \n");for (i=0; i<arr1.length; i++)//能直接调用 .length{ System.out.printf("%d ", arr1[i]);}System.out.printf("\n");System.out.printf("arr2 = \n");for (i=0; i<arr2.length; i++){ System.out.printf("%d ", arr2[i]);} }}/****************结果***************arr1 =1 2 3 4 5arr2 =-1 1 2 -4 -5*/
2.Arrays.copyOf方法。
3.Arrays.copyOfRange方法。
五.数组的排序
1.Arrays.sort方法(从小到大排序)。
2.冒泡排序、快速排序等……
六.Arrays类(查api)
1.Arrays.toString方法可将数组以字符串的方式输出。
阅读全文
0 0
- javaSE 数组
- javase-数组
- javase--2数组
- JAVASE----02----数组
- javaSE 5.1 数组反转
- javaSE数组--Array
- javase学习笔记------------数组
- javaSE 数组复习
- JavaSE学习(7) 数组
- JavaSE 学习参考:数组
- JavaSE 04 数组
- JavaSE 数组排序
- javaSE基础-数组排序
- JavaSe之数组
- JavaSE之数组Array
- javaSE-Day1-数组
- JavaSE学习----数组
- JavaSE基础数组排序
- 运输层相关信息(可靠传输的原理、运输连接管理)
- sychronized和lock的区别
- java基础学习总结——static关键字
- 安装配置vsftpd服务器
- Mysql5.7 windows下安装问题
- javase-数组
- Android源码Build之单独编译
- .net面试题
- Tensorflow API Math
- jarvisoj-web-wp
- 深度学习(四)——RNN, LSTM, 神经元激活函数进阶
- C++中,string::nops 的用法以及和string.find()的区别
- hihocoder164周-枚举&粗心-有序01字符串
- 安装ssh--csdn 真坑,我好不容易整理的一大堆问题,不小心关掉浏览器全没了,能不能给个提醒