一、数组
1、数组声明
- 数组必须先声明后使用。
- 数组元素可以是基本数据类型,也可以是类类型或接口类型,也还可以是数组。
- 一维数组定义格式:
类型 数组名[ ];
char name[ ];
char [] name;
int intArray[5];//是错误的
2、创建数组
int intArray[]={1,2,3,4};
- 动态初始化
使用new关键字为数组分配空间。
类型 数组名[ ]=new 类型 [数组大小];
数组名[ 0]=new 类型(初始表);
int intArray[]=new int[5];
intArray[0]='1';
- 基本数据类型的数组,其创建格式:
类型 数据名[ ]=new 类型[数组大小];
类型 [ ] 数组名=new 类型[数组大小];
3、访问数据元素
- 数组的下标从0开始。
- 数组中的元素个数length是数组类中唯一的数据成员变量
- 使用new创建时系统自动给length赋值。
- 下标的范围是0~length-1
//使用length的示例
int intArray[]=new int[10];
for(int i=0;i<intArray.length;i++){
//进行相应的代码处理
system.out.print(intArray[i]);
}
4、多维数组
- 数组元素的声明可以是任何形式,比如一维数组等等
- 使用多维数组时使用类型及多对方括号
例如:int [ ] [ ]是类型,它是二维数组,每个元素是int类型的。 - 二维数组
类型 数组名[ ];
int intArray[][];//声明了二维数组intArray
- 另外两种定义形式:
类型[ ] [ ] 数组名;
类型[ ] 数组名 [ ]; - 与一维数组一样,二维数组定义时对数组元素没有分配内存空间,同样初始化后,才可以访问每个元素。
- 多维数组的初始化和一维数组一样
- 无需指出数组每一维的大小,系统会根据初始化时给出的初值的个数自动计算每一维的大小
int intArray[] []={{11,2},{3,4},{2,0}};
- 二维数组的动态初始化
两种分配空间的方法:直接分配,按维分配。
直接分配:就是直接为每一维分配空间,声明数组时,给出各维的大小
类型 数组名[ ] [ ]=new 类型[数组第一维大小][数组第二维大小];
int a[][]=new int[2][3];//声明的2行3列的二维数组
- 按维分配是从最高维起(而且必须从最高维开始),分别为每一维分配内存。
- 创建二维数组的一般格式为:
类型 数组名 [ ] [ ] = new 类 型 [数组第一维大小] [ ] ;
数组名[0] = new 类型 [数组第二维大小];
数组名[1 ] = new 类型 [数组第二维大小] ;
数组名[数组第一维大小- 1 ] = new 类型 [数组第二维大小] ;
二、字符串类型
1、字符串声明
- 字符串是连续排列0或多个字符
- String和StringBuffer类中封装了许多方法,用来对字符串的操作。
- String类用于处理不变字符串,StringBuffer类用于处理可变字符串
- Java程序中字符串分为常量和变量两种,字符串常量用双引号括起来。
- 对于字符串变量,使用之前要显示声明,并进行初始化。
String s1;
StringBuffer sb1 ;
也可以创建一个空的字符串:
String s1 = new String( ) ;
StringBuffer strb1= new StringBuffer ( ) ;
此 外,还可以由字符数组创建字符串,如下所示。
char chars[ ] = {‘a’,‘b’,‘c’};
String s2 = new String( chars) ;
当然,可以直接用字符串常量来初始化一个字符串:
String s3 =" Hello World! ";
StringBuffer声明
StringBuffer类不能使用字符串常量来创建,比如:
StringBuffer strerr = “This is a test String”;//错误
2、字符串操作
- String类的对象实例是不可改变的,一旦创建就确定下来。
- String常用方法
String类 和 StringBuffer类中共有的常用方法如下:
·length():返回字符串的长度,即字符个数。
·charAt( int index):返回字符串中index位置的字符。
·subString (int beginlndex):截取当前字符串中从beginlndex开始到末尾的子串。
String类中的常用方法如下。
·replace ( char oldChar, char newChar ) :将当前字符串中出现的所有 oldChar转换为newChar。
·toLowerCase() :将当前字符串中所有字符转换为小写形式。
·toUpperCase() :将当前字符串中所有字符转换为大写形式。
·concat( String str):将 str连接在当前字符串的尾部。
·startsWith( String prefix):测试 prefix是否是当前字符串的前缀。
·trim() :去掉字符串前面及后面的空白。
·valueOf( type value):将 type类型的参数value转换为字符串形式。
StringBuffer的常用方法
StringBuffer类中的常用方法如下。
·append (String str):将参数 str表示的字符串添加到当前串的最后。
·replace (int start, int end, String str) :使用给定的 str 替换从 start 到 end 之间的子串。
·capacity( ) :返回当前的容量。
String类型字符串的连接还可以使用运算符+来实现。
三、Vector类
1、概述
- Vector是 java.util包提供的一个非常重要的工具类,它类似于数组,可以使用整数下标来访问各个元素,但是比数组的功能更强大。
- Vector类包含的成员变量有3个:
·protected intcapacitylncrement:增量的大小。如果值为0 , 则缓冲区的大小每次倍增。
·protected intelementCount :Vector 对象中元素的数量。
·protected ObjectelementData[ ] :元素存储的数组缓冲区。
2、Vector类的方法
- 构造方法
常用的 Vector类的3个构造方法如下。
·public Vector( ) :构造一个空向量。
·public Vector(intinitialCapacity) :以指定的初始存储容量 initialCapacity 构造一个空的向量 Vector。
·public Vector(intinitialCapacity, int capacitylncrement) :以指定的初始存储容量 initialCapacity和容量增量capacitylncrement构造一个空的向量 Vector。
创建 Vector的实例时,要指明其中保存的元素的类型。
例如 :
Vector MyVector = new Vector(100, 50);
创建的 MyVector向量序列初始有100个字符串的空间,以后一旦空间用尽则以50为单位递增,使序列中能够容纳的元素个数为150,200…… - 添加方法
向 Vector类对象中添加元素的常用方法如下。
·addElement(Object obj):将新元素obj添加到序列尾部。
·insertElementAt(Object obj,int index) :将指定对象 obj 插入到指定位置 index 处 。
·add (int index, Object obj):在向量的指定位置index插入指定的元素obj。 - 元素的修改或删除方法
使用以下方法可以修改或删除Vector类对象序列中的元素。
·setElementAt(Object obj, int index):将向量序列 index位置处的对象元素修改为obj。如果下标index是负数或超出实际元素的个数,则抛出异常ArraylndexOutOfBoundsException。
·removeElement(Object obj):删除向量序列中第一个与指定的obj对象相同的元素,同时将后面的所有元素均前移一个位置。这个方法返回的是一个布尔值,表示删除操作成功与否。
·removeElementAt(int index):删除 index位置的元素,同时将后面的所有元素均前移一个位置。如果下标 index是负数或超出实际元素的个数,则抛出异常 ArraylndexOutOfBoundsException。
·removeAllElements() :清除向量序列中的所有元素,同时向量的大小置为0。 - 元素的査找方法
Java还提供了在向量序列中进行査找的操作,常用的査找方法如下。
·elementAt(int index):返回指定位置处的元素。如果下标 index是负数或超出实际元素的个数,则抛出异常 ArraylndexOutOfBoundsException。这个方法的返回值是 Object类型的对象,在使用之前通常需要进行强制类型转换,将返回的对象引用转换成Object 类的某个具体子类的对象。
例 如 :String str = ( String) My Vector.elementAt(0)。
·contains (Object obj):检査向量序列中是否包含指定的对象元素obj。
·indexOf ( Object obj, int start_index) :从指定的 start_index 位 置开始向后搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回-1。
·lastlndexOf(Object obj, int start_index) :从指定的 start_index 位置开始向前搜索,返回所找到的第一个与指定对象obj相同的元素的下标位置。若指定的对象不存在,则返回-1。
使用 Vector时,一定要先创建后使用。如果不先使用new运算符利用构造方法创建Vector类的对象,而直接使用Vector的方法,例如 addElement( ) 等方法,则可能造成堆栈溢出或使用null指针异常等。