第五章数组和字符串

一、数组

1、数组声明
  • 数组必须先声明后使用。
  • 数组元素可以是基本数据类型,也可以是类类型或接口类型,也还可以是数组。
  • 一维数组定义格式:
    类型 数组名[ ];
  char  name[ ];
  char []  name;
  • Java没有静态的数组声明
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指针异常等。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值