12.String类

2.String类(重重之重)
2.1基本概念

​ java.lang.String类用于描述字符串,可以表示Java程序中的所有字符串字面值,如:“abc”

​ 该类由final关键字修饰,表示不能被继承。

​ 该类描述的字符串内容是个常量,创建后内容不可以改变,因此可以被共享。

​ 如:

String s1="abc";
s1 = "123";   //- 表示改变变量s1的指向而不是指向的内容
2.2 常量值

​ 由于字符串字面值的内容不可以发生改变,因此Java虚拟机会将出现的字符串字面值放入常量池,若下次出现相同的字符串字面值则直接使用池中已有的元素即可,从而提高程序的执行效率,节省了内存空间。

2.3常用的方法(练熟、记住)
  1. 常用的构造方法

    String()使用无参的方式创建空字符串对象,如:“”和null不一样的。
    String(byte[] bytes, int offset, int length)使用数组bytes中从下标offset位置开始的length个字节来构造对象。
    String(byte[] bytes)使用参数指定bytes数组中的所有内容构造字符串对象。
    String(char[] value, int offset, int count)使用数组value中从下标offset位置开始的count个字符来构造对象。
    String(char[] value)使用参数指定value数组中的所有内容构造字符串对象。
    String(String original)根据参数指定的字符串来构造对象。

    笔试题:请问String s1=“”和String s2=null,有区别吗?

    解析:有区别,s1指向明确字符串对象,只是里面没有内容而已;s2没有指向的字符串对象。

package cn.itxdl.day12;

public class TestStringConstructor {

	public static void main(String[] args) {
		// 1.使用String类的无参构造方法构造对象
		String s1 = new String();
		System.out.println("s1 = "+s1);
		
		System.out.println("-------------");
		
		//2.使用byte数组来构造字符串对象
		byte[] bArr = {66,67,68,69,70};
		String s2 = new String(bArr,1,3);
		System.out.println("s2 = "+s2);
		String s3 = new String(bArr);
		System.out.println("s3 = "+s3);
		
		char[] cArr = {'h','e','l','l','o'};
		
		String s4 = new String(cArr);
		System.out.println("s4 = "+s4);
		
		String s5 = new String(cArr,2,3);
		System.out.println("s5 = "+s5);
	}

}

  1. 常用的成员方法

    该类重写了equals(),hashCode(),toString()方法

char charAt(int index)根据参数指定的下标返回对应的单个字符。
int length()用于返回当前字符串的长度。
int compareTo(String anotherString)用于比较调用对象和参数对象的大小关系。
使用调用对象和参数对象中第一个字符起依次做减法运算。
第一个字符能确定大小,则后续字符不用比较。
若第一个字符不能确定大小,则使用下一个对应位置的字符比较大小。到其中一个字符串的所有字符比较完毕后也没有确定大小,则由长度来决定大小。
若当前字符串大则返回正数;若当前字符串小则返回负数;若相等则返回零;
int compareToIgnoreCase(String str)不考虑大小写,也就是’a’和’A’是相等的关系。
boolean contains(CharSequence s)用于判断当前字符串是否包含参数指定的内容。
其中参数是接口类型,因此实参需要传递实现类的对象,而String类就实现了该接口
boolean endsWith(String suffix)判断当前字符串是否以参数指定的内容为结尾。
boolean startsWith(String prefix)判断当前字符串中是否以参数指定的内容为开头。
String toLowerCase()用于将当前字符串中所有字符转换为小写。
String toUpperCase()用于将当前字符串中所有字符转换为大写。
String trim()用于去除当前字符串中两端的空白字符。
package cn.itxdl.day12;

public class TestStringChar {

	public static void main(String[] args) {
		String s1 = new String("helloworld");
		System.out.println(s1.charAt(1)+" "+s1.length());
		
		
		
	}

}

boolean equals(Object anObject)用于比较字符串内容是否相等并返回;
boolean equalsIgnoreCase(String anotherString)用于比较字符串内容是否相等并返回,不考虑大小写,如:'A’和’a’是相等。
byte[] getBytes()用于将当前字符串内容转换为byte数组并返回。
char[] toCharArray()用于将当前字符串内容转换为char数组并返回。
int indexOf(int ch)用于返回当前字符串中参数ch指定的字符第一次出现的下标。
int indexOf(int ch, int fromIndex)用于从fromIndex位置开始查找ch指定的字符。
上述方法若查找失败,则返回-1.
int indexOf(String str)用于查找参数str指定的字符串并返回下标。
int indexOf(String str, int fromIndex)用于从fromIndex位置开始查找。
int lastIndexOf(int ch)用于返回参数ch指定的字符最后一次出现的下标。
int lastIndexOf(int ch, int fromIndex)用于从fromIndex位置开始查找ch指定字符出现的下标,反向搜索的第一次。
int lastIndexOf(String str)用于返回str指定字符串最后一次出现的下标。
int lastIndexOf(String str, int fromIndex)用于从fromIndex位置开始反向搜索的第一次。
String substring(int beginIndex)用于获取当前字符串中从beginIndex位置开始的子字符串并返回。
String substring(int beginIndex, int endIndex)用于获取当前字符串中从beginIndex位置开始到endIndex结尾的子字符串并返回。
package cn.itxdl.day12;

public class TestStringByteChar {

	public static void main(String[] args) {
		String s =new String("Good Morning!");
		
		byte[] barr = s.getBytes();
		char[] carr = s.toCharArray();
		
		for(int i =0;i<barr.length;i++)
		{
			System.out.println("第"+i+"个字符为:"+barr[i]+"="+(char)barr[i]);
		}
		for(int i =0;i<carr.length;i++)
		{
			System.out.println("第"+i+"个字符为:"+carr[i]);
		}
		System.out.println(carr);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MelodyYN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值