浅尝Java 数组
来源:互联网 发布:高三毕业后干什么知乎 编辑:程序博客网 时间:2024/06/06 00:57
浅尝Java 数组:
一种同类型元素的集合,最基本的一种数据结构。通过下标访问 数组一旦初始化完成,在内存中所占空间就被固定下来,长度不可改变,因此我们在使用中要考虑到多少长度才是最佳的。
定义数组有两种语法格式:
type[] arrayName;(建议尽可能多的使用此种方式)
type arrayName[];
数组在使用前,一定要初始化,为数组分配内存空间,并赋初始值。初始化也有两种方式:
静态初始化 arrayName = new type[]{e1 .e2.e3,....} 动态初始化 arrayName = new type[length]
注意: 访问数组元素指定的索引值小于0,或者大于等于数组的长度,编译时不会出现错误,但是运行时会出现异常:java.lang.ArrayIndexOutOfBoundsException:N(数组越界)。
System.arraycopy可以用于数组的复制,如果是数组比较大,那么使用System.arraycopy会比较有优势,因为其使用的是内存复制,省去了大量的数组寻址访问等时间
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
src 源数组
srcPos 源数组起始位置
dest 目标数组
destPos 目标数组起始位置
length 需要复制的元素数量
例如下面
int[] a = {1,2,3,4,5,6,7};int[] b = new int[4];System.arraycopy(a, 2, b, 0, 4);System.out.println(Arrays.toString(b));
输出:
[3, 4, 5, 6]
Arrays.copyOf() 同样也可以用于数组复制。
该方法对于不同的数据类型都有相应的方法重载。
type newArray = Arrays.copyOf(type[] array,int length)
特点:生成的数组是原数组的副本。
length 大于原数组长度,则用0或null填充
length 小于原数组长度,则进行截取
数组的扩容:
数组的长度是不可以改变的,所以扩容是指创建一个更大的数组并将原数组的内容复制到其中
数组的排序:
排序是对数组施加的最常用的一种方法,所谓排序是按照从小到大或者从大到小重新排列。
通常用数组元素的交换次数来衡量算法的优劣。
常用的排序算法有:插入排序、冒泡排序、快速排序。
冒泡排序:
原则比较相邻的元素,如果违反顺序准则,则交换。可以理解为:
第一次找到最大的元素放在最后的位置上,不再变动
第二次找到剩下元素中最大的元素放在倒数第二位置上,不再变动
以此类推,直到排序完成。
import java.util.Arrays;import java.util.Random;public class Test { public static void main(String args[]){ int[] arr = new int[10]; Random ran = new Random(); for (int i = 0; i < arr.length; i++) { arr[i] = ran.nextInt(100); } System.out.println(Arrays.toString(arr)); for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { int t = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = t; } } System.out.println(Arrays.toString(arr)); } System.out.println(Arrays.toString(arr)); }}
输出:
JDK 提供的 Arrays.sort()封装了数组的排序算法。
- 浅尝Java 数组
- 浅尝--数组
- Java浅尝
- 浅尝
- 浅尝Java中RSA加解密
- 【C】 一道题浅尝指针数组和二级指针
- Java基础之009-浅尝Java的String类
- PhotoShop浅尝
- CorelDRAW浅尝
- 浅尝触发器
- 浅尝DotNetNuke
- 浅尝Linux
- 浅尝JQchart!
- DWR浅尝
- 浅尝Mina
- 浅尝python
- 浅尝Kivy
- 浅尝sed
- Java中 equals() 和 ==的区别
- js个人笔记
- 习题8-6 删除字符
- 23. Merge k Sorted Lists
- Haproxy 8种算法+Session共享
- 浅尝Java 数组
- MongoDB高可用集群配置的方案-对称集群(一致对外)与非对称集群(只有我对外,其它待命)
- 设计模式之工厂方法模式
- 0014_Longest Common Prefix
- 【iOS沉思录】NSTimer你真的会用了吗
- 不太好找的前端资源angular-ui-router.min.js 1.0.3
- 第30课:Master的注册机制和状态管理解密 课堂笔记
- 分支限界法的基本思想
- 在Linux中创建静态库和动态库范例 (hello.c)