之前一直使用String声明一个字符串,不难发现String类定义时单词的首字母大写,所以String本身也是一个类。实例化String对象的两种方式:
1.String name=”小明”;
2.String name = new String(“小明”);
String的内容的比较
实例:使用“==”比较字符串的内容
package com.qwy.datetime;
/**
* @author qwy
* @create 2021-03-19 16:36
**/
public class StringEqualsDemo {
public static void main(String[] args) {
String str1 = "hello";
String str2 = new String("hello");
String str3=str2;
System.out.println("str1==str2→"+(str1==str2));
System.out.println("str1==str3→"+(str1==str3));
System.out.println("str2==str3→"+(str2==str3));
}
}
运行结果:
str1str2→false
str1str3→false
str2==str3→true
实例:使用equals方法比较String的内容
package com.qwy.datetime;
/**
* @author qwy
* @create 2021-03-19 16:36
**/
public class StringEqualsDemo {
public static void main(String[] args) {
String str1 = "hello";
String str2 = new String("hello");
String str3=str2;
System.out.println("str1 equals str2→"+(str1.equals(str2)));
System.out.println("str1 equals str3→"+(str1.equals(str3)));
System.out.println("str2 equals str3→"+(str2.equals(str3)));
}
}
运行结果:
str1 equals str2→true
str1 equals str3→true
str2 equals str3→true
从程序的运行结果可以发现,一个字符串确实可以调用String类中的方法,也就证明了一个字符串就是一个String类的匿名对象。
对于代码 String str1=”hello”;实际上就是把一个在堆内存空间(这里根据JDK不同,而不同,有的版本将字符串放入方法静态区的常量池中)的使用权交给了str1对象,使用这种方式处理字符串还有另外一个好处,就是如果一个字符串已经被一个名称所引用则以后再有相同的字符串声明时,就不会再重新开辟空间,使用已经开辟好的堆内存。
String类中常用的方法
实例
实例操作一:字符串与字符数组的转换
public class StringToCharArrayDemo {
public static void main(String[] args) {
String str = "hello";
char[] c= str.toCharArray();//将字符串转换为字符数组
for (int i = 0; i < c.length; i++) {
//输出字符数组中的每个元素
System.out.print(c[i]+"、\t");
}
System.out.println("");
String str1= new String(c);//将全部的字符数组变为String
System.out.println(str1);
String str2 = new String(c,1,3);//将部分数组转换为String
System.out.println(str2);
}
}
实例操作二:从字符串中取出指定位置的字符
public class StringCharAtDemo {
public static void main(String[] args) {
String str = "hello";
System.out.println(str.charAt(3));
}
}
实例操作三:字符串与byte数组的转换
public class StringByteDemo {
public static void main(String[] args) {
String str = "hello";
byte[] b =str.getBytes();//将字符串转换为byte数组
System.out.println(new String(b));//将全部的byte数组变为字符串
System.out.println(new String(b,1,3));//将部分byte数组变为字符串
}
}
在以后的IO操作中经常会遇到字符串与byte数组或char数组之间的转换操作。
实例操作四:取得一个字符串的长度
public class StringLenthDemo {
public static void main(String[] args) {
String str = "hello";
int len=str.length();//获取字符串的长度
System.out.println(len);
}
}
※length与length()的区别:
在数组操作中,使用length取得数组的长度,但是操作之后没有“()“,而字符串调用的是一个length的方法,只要是方法后面都有一个“()“。
实例操作五:查找一个指定的字符串是否存在
public class StringIndexOfDemo {
public static void main(String[] args) {
String str = "abcdefcgh";
System.out.println(str.indexOf("c"));//返回查找元素的位置
System.out.println(str.indexOf("c",3));//返回查找元素的位置,查找的位置从第4个开始
System.out.println(str.indexOf("j"));//没有查到返回-1
}
}
实例操作六:去掉左右空格
public class StringTrimDemo {
public static void main(String[] args) {
String str = " hello";
System.out.println(str.length());
System.out.println(str);
System.out.println(str.trim());
System.out.println(str.trim().length());
}
}
实例操作七:字符串的截取
public class StringsubStringDemo {
public static void main(String[] args) {
String str = "hello world";
System.out.println(str.substring(6));//从第7个位置开始截取
System.out.println(str.substring(0, 5));//截取0~5个位置的内容
}
}
实例操作八:按照指定的字符串对字符串进行拆分
public class StringSplitDemo {
public static void main(String[] args) {
String str = "hello world";
String[] s= str.split(" ");//按空格对字符串进行拆分,返回字符串数组
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
}
}
实例操作九:字符串的大小写转换
public class StringUpperOrLowerDemo {
public static void main(String[] args) {
String str = "AbCdEf";
String up=str.toUpperCase();
String lo=str.toLowerCase();
System.out.println("转换为大写:"+up);
System.out.println("转换为小写:"+lo);
}
}
实例操作十:判断是否以指定的字符串开头或结尾
public class StringStartsEndsWithDemo {
public static void main(String[] args) {
String str1 = "**HELLO";
String str2= "HELLO**";
if(str1.startsWith("**")){
System.out.println("**HELLO 以**开头");
}
if(str2.endsWith("**")){
System.out.println("HELLO** 以**结尾");
}
}
}
实例操作十一:不区分大小写的字符串比较
public class StringEqualsIgnoreCaseDemo {
public static void main(String[] args) {
String str1="hello";
String str2="HELLO";
if(str1.equals(str2)){
System.out.println("str1.equals(str2)→"+str1.equals(str2));
}else{
System.out.println("str1.equals(str2)→"+str1.equals(str2));
}
if(str1.equalsIgnoreCase(str2)){
//不区分大小写比较两个字符串的大小
System.out.println("str1.equalsIgnoreCase(str2)→"+str1.equalsIgnoreCase(str2));
}else{
System.out.println("str1.equalsIgnoreCase(str2)→"+str1.equalsIgnoreCase(str2));
}
}
}
实例操作十二:将一个指定的字符串替换为其他的字符串
public class StringReplaceDemo {
public static void main(String[] args) {
String str = "hello";
String newstr=str.replaceAll("l", "x");//将一个指定的字符串转换为其他的字符串
System.out.println(newstr);
}
}