Java的基本程序设计结构(字符串详解)

五、字符串

1、子串

public class Qaz
{
	public static void main(String[] args)
	{
		String greeting="Hello";
		String s=greeting.substring(0,3);
		System.out.print.ln(s);
	}
}

输出结果为:
Hel
(0,3)中的0,代表从第一个开始。3-0=3,代表长度为3。

2、拼接

Java语言允许使用+号连接两个字符串。

public class Qaz
{
	public static void main(String[] args)
	{
		String a="asdf";
		String b="ghjkl";
		String c=a+b;
		System.out.println(c);
	}
	
}
public class Qaz
{
	public static void main(String[] args)
	{
		String a="asdf";
		String b="ghjkl";
		String c=a+b;
		String d=c+"123";
		System.out.println(c);
		System.out.println(d);
	}
	
}   

输出结果为:
asdfghjkl
asdfghjkl123

3、 不可变字符串

public class Qaz
{
	public static void main(String[] args)
	{
		String greeting="Hello";
		greeting=greeting.substring(0,3)+"p!";
		System.out.println(greeting);
	}
}

输出结果为:
Help!
String类没有提供用于修改字符串的方法。例如将greeting的内容由“Hello”修改为“Help!”
不能直接将“lo”修改为“p“和”!“。
不可变字符的一个优点:编译器可以让字符串共享。

public class Qaz
{
	public static void main(String[] args)
	{
		String a="abc";
		String b="ABC";
		String c=a+b;
		String d=a;
		String a=a+123;
		System.out.println(a);
		System.out.println(c);
		System.out.println(d);
	}
}

输出结果为:
abc123
abcABC
abc
在这里插入图片描述
String类的a,b只存放地址存放在栈中,各自内容存放在常量池中。把a,b拼接为c,c再存放在另一个位置,d=a后,d共享a的存放地址,修改a后,a重新调用一个存储地址,但不影响d。

4、 检测字符串是否相等

equals:在字符串中时比较值是否相等(其他类型比较的时地址)

public class Qaz
{
	public static void main(String[] args)
	{
		String s1="qwe";
		String s2="qwe";
		String s3=new String("qwe");
		String s4="qwertyui".substring(0,3);
		String s5=new String("qwe");
		String s6=s3;
		String s7=s6;
		s6=new String();
		System.out.println(s1==s2);
		System.out.println(s1==s3);
		System.out.println(s1==s4);
		System.out.println(s3==s5);
		System.out.println(s3==s6);
		System.out.println(s3==s7);
		
	}
}

输出结果为:
true
false
false
false
false
true

  • s2和s1值相同,所以共享一个地址。
  • s3使用new String(“qwe”),值和s1相同,地址不同。
  • s4是对s1的修改另外存放,地址不同。
  • s5同样使用new String(“qwe”),和s3分别存放不同的地址。
  • s6=s3;s7=s6;s3,s6,s7共享一个地址,使用s6=new String()后,s6和s3地址不同,但不影响s7.
public class Qaz
{
	public static void main(String[] args)
	{
		String s1="qwe";
		String s2="qwe";
		String s3=new String("qwe");
		String s4="qwertyui".substring(0,3);
		String s5=new String("qwe");
		String s6=s3;
		String s7=s6;
		s6=new String();
		System.out.println(s1.equals(s2));
		System.out.println(s1.equals(s3));
		System.out.println(s1.equals(s4));
		System.out.println(s3.equals(s5));
		System.out.println(s3.equals(s6));
		System.out.println(s3.equals(s7));
		
	}
}

输出结果为:
true
true
true
true
false
true
s6=new String();s6的值发生变化,所以输出结果为false。
下面链接是Java中的引用类型概念

5、空串和Null串

  • 空串为空,但是有地址;
  • null无地址

6、String API

常用的有以下几个:

  • int compareTo(String other)
    按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之后,返回一个整数;如果两个字符串相等,返回0。
  • boolean equals(Object other)
    如果字符串与other相等,返回true;
  • boolean starsWith(String prefix)
  • boolean endsWith(String suffix)
    如果字符串以suffix开头或结尾,则返回true。
  • int length()
    返回字符串的长度。
  • String replace(CharSequence oldString,CharSquence newString)
    返回一个新字符串。这个字符串用newString代替原始字符串中所有的oldString。可以用- String或StringBuilder对象作为CharSequence参数。
  • String toLowerCase( )
  • String toUpperCase( )
    返回一个新的字符串。这个字符串将原始字符串中的大写字母改为小写,或者将原始字符串的所有小写字母改成了大写字母。
  • String trim( )
    返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值