栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】数组和Array

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】数组和Array

目录

一、数组

1、关于数组

2、关于二维数组

3、数组的拷贝

二、Array


一、数组

1、关于数组

存储一组相同类型数据的数据结构,属于对象,具有只读属性length。

声明数组变量、创建数组变量、初始化数组变量的的方法:

//动态初始化
char s[] = new char[2];
char[] s = new char[2];
s[0] = 'a';
s[1] = 'b';
//静态初始化
int[] array1 = {1,2};
int[] array2 = new int[]{1,2}

※声明数组的时候不能指定长度,例如:int num[5]; 这是错误的。 

※数据创建时的默认初始化是(0,null)。

※数组创建后不能改变大小,运行时候动态确定数组大小。

2、关于二维数组

Java本质是没有多维数组的,只有一维数组,本质是数组的数组(一位数组的每一个元素,是一个数组对象)

不规则数组的定义不能省略行数只能省略列数:

int[][] odds = new int[3][];
odds[0] = new int[]{1};
odds[1] = new int[]{2,3};
odds[2] = new int[]{4,5,6};

3、数组的拷贝
String[] s = new String[]{"Bob","Peter"};
String[] t = s;

这并不是数组的拷贝,这只是赋值,两个数组的引用指向同一个对象,是同一个数组的不同名字而已。

String[] s = new String[]{"a","b"};
String[] t = new String[s.length];
for(int i = 0; i < s.length; i++)
{
   t[i] = s[i];
}

 这是数组的拷贝但是效率很低,Java提供了静态方法System.arraycopy()。

System.arraycopy(from,formindex,to,toindex,count);
//从from数组的fromindex位置开始拷贝count个元素到to数组中从toindex开始;
//应用
int[][] intArray = {{1,2},{1,2,3},{3,4}};
int[][] intArrayBak = new int[3][];//定义一个三行的不规则数组(实际上是一个一维数组,每一个元素是一个数组对象)
System.arraycopy(intArray,0,intArrayBak,0,intArray,length);//拷贝;
int ArrayBak[2][1] = 100;//赋值;
for(int i = 0; i < intArray,length; i++)
{
  for(int i = 0; i < intArray[i].length; j++)
  {
     System.out.print(intArray[i][j]+"  ");//遍历输出;
  }
    System.out.println();
}
//输出:
1 2 
1 2 3
3 100

二、Array

是一种常用类,加强版数组,定义了多种数组操作的方法,实现了对数组元素的排序、转换成列表或者字符串形式等。

关于sort()、asList()、toString():

Type obj[] = {a,b,c,d}
Array.sort(obj)//对数组内容升序排序(默认)
Array.sort(obj,start,end);//对obj的[start,end)索引范围内进行排序;
//如果想改变sort的排序规则,需要数组类
//                                 继承接口implement Comparator,重写compare函数
//                              或者
//                                 继承接口implement Comparable,重写compareTo函数
//以Integer为例,重写,compare函数

class Integer implements Comparator
{ 
.......
 public int compare(Integer a,Integer b)
 {
    if(a < b)
      return 1;
    else if(a > b)
      return -1;
    else
      return 0;
 }
 ........
}
//以student为例,重写compareTo函数
class Student implements Comparable
{
..........
 public int compareTo(Integer a,Integer b)
 {
    if(a < b)
      return 1;
    else if(a > b)
      return -1;
    else
      return 0;
 }
.........
}
             
           

List list = Array.asList(3,4,5);
//list : [3,4,5]
Array.toString(obj);
//output:[a,b,c,d]               

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862929.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号