java 二维数组和对象数组
1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组

2.二维数组的初始化
1) int intA[][]={{1,2},{2,3},{3,4,5}};
2) int [][] intB=new int[3][5];
3) int []intC []=new int[3][];
intC[0]=new int[2];
intC[1]=new int[3];
intC[2]=new int[5];
public class TestArray2 {
public static void main(String[] args) {
//二维数组不是规则的矩阵
int [] intA[] ={{1,2},{2,3,4},{3,4,5,6}};
System.out.println(intA);//[[I@5e265ba4 两个[[表示是二维的 I表示数组是int型 @5e265ba4是内存地址
//声明一一个二维数组,用于存储3个一维数组,每一个一维数据存多少个数组,不知道 ,null
int [][]intB=new int[3][];
intB[0]=new int[3]; //
intB[1]=new int[]{1,2,3,4}; //
intB[2]=new int[2]; //
System.out.println(intB[1]);//[I@156643d4
System.out.println(intB[1][1]);//2
//声明一个二维数组,同时创建出一维数组,每个一维数组的长度均相同
//存储三个一维数组,每个一维数组的长度为4
int []intC[]=new int[3][4];
System.out.println(intC);
}
}
3.二维数组的遍历
1) 普通 for 循环
2) 加强 for 循环
3) 普通 for 循环+加强 for 循环
public class TestArray3 {
public static void main(String[] args) {
//二维数组
int [] intA[] ={{1,2},{2,3,4},{3,4,5,6}};
//(1)普通for循环
for(int i=0;i<intA.length;i++){ //0,1,2
for(int j=0;j<intA[i].length;j++){ //每一个一维数组的长度
System.out.print(intA[i][j]+"\t");
}
System.out.println();
}
//(2)加强for循环
System.out.println("\n=========================");
for(int[] arr:intA){ //int[]二维数组中元素的类型, arr迭代变量, intA二维组的名称
for(int i:arr){ //int,一维数组中元素的类型,i,迭代变量,arr,一维数组的名称
System.out.print(i+"\t");
}
System.out.println();
}
//(3)普通与加强for循环的混搭
System.out.println("\n-------------------------");
for(int [] arr:intA){//加强for
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
System.out.println();
}
System.out.println("\n--------------------------");
for(int i=0;i<intA.length;i++){
for(int j:intA[i]){//加强for
System.out.print(j+"\t");
}
System.out.println();
}
}
}
4.对象数组存储表格数据
张三 19 男
李四 20 女
王五 28 男
数组存基本数据类型,也可以存引用数据类型
对象数组:使用数组存储对象(自定义对象)
public class Person {
private String name;//姓名
private int age;//年龄
private String gender;//性别
//重写toString以打印想要的输出 否则只会打印对象的内存地址
@Override
public String toString() {
// TODO Auto-generated method stub
return name+"\t"+age+"\t"+gender;//
}
public Person(String name, int age, String gender) {
super();
this.name = name;
this.age = age;
this.gender = gender;
}
public Person() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public class TestArray {
public static void main(String[] args) {
//创建一个Person类型的数组,用于存储3个Person类型的对象
Person [] pers=new Person[3];
//创建Person类型的对象
Person p1=new Person("张三", 19, "男");
//将p1对象存储到Person类型的数组中
pers[0]=p1;
pers[1]=new Person("李四", 20, "女");
pers[2]=new Person("王五",28,"男");
for(int i=0;i<pers.length;i++){
System.out.println(pers[i]);
}
//对象数组中存储的是对象的引用(内存地址)
}
}

5.数组拷贝
地址的拷贝
int[]array={11,22,33,44};
int[] arrayB=new int[5];
arrayB=array //两个数组指向同一内存
值的拷贝
int[]array={11,22,33,44};
int[] arrayB=new int[5];
arrayB[0]=array[0];
System 类中的 arraycopy(…)方法:快速,数组大时用次方法。
public class TestArrayCopy3 {
public static void main(String[] args) {
int [] arrA={11,22,33,44};//源数组
int [] arrB=new int[5];//目标数组
System.out.println("数组拷贝之前");
for(int num:arrB){
System.out.print(num+"\t");
}
//0 0 0 0 0
//拷贝
System.arraycopy(arrA, 0, arrB, 1, 2);
System.out.println("\n数组拷贝之后");
for(int num:arrB){
System.out.print(num+"\t");
}
//0 11 22 0 0
}
}
java 二维数组和对象数组的更多相关文章
- JAVA二维数组的复制
JAVA二维数组的复制 笔者今天做一道ccf题目时,遇到要将二维数组拷贝复制时,没有用常规的那种一个一个数的复制,用的是System.arraycopy()来进行复制,下面介绍这个函数的一些注意点: ...
- Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)
Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)
- 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...
- Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合
Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合 摘要:本文主要记录了如何将将前端的对象数组通过Json字符串传到后端,并在后端将Json字符串转换为对象集合. 前端代码 前 ...
- 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- [转]java二维码生成与解析代码实现
转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1. 高密度编码,信息容量大 可容纳多达1850个大 ...
- java二维码生成与解析代码实现
TwoDimensionCode类:二维码操作核心类 package qrcode; import java.awt.Color; import java.awt.Graphics2D; import ...
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...
- java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例
java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍 我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...
随机推荐
- jQuer插件满屏气泡飘落动画效果
飘落动画效果插件引用: <script src="https://cdn.bootcss.com/JQuery-Snowfall/1.7.4/snowfall.jquery.min.j ...
- Power BI 与 Azure Analysis Services 的数据关联:4、Power BI 连接到Azure Analysis Services 并展示
Power BI 与 Azure Analysis Services 的数据关联:4.Power BI 连接到Azure Analysis Services 过使用服务器名称别名,用户可以使用较短 ...
- Kotlin入门(9)函数的基本用法
上一篇文章介绍了Kotlin新增的空安全机制,控制语句部分可算是讲完了,接下来将连续描述Kotlin如何定义和调用函数,本篇文章先介绍函数的基本用法. 前面几篇文章介绍控制语句之时,在setOnCli ...
- Android--清除默认桌面设置和设置默认桌面(转)
http://blog.csdn.net/chaozhung_no_l/article/details/49929177 转自这位大神的博客,感谢这位大神,帮了大忙,谢谢!!
- IDEA插件清单
zookeeper插件,方便查看zk节点信息 Maven Helper,方便解决jar包冲突 Free Mybatis plugin,自动映射mapper接口到对应查询statements gener ...
- Chrome_浏览器开发人员工具
Google Chrome 浏览器开发人员工具,让网页开发变得更轻松 无论是 IE 6/7 的 Internet Explorer Developer Toolbar 或者是 IE 8 自带的 Dev ...
- 自己搭建anki同步服务器
最近帮孩子找学习的软件,发现了anki 不过同步速度太慢,但发现可以自己搭建同步服务器 具体方法见https://github.com/dsnopek/anki-sync-server 我的安装过程如 ...
- python第七十七天---HTML
HTML5 :规则, 浏览器的通用规则 1.规则, 浏览器的通用规则 2.开发者: 学习html 规则 开发后台程序 - 写html文件 (当作模板) - 数据库获取数据,替换到指定的HTML文件中的 ...
- cmder个人配置文件,做个记录
以下附件是自己的cmder配置文件: https://app.yinxiang.com/shard/s13/res/30e84035-5f0f-4baf-b18c-a84ce45ec8b9/wkkcm ...
- iOS网络篇
iOS网络请求三步: 1.新建URL连接 2.新建请求(请求新建的URL连接) 3.建立连接. 然后就可以获取数据了. 一.同步GET请求方法 -(void)synchronizationGet { ...