Java数组(1):数组与多维数组
我们对数组的基本看法是,你可以创建它们,通过使用整型索引值访问它们的元素,并且他们的尺寸不能改变。
但是有时候我们需要评估,到底是使用数组还是更加灵活的工具。数组是一个简单的线性序列,这使得元素访问非常快速。但是为这种速度所付出的代价是数组大小被固定,并且在其生命周期中不可改变。
无论使用哪种类型的数组,数组标识符只是一个引用。基本类型数组直接保存基本类型的值,对象数组保存一个指向其他对象的引用。
class Apple {
private static int count = 1; public Apple() {
System.out.println("Apple" + count++);
}
} public class ArrayOptions {
public static void main(String[] args) {
Apple[] a; // 创建一个Apple类型的数组引用
Apple[] b = new Apple[5]; // 创建一个Apple类型的数组对象,但是都指向null
System.out.println("b: " + Arrays.toString(b)); // b: [null, null, null, null, null]
Apple[] c = new Apple[4];
for (int i = 0; i < c.length; i++)
c[i] = new Apple(); // Apple1 Apple2 Apple3 Apple4
// Aggregate initialization:
Apple[] d = {new Apple(), new Apple(), new Apple()}; // Apple5 Apple6 Apple7
// Dynamic aggregate initialization:
a = new Apple[]{new Apple(), new Apple()}; // Apple8 Apple9
System.out.println("a.length = " + a.length); // a.length = 2
System.out.println("b.length = " + b.length); // b.length = 5
System.out.println("c.length = " + c.length); // c.length = 4
System.out.println("d.length = " + d.length); // d.length = 3
a = d;
System.out.println("a.length = " + a.length); // a.length = 3 int[] e; // 创建一个基本类型的数组引用
int[] f = new int[5]; // 创建一个Apple基本数组对象,初始化值都为0
System.out.println("f: " + Arrays.toString(f)); // f: [0, 0, 0, 0, 0]
int[] g = new int[4];
for (int i = 0; i < g.length; i++)
g[i] = i * i;
int[] h = {11, 47, 93};
System.out.println("f.length = " + f.length); // f.length = 5
System.out.println("g.length = " + g.length); // g.length = 4
System.out.println("h.length = " + h.length); // h.length = 3
e = h;
System.out.println("e.length = " + e.length); // e.length = 3
e = new int[]{1, 2};
System.out.println("e.length = " + e.length); // e.length = 2
}
}
多维数组
import java.util.Arrays; class Apple {
private static int count = 1; public String toString() {
return "Apple" + count++;
}
} public class MutiArray {
public static void main(String[] args) {
// (1) 使用Arrays.deepToString()可以打印多维数组
int[][] a = {{1, 2, 3}, {4, 5, 6}};
long[][][] b = new long[2][2][3];
System.out.println(Arrays.deepToString(a)); // [[1, 2, 3], [4, 5, 6]]
System.out.println(Arrays.deepToString(b)); // [[[0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0]]] // (2) 多维数组值的设定可以用下面方法,并且数组中构成矩阵的每个向量都可具有任意长度(粗糙数组)
int[][] c = new int[3][];
for (int i = 0; i < c.length; i++) {
c[i] = new int[i + 1];
for (int j = 0; j < c[i].length; j++) {
c[i][j] = j + 1;
}
}
System.out.println(Arrays.deepToString(c)); // [[1], [1, 2], [1, 2, 3]] // (3) 用类似方式还可以处理非基本类型的(包装类和对象类)数组
Apple[][] d = {{new Apple(), new Apple()}, {new Apple(), new Apple(), new Apple()}};
Integer[][] e = {{1, 2}, {3, 4, 5}, {6, 7}};
System.out.println(Arrays.deepToString(d)); // [[Apple1, Apple2], [Apple3, Apple4, Apple5]]
System.out.println(Arrays.deepToString(e)); // [[1, 2], [3, 4, 5], [6, 7]]
}
}
Java数组(1):数组与多维数组的更多相关文章
- 06-01 Java 二维数组格式、二维数组内存图解、二维数组操作
二维数组格式1 /* 二维数组:就是元素为一维数组的一个数组. 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的 ...
- java基础-引用数据类型之二维数组(Array)
java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...
- Java 数组(三)二维数组
如果一维数组的各个元素仍然是一个数组,那么它就是一个二维数组.二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表所在的列. 一.二维数组的创建 1.先声明, ...
- Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数组
经常我们会在资源文件(res/strings.xml)定义字符串,一维数组,那定义二维数组?直接定义二维数组没找到,可以间接定义. 其实很简单,看过用过一次就可以记住了,一维数组估计大家经常用到,但是 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- php 将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序
最近再写项目的时候,碰到一个问题:如何将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序:实在是想不到哪个php库中有哪个函数能实现,只能自己写一个了,将代码写出来后,发现自己的代码繁琐,并 ...
- C 二维数组,以及自定义二维数组
C 二维数组,以及自定义二维数组 我们通常情况下是这样定义一个二维数组的: int a[10][15]; 我们分别查看一下a,a[0],*a 都是一样的值吧 我们可以这么理解: a是一个数组的数组 a ...
- 《java入门第一季》二维数组三个案例详解
案例一:遍历二维数组 /* 需求:二维数组遍历 外循环控制的是二维数组的长度,其实就是一维数组的个数行数. 内循环控制的是一维数组的长度,每一行,一维数组元素分别的个数. */ class Array ...
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- Java使用Array类创建多维数组
1.创建一维数组 import java.lang.reflect.Array; public class ArrayTest { public static void main(String[] a ...
随机推荐
- Shell脚本快速查看网段内ip占用情况和可用ip
思想就是整个网段ping一遍,对于ping不通的,解析其失败的字符来判定 #!/bin/bash head_add=${} address=${head_add%.*} echo address=$a ...
- C# 时间戳转换为时间格式
// 时间戳转为格式 public DateTime StampToDateTime(string timeStamp) { DateTime dateTimeStart = TimeZone.Cur ...
- request.getParameterNames获得请求参数的名字(Get或者Post请求的参数都可以)
1 protected Map<String, String> initRequestParams(HttpServletRequest request) { 2 Map<Strin ...
- 【转】深入理解Spring的两大特征(IOC和AOP)
原文链接:https://blog.csdn.net/gloomy_114/article/details/68946881 众所周知,Spring的核心特性就是IOC和AOP,IOC(Inversi ...
- Jquery 前端解码base64出现中文乱码的问题解决方案
<script src="../static/js/jquery.base64.js"></script> <script src="../ ...
- mysql批量新增和批量删除
首先推荐使用PreparedStatement的批量处理操作. Connection conn = null; PreparedStatement stmt = null; try{ Class.fo ...
- git下载代码的两种方式以及eclipse集成git
1.第一种使用tortoiseGit插件: 链接:https://pan.baidu.com/s/1ANDydwfaaVcUaqZDJWc_BQ 提取码:qgxt a.首先在setting中的Git中 ...
- 分布式协调框架_Zookeeper
Zookeeper 如今在分布式架构中应用十分广泛,它作为分布式协调框架在分布式架构中有着举足轻重的地位,本文是主要从以上几个方面对 Zookeeper 常用的知识进行总结. 一 从集中式到分布式架构 ...
- Spring MVC ajax提交方式
使用jquery的ajax的方式来提交 第一种,以json对象的形式提交 var jsonData = { "name" : "zhangsan", " ...
- 数据结构实验之链表三:链表的逆置(SDUT 2118)
题目链接 #include <bits/stdc++.h> using namespace std; struct node { int data; struct node *next; ...