Java笔记6-数组
知识大纲
一、数组的应用
由于数组是用来存储数据的,所以,它的操作总是增、删除、改、查的操作。
数组做为一种最基本的数据结构,它在查询上效率是最高的。但是在增加、
删除的操作效率是最低的。
因为,
数组的长度一旦确定,是不能改变的,所以,你新增元素时,需要
重新扩展一个更大的数组出来。
数组元素一旦删除,则它后面的所有的元素都要依次向前移动1次。
---------------------
int[] arr1 = new int[5];
int[] arr2 = arr1; //ok
//此处只创建了1个对象,但是有2个引用,这2个引用指向一个对象。
如:
arr2[3] = 100;
System.out.println(arr1[3]); // 100
------------------
数组元素的COPY
有2种方式
1.利用 System.arraycopy 方法
System.arraycopy(
Object src //源数组
,int srcPos //源数组哪个位置开始
,Object dest //目标数组
,int destPos //目标数组哪个位置开始放
,int length //从源数组中COPY多少个元素到目标数组
);
注:使用此方法前,源数组与目标数组都必需初始化。
如:
int[] arr1 = new int[]{1,2,3,4,5}; //[1 2 3 4 5]
int[] arr2 = new int[arr1.length+2]; //[0 0 0 0 0 0 0]
//
System.arraycopy(arr1,1,arr2,2,arr1.length-2);
//此时,arr2中的元素是:[0 0 2 3 4 0 0 ]
此方法的效率非常好。
2. 利用 java.util.Arrays类的工具方法
int[] copyOf(int[] original, int newLength);
此方法有很多重载,它的作用是基于original数组与长度来创建一个
新的数组,这个新数组的元素值与original的元素是一样的,如果这个
newLength大于original 数组长度,则多出的元素以0填充,如果这个
newLength小于original 数组长度,则把多出的元素截取掉。
如:
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = Arrays.copyOf(arr1,arr1.length);
//则arr2的元素值与arr1是一模一样的。
int[] arr3 = Arrays.copyOf(arr1, arr1.length + 2);
//arr3 元素是 [1 2 3 4 5 0 0]
int[] arr4 = Arrays.copyOf(arr1 arr1.length - 2);
//arr4 元素是 [1 2 3 ]
---
Arrays数组工具类
toString 方法
copyOf 方法
fill 方法
...
Java笔记6-数组的更多相关文章
- Java笔记(八)……数组
数组的概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 数组的格式 元素类型[] 数组名 = new 元素类型[个数]; int[ ...
- Java笔记之数组
1.int flags[] = new int[10];数组中的每个元素初始化为0. Arrays.fill(flags, 0);将数组中每个元素置为0.
- [java笔记]动态数组
private int count;//计数器 private int ary[] = new int [3]; if(count >= ary.length){ //数组动态扩展 int ne ...
- [java小笔记] 关于数组内存管理的理解
数组是大多数编程语言都提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组,java语言的数组变量时引用类型的变量,因此具有java引用变量的特性.在使用数组之前必须对数组对象 ...
- 【原】Java学习笔记011 - 数组
package cn.temptation; import java.util.Scanner; public class Sample01 { public static void main(Str ...
- java笔记 -- 数组
概念: 数组是一种数据结构, 用来存储同一类型值的集合. 通过一个整型的下标可以访问数组中的每一个值. 声明: int[] a(推荐,将类型int[](整形数组)和变量名分开了) 或者int a[] ...
- 菜鸡的Java笔记 第七 - java 数组
数组的基本概念 笔试中经常出现的试题或是问题 1.1 概念 数组指的是一组相关变量的集合 如果用最原始的方式定义100个变量的话没问题但是这些变量的关联实在 ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
- Thinking in Java 笔记
大二就买了这本书,如今再看这本书,看到了一些以前没看的细节,也有了不同的体会.本文使用第4版,整理每章的笔记心得.老外的书有个特点,他会花费大量的文字去阐述一个概念,这比堆代码强多了. 第 1 章 对 ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
随机推荐
- 通过HWND获得CWnd指针
cwnd 又为计算机网络中拥塞窗口(congestion window)的简写.拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化.发送方让自己的发送窗口还可能小于拥塞窗口. CWnd是MFC窗口类 ...
- GIS服务器需求分析
一. 需求概要 1 边界 核心职责 接收并存储外部各方系统GPS数据 GPS数据实时分发, 轨迹检索 2 流程 GIS客户端向GIS服务器订购 GIS客户端向GIS服务器订购号码(仅有号码这一项业 ...
- poj1625Censored!(AC自动机+dp)
链接 第一次做这种题目,参考了下题解,相当于把树扯直了做DP,估计这一类题都是这个套路吧. 状态方程dp[i][next] = dp[i][next]+dp[i][j] ;dp[i][j]表示长度为i ...
- Google Protocol Buffer的安装与.proto文件的定义
什么是protocol Buffer呢? Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准. 我理解的就是:它是一种轻便高效的结构 ...
- JavaScript学习笔记及知识点整理_1
一.js的基础部分 1.==和===的区别:==在判断是否相等的时候会进行类型转换,有时会得到非常奇怪的结果,因此一般情况下都是用===判断是否相等2.strict模式:在js中,如果一个变量没有用v ...
- Delphi TDatabase 组件
TDatabase 组件是一个能与远程数据库通过 BDE 建立连接的组件,可使本地端的程序获取远程的数据. 通过 TDatabase 组件的使用,可以减少与远程数据库连接的窗口,当远程数据库的设置变动 ...
- Python_Day3_基础3
python基础之数据类型与变量 字典 字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 语法: info = { 'stu1101': &q ...
- Java小bug
1.使用split函数,将字符串按"."分开,写法如下: String str = "a.b.c"; String[] items = str.split(&q ...
- 1427. SMS
http://acm.timus.ru/problem.aspx?space=1&num=1427 没想到这道题错了N遍 细节很重要呀 代码: #include<iostream> ...
- ubuntu auto install update
sudo apt-get update sudo apt-get dist-upgrade 32bit mode sudo dpkg --add-architecture i386