String类和StringBuffer类
位于java.lang包中,这个包中的类使用时不用导入
String类一旦初始化就不可以改变,而stringbuffer则可以。它用于封装内容可变的字符串。它可以使用tostring()转换成string字符串。
String x=”a”+4+”c”编译时等效于String x=new StringBuffer().append(“a”).append(4).append(“c”).toString();
字符串常量是一种特殊的匿名对象,String s1=”hello”;String s2=”hello”;则s1==s2;因为他们指向同一个匿名对象。
如果String s1=new String(“hello”);String s2=new String(“hello”);则s1!=s2;
/*逐行读取键盘输入,直到输入为“bye”时,结束程序
注:对于回车换行,在windows下面,有'\r'和'\n'两个,而unix下面只有'\n',但是写程序的时候都要把他区分开*/
public class readline
{
public static void main(String args[])
{
String strInfo=null;
int pos=0;
byte[] buf=new byte[1024];//定义一个数组,存放换行前的各个字符
int ch=0; //存放读入的字符
system.out.println(“Please input a string:”);
while(true)
{
try
{
ch=System.in.read(); //该方法每次读入一个字节的内容到ch变量中。
}
catch(Exception e)
{
}
switch(ch)
{
case '\r': //回车时,不进行处理
break;
case '\n': //换行时,将数组总的内容放进字符串中
strInfo=new String(buf,0,pos); //该方法将数组中从第0个开始,到第pos个结束存入字符串。
if(strInfo.equals("bye")) //如果该字符串内容为bye,则退出程序。
{
return;
}
else //如果不为bye,则输出,并且竟pos置为0,准备下次存入。
{
System.out.println(strInfo);
pos=0;
break;
}
default:
buf[pos++]=(byte)ch; //如果不是回车,换行,则将读取的数据存入数组中。
}
}
}
}
String类的常用成员方法
1、 构造方法:
String(byte[] byte,int offset,int length);这个在上面已经用到。
2、 equalsIgnoreCase:忽略大小写的比较,上例中如果您输入的是BYE,则不会退出,因为大小写不同,但是如果使用这个方法,则会退出。
3、 indexOf(int ch);返回字符ch在字符串中首次出现的位置
4、 substring(int benginIndex);
5、 substring(int beginIndex,int endIndex);
返回字符串的子字符串,4返回从benginindex位置开始到结束的子字符串,5返回beginindex和endindex-1之间的子字符串。
基本数据类型包装类的作用是:将基本的数据类型包装成对象。因为有些方法不可以直接处理基本数据类型,只能处理对象,例如vector的add方法,参数就只能是对象。这时就需要使用他们的包装类将他们包装成对象。
例:在屏幕上打印出一个*组成的矩形,矩形的宽度和高度通过启动程序时传递给main()方法的参数指定。
public class testInteger
{
public static void main(String[] args)
//main()的参数是string类型的数组,用来做为长,宽时,要转换成整型。
{
int w=new Integer(args[0]).intValue();
int h=Integer.parseInt(args[1]);
//int h=Integer.valueOf(args[1]).intValue();
//以上为三种将字符串转换成整形的方法。
for(int i=0;i
{
StringBuffer sb=new StringBuffer(); //使用stringbuffer,是因为它是可追加的。
for(int j=0;j
{
sb.append('*');
}
System.out.println(sb.toString()); //在打印之前,要将stringbuffer转化为string类型。
}
}
}
比较下面两段代码的执行效率:
(1)String sb=new String();
For(int j=0;j
{
Sb=sb+’*’;
}
(2) StringBuffer sb=new StringBuffer();
For(int j=0;j
{
Sb.append(‘*’);
}
(1) 和(2)在运行结果上相同,但效率相差很多。
(1) 在每一次循环中,都要先将string类型转换为stringbuffer类型,然后将‘*’追加进去,然后再调用tostring()方法,转换为string类型,效率很低。
(2) 在没次循环中,都只是调用原来的那个stringbuffer对象,没有创建新的对象,所以效率比较高。
分享到:
相关推荐
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候...
在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、StringBuffer和StringBuilder进行深入分析,了解它们之间...
在Java编程语言中,`String` 和 `StringBuffer` 都是非常重要的类,它们用于处理字符串数据。虽然它们都实现了字符串操作的功能,但它们之间存在一些重要的区别,这些区别主要体现在性能、线程安全以及可变性等方面...
在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,它们之间存在一些重要的区别,主要涉及到性能和线程安全性。 首先,`String`类代表的是字符串常量,一旦创建,其内容就不能改变。...
在Java编程语言中,String类和StringBuffer类是处理字符串的两种主要方式,它们各自有不同的特性和适用场景。理解二者的区别对于编写高效、优化的代码至关重要。 1. **String类**: - **不可变性**:String类的...
综上所述,这份Java基础String类选择题练习题主要覆盖了String和StringBuffer类的基础概念、基本操作方法以及它们之间的区别等内容。通过这些练习题,学习者可以更好地理解和掌握这两个类的使用方法,为实际编程工作...
包装类Date类、Calendar类DateFormat类
在Java编程语言中,`String`和`StringBuffer`都是用来表示和操作字符串的重要类,但它们在性能和使用场景上有显著的区别。 首先,`String`类是不可变的,这意味着一旦创建了一个`String`对象,它的内容就不能改变。...
在Java编程语言中,`String`与`StringBuffer`是两个重要的字符串处理类,它们各自具有独特的特性和用途,尤其在面试或笔试中常被提及作为考察应聘者对Java基础知识掌握程度的重要知识点。 ### `String`类:不可变性...
### StringBuffer与String的区别详解 #### 一、概念与特性 **String** 是 Java 中一个不可变的类,代表了字符序列。一旦一个 String 对象被创建后,其内容就不能被改变。这使得 String 类非常适合用来表示常量或者...
在Java编程语言中,`String`和`StringBuffer`都是用来表示和操作字符串的重要类,但它们在使用场景和性能上有显著的区别。了解这些差异对于编写高效、优化的代码至关重要。 首先,`String`类是不可变的。这意味着...
最后,让我们总结一下 Java 中 String, StringBuffer 与 StringBuilder 三种字符串类型的区别和用法。String 类型是不可变的对象,性能不好,适合不需要修改的字符串对象。StringBuffer 类型是可变的对象,性能好,...
Java中String和StringBuffer的区别实例详解 Java中String和StringBuffer都是用来存储字符串的对象,但是它们之间有着很大的区别。下面我们来详细介绍Java中String和StringBuffer的区别实例详解。 首先,String是不...
在Java编程语言中,`String`和`StringBuffer`是用来处理文本字符串的两种不同类,它们各有特点并适用于不同的场景。理解它们之间的区别对于优化代码性能至关重要。 首先,`String`类代表的是不可变的字符串。这意味...
在 Java 中,String, StringBuffer 和 StringBuilder 三个类都是用于字符操作的,但它们之间有着很大的区别。 首先,String 是不可变类,意味着一旦创建了 String 对象,就不能修改它的值。每次对 String 对象的...
### Java中的String、StringBuffer和Math类 #### String类详解 **String类**在Java中扮演着极其重要的角色,主要用于处理不可变的字符序列。它不仅功能强大而且使用广泛,几乎所有的Java应用程序都会涉及到字符串...
Java中字符数组、String类、StringBuffer三者之间相互转换 Java语言中,字符数组、String类、StringBuffer三者之间的相互转换是一个非常重要的知识点。在实际开发中,我们经常需要在这三者之间进行转换,以满足不同...
在Java编程语言中,String和StringBuffer类都用于处理字符串,但它们在处理字符串拼接时有着显著的区别。本文将详细解析这两个类在拼接字符串时的行为差异。 首先,我们来了解一下String类。String对象在Java中是不...
String、StringBuffer 和 StringBuilder 是 Java 语言中三种不同类型的字符串处理方式,它们之间存在着明显的性能和线程安全性差异。 String String 类型是不可变的对象,每次对 String 对象进行改变时都会生成一...