15.字符串-String
15.1 知识点
字符串声明
// 直接赋值字符串,注意:如果字符串相同,那么它们指向同一实体,在公共内存区域
String s1 = "A韬老狮A";
String s2 = "A韬老狮A";
// 使用new String,注意:使用new,即使字符串相同也是不同实体
String s3 = new String("韬老狮");
String s4 = new String("韬老狮");
char[] chars = {'a', 'b', 'c'};
String s5 = new String(chars);
System.out.println(s5);//abc
字符串拼接
// Java中字符串拼接规则和C#中相同,通过+好即可拼接
// 拼接时并不是修改原String,而会生成新的String,和C#中规则相同
// s1 = s1 + "123" + 1 + 1.2f;
// System.out.println(s1);
String中常用方法
判断字符串是否相等
Java中没有运算符重载,所以==是用于判断引用地址。
if (s1 == s2)
{
System.out.println("s1引用和s2引用地址指向一个空间");// 可以打印
}
if (s3 == s4)
{
System.out.println("s3引用和s4引用地址指向一个空间");
}
else
{
System.out.println("s3引用和s4引用地址不同");// 打印这个
}
// String之间进行判断,使用equals方法,还有一个不区分大小写的equalsIgnoreCase方法
if (s3.equals(s4))
{
System.out.println("s3和s4的字符串相等");
}
String s6 = new String("ABC");
String s7 = new String("abc");
if (s6.equalsIgnoreCase(s7))
{
System.out.println("忽略大小写的判断字符串是否相等");// 可以打印
}
其他常用方法
// 长度 int length()
System.out.println(s1.length());//5
// 正向查找 int indexOf(String s)
System.out.println(s1.indexOf("A"));//0
// 反向查找 int lastIndexOf(String s)
System.out.println(s1.lastIndexOf("A"));//4
// 获取指定索引处字符 char charAt(int i)
System.out.println(s1.charAt(1));//韬
// 获取子字符串 String substring(int beginIndex),string substring(int beginIndex, int endIndex)
System.out.println(s1.substring(2));//老狮A
System.out.println(s1.substring(2, 4));//老狮
// 去除首尾空格 String trim()
String s33 = " 1231 23123 ";
System.out.println(s33);// 1231 23123
System.out.println(s33.trim());//1231 23123
// 字符串替换 String replace(target, replacement)
System.out.println(s33.replace('1', 'A'));// A23A 23A23
// 判断字符串开始和结尾 boolean startsWith(String str), boolean endsWith(String str)
String s34 = "222333.txt";
System.out.println(s34.startsWith("223"));//false
System.out.println(s34.endsWith(".txt"));//true
// 大小写转换 大转小 String toLowerCase(), 小转大 String toUpperCase()
String s35 = "AAAABBB";
System.out.println(s35.toLowerCase());//aaaabbb
String s36 = "aaAAbbBB";
System.out.println(s35.toUpperCase());//AAAABBB
// 字符串分割 String[] split(String sign)
String s37 = "123,345,678,123";
String[] strs = s37.split(",");
for (String str : strs)
{
System.out.println(str);
// 123
// 345
// 678
// 123
}
// 字符串格式化 String format(String, Object...)
// %b、%B:boolean类型格式化符号
// %s、%S:String类型格式化符号
// %c、%C:char类型格式化符号
// %d:十进制数格式化符号
// %o:八进制数格式化符号
// %x、%X:十六进制数格式化符号
// %e:十进制数的科学计数法格式化符号
// %tF:年-月-日 时间格式
// %tD:月/日/年 时间格式
// %tc:全部日期和时间信息
// %tr:时:分:秒 PM(AM) 时间格式
// %tT:时:分:秒 24小时制 时间格式
// %tR:时:分 24小时制 时间格式
boolean b = true;
Date date = new Date();
String s = String.format("%tT", date);
System.out.println(s);//14:24:30
总结
Java中String在使用上和C#类似,但是需要注意以下两点区别:
- 直接赋值字符串,如果字符串相同,则指向同一引用; new String,即使字符串相同引用也不同。
- Java中字符串比较使用equals,用==号是比较的引用地址。
15.2 知识点代码
import java.util.Date;
public class Lesson15_字符串_String
{
public static void main(String[] args)
{
//知识点1:字符串声明
//1.直接赋值字符串,注意:如果字符串相同,那么他们指向同一实体,在公共内存区域
String s1 = "A韬老狮A";
String s2 = "A韬老狮A";
//2.new String,注意:使用new,即使字符串相同也是不同实体
String s3 = new String("韬老狮");
String s4 = new String("韬老狮");
char[] chars = {'a', 'b', 'c'};
String s5 = new String(chars);
System.out.println(s5);//abc
//知识点2:字符串拼接
//Java中字符串拼接规则和C#中相同,通过+好即可拼接
//拼接时并不是修改原String,而会生成新的String,和C#中规则相同
//s1 = s1 + "123" + 1 + 1.2f;
//System.out.println(s1);
//知识点3:String中常用方法
//1.判断字符串是否相等!!!!!
// Java中没有运算符重载,所以==是用于判断引用地址
if (s1 == s2)
{
System.out.println("s1引用和s2引用地址指向一个空间");//可以打印
}
if (s3 == s4)
{
System.out.println("s3引用和s4引用地址指向一个空间");
}
else
{
System.out.println("s3引用和s4引用地址不同");//打印这个
}
// String之间进行判断,使用equals方法,还有一个不区分大小写的equalsIgnoreCase方法
if (s3.equals(s4))
{
System.out.println("s3和s4的字符串相等");
}
String s6 = new String("ABC");
String s7 = new String("abc");
if (s6.equalsIgnoreCase(s7))
{
System.out.println("忽略大小写的判断字符串是否相等");//可以打印
}
//2.长度 int length()
System.out.println(s1.length());//5
//3.正向查找 int indexOf(String s)
System.out.println(s1.indexOf("A"));//0
//4.反向查找 int lastIndexOf(String s)
System.out.println(s1.lastIndexOf("A"));//4
//5.获取指定索引处字符 char charAt(int i)
System.out.println(s1.charAt(1));//韬
//6.获取子字符串 String substring(int beginIndex),string substring(int beginIndex, int endIndex)
System.out.println(s1.substring(2));//老狮A
System.out.println(s1.substring(2, 4));//老狮
//7.去除首尾空格 String trim()
String s33 = " 1231 23123 ";
System.out.println(s33);// 1231 23123
System.out.println(s33.trim());//1231 23123
//8.字符串替换 String replace(target, replacement)
System.out.println(s33.replace('1', 'A'));// A23A 23A23
//9.判断字符串开始和结尾 boolean startsWith(String str), boolean endsWith(String str)
String s34 = "222333.txt";
System.out.println(s34.startsWith("223"));//false
System.out.println(s34.endsWith(".txt"));//true
//10.大小写转换 大转小 String toLowerCase(), 小转大 String toUpperCase()
String s35 = "AAAABBB";
System.out.println(s35.toLowerCase());//aaaabbb
String s36 = "aaAAbbBB";
System.out.println(s35.toUpperCase());//AAAABBB
//11.字符串分割 String[] split(String sign)
String s37 = "123,345,678,123";
String[] strs = s37.split(",");
for (String str : strs)
{
System.out.println(str);
// 123
// 345
// 678
// 123
}
//12.字符串格式化 String format(String, Object...)
// %b、%B:boolean类型格式化符号
// %s、%S:String类型格式化符号
// %c、%C:char类型格式化符号
// %d:十进制数格式化符号
// %o:八进制数格式化符号
// %x、%X:十六进制数格式化符号
// %e:十进制数的科学计数法格式化符号
// %tF:年-月-日 时间格式
// %tD:月/日/年 时间格式
// %tc:全部日期和时间信息
// %tr:时:分:秒 PM(AM) 时间格式
// %tT:时:分:秒 24小时制 时间格式
// %tR:时:分 24小时制 时间格式
boolean b = true;
Date date = new Date();
String s = String.format("%tT", date);
System.out.println(s);//14:24:30
//总结
//Java中String在使用上和C#类似
//但是需要注意以下两点区别
//1.直接赋值字符串,如果字符串相同,则指向同一引用;new String,即使字符串相同引用也不同
//2.Java中字符串比较使用equals,用==号是比较的引用地址
}
}
15.3 练习题
请说明下面代码的问题,并给出解决问题的方案
String str1 = new String("123");
String str2 = new String("123");
if(str1 == str2)
System.out.println("字符串相同");
Java中判断字符串内容是否相等不能使用==,因为Java中没有运算符重载。值类型使用==时,判断值是否相等。引用类型使用==时,判断引用地址是否相等。而String是引用类型,所以==判断String只能判断引用地址是否相等,在此处不能用于判断字符串内容。我们需要使用equals方法来判断字符串内容是否相等。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com