String类详述
来源:互联网 发布:通话录音软件源 编辑:程序博客网 时间:2024/04/30 09:58
Java中的String类详述
在Java基础的学习过程和日后的开发过程中,最最普遍的莫过String类型的变量用的再频繁了。String类是Java API提供给开发者使用的已经封装好的字符串对象的一个封装,叫字符串类。同时为开发者提供了丰富的方法和功能供开发者使用。今天,在这里一并将String类进行分解开来,详细讲述关于String类的那些事。
String类型的变量是一个字符串对象,String对象一旦被创建,就不能被改变,也就是说字符串变量一旦在内存中初始化,就无法再进行改变,原因是String类在定义的时候,就已经定义成了final类型的,根据以前的知识可知道,由final修饰的变量不能进行修改,由final修饰的类不能存在子类。字符串一旦被初始化就不能修改是字符串对象最大 的特性。String类最大的特性:初始化后无法被修改。
说完了String类最大的特性,就来说说如何创建一个String 类型的变量,以及有什么区别。
第一、String s1 = "abc"; 定义了一个字符串变量s1,其内容是abc,在定义的同时进行了初始化。
第二、String s2 = new String("abc");第二种方式也是定义个变量并进行初始化,但是,第二种方式执行后,内存中就有了两个对象,new代表着一个,'abc'代表着一个。
特别说明:s1、s2都是一个类类型变量,所以s1是一个对象。同时,只要是双引号引起来的,也是一个对象。
String类适用于描述字符串事物,Java语言的编写者们为开发者提供了众多的方法和功能,方便开发者们查阅和调用。现将常见的,常用的方法整理如下:
一、获取
1.1字符串中的包含的字符数,也就是字符串的长度。 int length();
1.2根据位置获取某个字符,char charAt(int index);
1.3根据字符获取该字符在字符串中首次出现的位置。
int indexOf(int ch, int formIndex)//从fromIndex的位置开始获取ch在字符串中第一次出现的位置。
二、判断
2.1字符串中是否包含某一个子串。 boolean contains(string)
区别之处:IndexOf(str);可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中。因此,可以用于对指定判断是否包含
indexOf(str)方法既可以判断,又可以判断其出现的位置。
2.2字符串中是否有内容(字符串是否为空): boolean isEmpty();通过判断其长度是否为0进行判断。
2.3字符串是否以指定内容开头:boolean startWith(str);
2.4字符串是否以指定内容结尾:: boolean endsWith(str);
2.5判断字符串的内容是否相同,复写了Object类中的equals方法,boolean equals(str);
2.6判断内容是否相同,并忽略大小写。boolean equalsIngnoreCase();
三、转换
3.1将字符数组转成字符串
构造函数:String(char [] ),将字符数组转换成字符串;static String(char[], offset,count);将字符数组中的一部分转换成字符串。
静态方法:
static String copyValueOf(char [] );
static String copyValueOf(char [] data, int offset,int count);
static String valueOf(char []);
3.2将字符串转成字符数组
char [] toCharArray();
3.3将字节数组转成字符串:
String(byte []); String(byte [], offset,count);
3.4将字符串转换成字节数组
byte [] getBytes();
3.5将基本数据类型转换成字符串:
static String valueOf(int );
static String valueOf(double);
... ...
例如: 3+"";就等同于String.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
四、替换
String replace(char oldchar,char newchar);用新的字符来替换旧的字符。
例如:
String s= "hello Java";
String s1 = s.replace('a','n');
通过打印可以看出,s仍是hello java, s1是hello jnvn
原因:字符串一旦被初始化,就无法被修改和改变。
五、切割
String [] split(regex);对字符串按照regex进行切割,返回被切割后的字符串数组
六、子串:获取字符串的一部分
String substring(begin);//获取从指定开始角标位置到字符串末尾的方法
String substring(begin,end);//获取字符串的子串,包含头,不包含尾
七、转换、去除空格、比较
7.1将字符串转成大写或者小写
String toUpperCase();//转换成大写
String toLowerCase();//转换成小写
7.2将字符串两端的多个空格去除
String trim();
7.3对两个字符串进行自然顺序的比较
int compareTo(string);
需要说明的是,在JDK1.5版本以后,出现了StringBuilder.
对于StringBuffer和StringBuilder的区别,说明如下:StringBuffer是线程同步的;StringBuilder是线程不同步的。
同时注意,将StringBuilder的实例用于多个线程是不允许的,如果需要这样的同步,则建议使用StringBuffer.即多个线程用StringBuffer,单个线程用StringBuilder.开发过程是,推荐使用StringBuilder
由于StringBuilder是从StringBuffer版本上产生来的。也就带来了版本升级的问题。对于Java API版本之间的升级来说,升级主要体现在三个原则上面:1、提高代码效率;2、简化书写;3、提高安全性。由StringBuffer到StringBuilder就是提高效率的体现。
- String类详述
- dojo.string模块详述
- 菜鸟猿大战java之String详述
- C语言标准库概览详述[10]-字符串<string.h>
- CFileFind类与CString类详述
- C++类与C#类区别详述
- 详述 Java 语言中的 String、StringBuffer 和 StringBuilder 的区别及用法
- 详述 Java 语言中的 String、StringBuffer 和 StringBuilder 的区别及用法
- VS2005中MFC添加Excel类步骤详述
- 断言详述
- 详述XmlHttp
- GridView详述
- GridView详述
- GridView详述
- CABAC 详述
- UML详述
- ApplicationDomain详述
- nandflash详述
- 编写strcpy函数
- 坐骑
- Enterprise Manager show database status is unavailable
- 泉demo阶段一
- 今天第一次看牙医
- String类详述
- 矿山软件中Micromine,DATAMINE,SUR…
- #include <gl\glu.h> …
- 广播机制
- Torque3D完美整合Flash
- 必看的 jQuery性能优化的38个建议
- WCF Endpoint 作用体现
- 今日的目标
- iPhone开发资料汇总( 转 )