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()方法,该方法是针对泛型集合而言的,用于查看泛型中有多少个元素。
相关文章推荐
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.5字符串与数组(4.5.1-4.5.3)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.1)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.2面向对象技术(4.2.10-4.2.11)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.2面向对象技术(4.2.6)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.2)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.4基本类型与运算(4.4.1)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.10多线程(4.10.1-4.10.4)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.7输入输出流(4.7.1-4.7.3)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.8-4.1.9)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.11Java数据库操作(4.11.1-4.11.8)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.3关键字(4.3.4-4.3.6)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.8 Java平台与内存管理(4.8.1-4.8.3)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.3关键字(4.3.7-4.3.9)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.6-4.1.7)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.6异常处理(4.6.1-4.6.3)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.2面向对象技术(4.2.1-4.2.2)
- 面试宝典第四章Java基础知识———4.5字符串和数组
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.7输入输出流(4.7.4-4.7.6)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.10)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.11-4.1.12)