您的位置:首页 > 编程语言 > Java开发

【Java编程基础】Chapter 4.1:字符串

2014-07-29 23:47 316 查看
字符串指的是字符的序列,有两种类型的字符串:

字符串常量。创建以后不需要改变的,在Java中,String类用于存储和处理字符串常量;

字符串变量。创建以后,需要对其进行改变的,在Java中,StringBuffer类用于存储和操作字符串变量。

一、字符串常量与String类

在Java中,没有内置的字符串类型,字符串常量是作为String类的对象存在的。

1.创建String类对象

String类的对象表示的是字符串常量,一个字符串常量创建以后就不能够被修改了。

在创建String类对象时,通常需要向构造函数传递参数来指定创建的字符串的内容。

2.常用的String类构造函数

public String():该构造函数用于创建一个空的字符串常量。

public String(String value):该构造函数用于根据一个已经存在的字符串常量来创建一个新的字符串常量,该字符串的内容和已经存在的字符串常量一致。

String(byte[] bytes, String charsetName) :该构造函数构造一个新的 String,使用指定的字符集解码指定的字节数组。

public String(char value[]):该构造函数用于根据一个已经存在的字符数组来创建一个新的字符串常量。(数组将在本章后面的内容中介绍)

public String(StringBuffer buffer):该构造函数用于根据一个已经存在的StringBuffer对象来创建一个新的字符串常量。

二、String类对象的常用操作及方法

在Java中,String类包含有50多个方法来实现字符串的各种操作,以下介绍一些经常使用的方法。

char charAt (int index):返回指定索引处的char值。

int compareTo(String anotherStr):按字典顺序比较两个字符串。

int compareToIgnoreCase (String str):不考虑大小写,按字典顺序比较两个字符串。

String concat(String str):将指定字符串联到此字符串的结尾。等同于“+”。

boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束。

boolean equals(Object anObject):比较此字符串与指定的对象。

boolean equalsIgnoreCase(String anotherString):将此String与另一个String进行比较,不考虑大小写。

int hashCode():返回此字符串的哈希码。哈希码是哈希表中使用的功能,具体用法请参照在集合框架中HashSet的用法。

int indexOf(String str):返回第一次出现的指定子字符串在此字符串中的索引。

int indexOf(String str, int fromIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。

int lastIndexOf(String str):返回最后一次出现的指定字符串在此字符串中的索引。

int lastIndexOf(String str, int fromIndex):从指定的索引处开始进行后向搜索,返回最后一次出现的指定字符串在此字符串中的索引。

int length():返回此字符串的长度。

String replaceFirst(String regex, String replacement):该方法用字符串replacement的内容替换当前字符串中遇到的第一个和字符串regex相一致的子串,并将产生的新字符串返回。

String replaceAll(String regex, String replacement) :该方法用字符串replacement的内容替换当前字符串中遇到的所有和字符串regex相一致的子串,并将产生的新字符串返回。

String[] split(String regex):根据给定的字符串来拆分此字符串,得到一个字符串数组。

boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始。

String substring(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串的一个子字符串。

String toLowerCase():把字符串转换为小写。

String toUpperCase():把字符串转换为大写。

String trim():去掉字符串两端的空格。

static String valueOf(XXX b):把其他类型变量转成字符串。

三、StringBuffer类及其简单应用

StringBuffer类也是java.lang.Object的子类。

与String类不同,StringBuffer类是一个在操作中可以更改其内容的字符串类。

一旦创建StringBuffer类的对象,在操作中可以更改和变动字符串的内容。

也就是说对于StringBuffer类的对象不仅能进行查找和比较等操作,也可以做添加、插入、修改之类的操作。

StringBuffer类提供了多种构造方法来创建类StringBuffer的对象。

public StringBuffer():创建一个空字符串缓冲区,默认初始长度为16个字符。

public StringBuffer(int length):length指定的初始长度创建一个空字符串缓冲区

public StringBuffer(String str):用指定的字符串str创建一个字符串缓冲区,其长度为str的长度再加16个字符。

10个重载方法append,可以在字符串缓冲区末尾追加boolean、char、字符数组、double、float、int、long、string、Object等类型的新内容,append方法的返回类型均为StringBuffer。

9个重载方法insert,可以在字符串缓冲区中指定位置处插入char 、字符数组、double、float、int、long、boolean、string、Object等类型的新内容。insert方法的返回类型均为StringBuffer。

四、各种数据类型的转换

在实际工作中,我们经常会遇到数据类型之间转换的问题,比如计算得到的浮点型,却要作为字符串存储。或者,得到的日期型数据,确要解析成字符串。

Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型。

Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。

四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String和Date。下面的论述中,我们将阐述如何实现这些转换。

1.数据类型转换的种类

java数据类型的转换一般分三种,分别是:

简单数据类型之间的转换、字符串与其它数据类型的转换、其它实用数据类型转换。

2.简单数据类型之间的转换

在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char)->int->long->float->double

简单数据类型之间的转换又可以分为:

低级到高级的自动类型转换、高级到低级的强制类型转换、包装类过渡类型能够转换。

(1).自动类型转换

低级变量可以直接转换为高级变量,称之为自动类型转换

例,下面的语句可以在Java中直接通过:

<span style="font-family:Arial;">byte b;
int i=b;
long l=b;
float f=b;
double d=b;</span>

如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例

<span style="font-family:Arial;">char c = 'c';
int i = c;</span>

i的值为99

(2).强制类型转换

将高级变量转换为低级变量时,情况会复杂一些,可以使用强制类型转换:

<span style="font-family:Arial;">// 定义short 整型变量 i 并且赋值
short i=99;
// 将 i 强制类型转换为 char 型变量
char c=(char)i;</span>

上例的运行结果为:c = c

这种转换肯定可能会导致溢出或精度的下降,因此并不推荐使用这种转换。

(3).包装类过渡类型转换

包装类,就是可以直接将简单类型的变量表示为一个类

在执行变量类型的相互转换时,我们会大量使用这些包装类

Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,分别对应于 boolean、char、int、long、float和double

String和Date本身就是类。所以也就不存在什么包装类的概念了。

在进行简单数据类型之间的转换(自动转换或强制转换)时,可以利用包装类进行中间过渡。

一般情况下,首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:

Boolean(boolean value)

Character(char value)

Integer(int value)

Long(long value)

Float(float value)

Double(double value)

而在各个包装类中,有××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换。

例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

3.字符串型与其它数据类型的转换

从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。

例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: