/*字符串:字符串就是一系列字符的序列。在java语言中字符串是一对双引号("")括起来的字符序列
声明:字符串常量 与 字符常量不同,字符常量是用单引号(’)括起来的字符,而字符串常量是用双引号(")括起来的字符序列
声明字符串常量,分为对象的声明与对象的创建两步,这两步可以分成2个独立的语句,也可以在一个语句中完成
*/
//格式1:
String 变量名
变量名=new String(“字符串”);
//例如:
String s;//声明字符串型引用变量s,此时s的值为null
s= new String("Nice to see you ");//在堆内存中分配空间,并将s指向该字符串首地址
//在上例中,第一个语句之声明了字符串引用变量s,此时s的值为null,第二个语句则在堆内存中分配了内存空间,并将s指向了字符串的首地址
//格式2:
String s = new String("Nice to see you ");
//格式3:
//此种方法较为特殊,方法如下,直接利用双引号括起来的字符串为新建的String对象赋值,即在声明字符串变量时,直接初始化
如下:
String s = "Nice to see you "
//因为字符串为引用型变量,所以其存储方式与数组的存储方式基本相同
程序中可以用赋值运算符为字符串变量赋值,除此之外,Java语言的定义"+"运算符可用于2个字符串的连接操作
如下:
str = "Nice to see you " + "Mr. F"
//如果字符串与其他类型的变量进行"+"运算,系统自动将其他类型的数据转换为字符串类型:
如下:
int e=5;
String s = “e=” + e //s的值为’e=5’
//利用String类创建字符串变量,一旦被初始化,它的值和所分配的内存内容就不可再改变,如果要改变它的值,他就会产生一个新的字符串
如下:
Sting str1 = “Java”;
Str1 =str1+ “Good”;
//以上2行代码解释如下:
表面看起来像是一个简单的字符串重新赋值,实际上在程序的解释过程中却不是这样的;程序首先产生str1的一个字符串对象,并在内存中申请了一段空间,由于发现又需要重新赋值,在原来的空间已经不可能再追加新的内容,那么系统不得不将这个对象放弃,再重新生成第二个新的对象str1并重新申请了一个新的内存空间,虽然str1的内存地址(句柄)是同一个,但对象已经不再是同一个了
二、String类的常用方法
Java语言为String类定义了许多方法,可使用如下格式,调用Java语言定义的方法
如下:
字符串变量名.方法名();
演示程序如下:
程序要求:判断回文字符串
程序解释:
回文是一种"从前往后读"和"从后往前读"都相同的字符串,例如:“rotor”,在本例中,将会使用到两种算法来判断会回文字符串。
在程序中对两个字符串进行比较时,会使用关系运算符"==",而比较两个字符串时,需使用equals()方法。
代码如下:
//filename huiwen.java
public class huiwen
{
public static void main(String[] args)
{
String str = "rotor";
int e=0,n;
boolean yn=true;
if(args.length>0)
str = args[0];
System.out.println("str=" + str);
n = str.length();
char sChar,eChar;
while(yn && (i<n/2)) //算法1
{
sChar = str.char.At(e);//返回字符串str正数第i+1个位置的字符
eChar = str.char.At(n-i-1);//返回字符串str倒数第i+1个位置的字符
System.out.println("sChar="+sChar+" eChar="+eChar);
if(sChar == eChar)
i++;
else
yn = false;
}
System.out.println("算法1:"+yn);
String temp = "",sub1="";//算法2
for(i=1;i<n;i++)
{
sub1=str.substring(i,i+1);//将str的第i+1个字符截取下来赋给sub1
temp=sub1+temp;
}
System.out.println("temp="+temp);
System.out.println("算法2:"+temp.equals(temp));//判断str与temp是否相等
}
}