4数组
Posted mlyflow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4数组相关的知识,希望对你有一定的参考价值。
1、创建数组
• 数组是相同类型数据的有序集合.相同类型的若干个数据,按照一定先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.
• 数组特点:其长度是确定的。数组一旦被创建,它的大小就是不可以改变的; 其元素必须是相同类型,不允许出现混合类型;数组中的元素可以是任何数据类型,包括基本类型和引用类型。
- 一维数组声明: type[] arr_name; type arr_name[]; Java中使用关键字new 创建数组对象
public class Test{ public static void main(String args[]){ int[] s = null; s = new int[10]; for ( int i=0; i<10; i++ ) { s[i] =2*i+1; System.out.println(s[i]); } } }
- 引用数组生成:
1 import java.lang.reflect.Array; 2 3 public class BallGame { 4 5 public static void main(String[] args) { 6 User[] ints = new User[10]; 7 User user1 = new User(10,"13453"); 8 User user2 = new User(100,"xiaoming"); 9 ints[0] = user1; 10 ints[1] = user2; 11 System.out.println(ints[0].age); 12 } 13 } 14 15 class User{ 16 int age ; 17 String name; 18 public User(int age,String name){ 19 this.age = age; 20 this.name = name; 21 } 22 23 }
2、数组初始化
- 静态初始化--->定义的时候直接赋值
public class BallGame { public static void main(String[] args) { //定义数组 int[] ints = {1,2,3,4}; for(int i=0;i<ints.length;i++){ System.out.println(ints[i]); } } }
- 动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行。
public class BallGame { public static void main(String[] args) { //定义数组 int[] ints = new int[2]; ints[0] = 0; ints[1] = 1; for(int i=0;i<ints.length;i++){ System.out.println(ints[i]); } } }
- 默认初始化-->和成员变量默认赋值一样
3、数组的拷贝
package cn.sxt.array2; /** * 测试数组的拷贝 * @author Administrator * */ public class TestArrayCopy { public static void main(String[] args) { // testBasicCopy2(); String[] str = {"阿里","京东","尚学堂","百度","亚马逊"}; // removeElment(str, 1); str = extendRange(str); } //数组拷贝 public static void testBasicCopy(){ String[] s1 = {"aa","bb","cc","dd","ee"}; String[] s2 = new String[10]; System.arraycopy(s1, 2, s2, 6, 3); for(int i=0;i<s2.length;i++) { System.out.println(i+"--"+s2[i]); } } //测试从数组中删除某个元素(本质上还是数组的拷贝) public static void testBasicCopy2(){ String[] s1 = {"aa","bb","cc","dd","ee"}; // String[] s2 = new String[5]; System.arraycopy(s1, 3, s1, 3-1, s1.length-3); s1[s1.length-1] = null; for(int i=0;i<s1.length;i++) { System.out.println(i+"--"+s1[i]); } } //删除数组中指定索引位置的元素,并将原数组返回 public static String[] removeElment(String[] s, int index){ System.arraycopy(s, index+1, s, index, s.length-index-1); s[s.length-1] = null; for(int i=0;i<s.length;i++) { System.out.println(i+"--"+s[i]); } return s; } //数组的扩容(本质上是:先定义一个更大的数组,然后将原数组内容原封不动拷贝到新数组中) public static String[] extendRange(String[] s1){ // String[] s1 = {"aa","bb","cc"}; String[] s2 = new String[s1.length+10]; System.arraycopy(s1, 0, s2, 0, s1.length); //就将s1中所有的元素拷贝到了s2 for(String temp:s2){ System.out.println(temp); } return s2; } }
4、array工具
package cn.sxt.array2; import java.util.Arrays; /** * 测试java.util.Arrays工具类的使用 * @author Administrator * */ public class TestArrays { public static void main(String[] args) { int[] a = {100,20,30,5,150,80,200}; System.out.println(a); //打印字符串 System.out.println(Arrays.toString(a)); //排序 Arrays.sort(a); System.out.println(Arrays.toString(a)); //二分法查找 System.out.println(Arrays.binarySearch(a, 30)); } }
5、多维数组
- 二维数组
package cn.sxt.array2; /** * 测试二维数组 * @author Administrator * */ public class Test2DimensionArray { public static void main(String[] args) { // int[] a = new int[3]; // Car[] cars = new Car[3]; int[][] a = new int[3][]; a[0] = new int[]{20,30}; a[1] = new int[]{10,15,80}; a[2] = new int[]{50,60}; System.out.println(a[1][2]); //静态初始化二维数组 int[][] b = { {20,30,40}, {50,20}, {100,200,300,400} }; System.out.println(b[2][3]); } } class Car{ }
- 实例
package cn.sxt.array2; import java.util.Arrays; /** * 测试数组存储表格数据 * @author Administrator * */ public class TestArrayTableData { public static void main(String[] args) { Object[] emp1 = {1001,"sfs",18,"讲师","2006.6.6"}; Object[] emp2 = {1002,"sffs",19,"程序员","2016.6.6"}; Object[] emp3 = {1003,"sfsdfs",22,"销售","2026.6.6"}; Object[][] tableData = new Object[3][]; tableData[0] = emp1; tableData[1] = emp2; tableData[2] = emp3; for(Object[] temp: tableData){ System.out.println(Arrays.toString(temp)); } } }
以上是关于4数组的主要内容,如果未能解决你的问题,请参考以下文章
在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]