您的位置:首页 > 职场人生

Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.5字符串与数组(4.5.4-4.5.6)

2017-06-20 23:10 926 查看

4.5.4Java中数组是不是对象

数组是指具有相同类型的数据的集合,它们一般具有固定的长度,并且在内存中占据连续的空间。在C/C++语言中,数组名只是一个指针,这个指针指向了数组的首元素,既没有属性也没有方法可以调用,而在Java语言中,数组不仅有其自己的属性(例如length属性),也有一些方法可以被调用(例如clone方法)。由于对象的特点是封装了一些数据,同时提供了一些属性和方法,从这个角度来讲,数组是对象。每个数组类型都有其对应的类型,可以通过instanceof来判断数据的类型。

示例如下:

public class SubClass {

public static void main(String[] args){
int[] a = {1,2};
int[][] b = new int[2][4];
String[] s = {"a","b"};

if(a instanceof int[])
System.out.println("the type for a is int[]");
if(b instanceof int[][])
System.out.println("the type for b is int[][]");
if(s instanceof String[])
System.out.println("the type for s is String[]");
}
}

运算结果:
the type for a is int[]
the type for b is int[][]
the type for s is String[]


4.5.5数组初始化的方式有哪几种

在Java中,一维数组的声明方式为:

type arrayName[]或type[] arrayName

其中,type既可以是基本的数据类型,也可以是类,arrayName表示数组的名字,[]用来表示这个变量的类型为一维数组。与C/C++不同,Java中数组被创建后会根据数组存放的数据类型初始化成对应的初始值(例如,int类型会初始化为0,对象会初始化为Null)。另外一个不同之处是Java数组在定义时,并不会给数组元素分配存储空间,因此[]中不需要指定数组的长度,对于上面方式定义的数组在使用时还必须为之分配空间,分配方法为:

arrayName = new type[arraySize]; //arraySize表示数组的长度

在完成数组的声明后,需要对其进行初始化,下面介绍两种初始化的方法:

1>int[] a = new int[5]; //动态的创建了一个包含五个整型值的数组,默认初始化为0

2>int[] a = {1,2,3,4,5}; //声明了一个数组类型变量并初始化

当然,在使用时也可以把数组的声明和初始化分开来写,例如:

1>int[] a; //声明一个数组类型的对象a

a = new int[5]; //给数组申请一个包含了5个int类型大小的空间,默认为0

2>int[] a; //声明一个数组类型的对象a

a = new int[]{1,2,3,4,5};//给数组申请存储空间,并初始化默认值

以上主要是介绍了一维数组的声明与初始化的方式,下面介绍二维数组的声明与初始化的方式,二维数组有3种声明的方法:

1>type arrayName[][];

2>type[][] arrayName;

3>type[] arrayName[];

需要注意的是,在声明二维数组时,其中[]必须为空。

二维数组也可以用初始化列表的方式来进行初始化,其一般形式为:

type arrayName[][] = {{c11,c12,c13…},{c21,c22,c23…},…{…}};

也可以通过new关键字来给数组申请存储空间,形式如下:

type arrayName[][] = new type[行数][列数]

在Java语言中,二维数组的第二维的长度可以不同。假如要定义一个有两行的二维数组,第一行有两列,第二行有三列,定义方法如下:

1>int[][] arr = {{1,2},{3,4,5}};

2>int[][] a = new int[2][];

a[0] = new int[]{1,2};

a[1] = new int[]{3,4,5};

对二维数组的访问也是通过下标来完成,一般形式为arrayName[行号][列号],

下例介绍二维数组的遍历方法:

public class SubClass {

public static void main(String[] args){

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

for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+" ");

}
}
}
}

运算结果:
1 2 3 4 5


4.5.6length属性与length()方法有什么区别

在Java中,数组提供了length属性来获取数组的长度,避免数组越界;而length()方法是对字符串而言的,String提供了length()方法来计算字符串的长度,示例如下:

public class TestLength {

public static void testArray(int[] arr){
System.out.println("the length of array is:"+arr.length);
}

public static void testString(String str){
System.out.println("the length of String is:"+str.length());
}
public static void main(String[] args){

int[] arr = {1,2,3,4,5};
String str = "你好";
testArray(arr);
testString(str);
}
}

运行结果:
the length of array is:5
the length of String is:2


除了length属性与length()方法外,Java中还有一个计算对象大小的方法-size()方法,该方法是针对泛型集合而言的,用于查看泛型中有多少个元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐