java的String类的常用API详解
admin
2024-04-07 20:42:03
0

模块一:基本语法

前言:字符串创建对象创建字符串对象,需要查看API中字符串的构造方法。提供了多种创建对象的方式。

1、字符串创建

(1) 直接写字符串字面值 String s5 = “abcd”;
(2) 利用字节数组创建字符串对象
byte[] bs = {97, 98, 99, 100}; //ASCII编码表
String s1 = new String(bs);
System.out.println(s1);
打印结果:abcd
(3) 利用字节数组的一部分创建字符串对象
String s2 = new String(bs, 1, 2);
System.out.println(s2);
打印结果:bc
(4)利用字符数组创建字符串对象
char[] chs = {‘a’, ‘b’, ‘c’,‘d’};
String s3 = new String(chs);
System.out.println(s3);
打印结果:abcd
(5)利用字符数组的一部分创建字符串对象
String s4 = new String(chs, 2, 2)
System.out.println(s4);
打印结果: cd

2、两种字符串的区别

(1)直接写的字符串字面值,在常量池中,它可以被复用

    String s1 = "abc"; //s1存储的值地址0x111String s2 = "abc"; //s2复用s1的地址0x111System.out.println(s1 == s2); //true

(2)使用构造方法创建字符串对象,在堆内存中,每次创建对象都有新的地址值

String s1 = new String("abc"); //s1存储的地址是0x222
String s2 = new String("abc"); //s2存储的地址是0x333
System.out.println(s1 == s2); //false

3、String类方法总结

字符串有很多方法,需要根据需求找到合适的方法进行使用就可以了。 为了更加方便的记忆这些方法,建议对方法进行分类记忆。
判断功能

判断字符串的内容是否相等,不忽略大小写
public boolean equals(Object str)
判断字符串是否相等,忽略大小写
public boolean equalsIgnoreCase(String anotherString)
举例:“HELLO” 和 “hello” 是否相等
判断字符串是否包含某些内容
public boolean contains(CharSequence s)
举例:“helloworld” 是否包含 “world”
判断字符串以什么后缀结尾
public boolean endsWith(String suffix)
举例:“helloworld.java” 是否以 "java"结尾 public boolean
判断字符串以什么前缀开头
startsWith(String prefix)
举例:“helloworld.java” 是否以 "hello"结开头

获取功能

获取字符串中某一个索引位置的字符
public char charAt(int index) 
获取字符串的长度 
public int length()

转换功能

将此字符串转换为一个新的字符数组。
public char[] toCharArray()
将字符串转换为小写字母
public String toLowerCase()
将字符串转换为大写字母
public String toUpperCase()
把字符串转换为字节数组
public byte[] getBytes()

截取和替换功能
截取字符串的一部分,从指定的索引位置开始一直到末尾

public String substring(int beginIndex)
截取字符串的一部分,从指定的开始位置一直到指定的结束位置(注意:包含头,不包含尾)
public String substring(int beginIndex, int endIndex)
使用新的字符串替换旧的字符串
public String replaceAll(String regex, String replacement)

切割功能

使用指定的字符串开切割字符串,得到一个字符串数组public String[] split(String regex)
注意:如果想要用"."进行切割,必须使用"\\."

StringBuilder类的方法
构造方法

public StringBuilder()
构造一个不带任何字符的字符串容器,其初始容量为 16 个字符。
【注意:容量不够用时,会自动扩容】

public StringBuilder(String str)
构造一个字符串容器,并初始化为指定的字符串内容。

常用方法

往字符串缓冲区(容器),添加任意类型的数据。
public StringBuilder append(任意类型 i)  
获取字符串缓冲区(容器)中,字符的个数public int length()  把字符串缓冲区(容器)中内容反转public StringBuilder reverse()  把字符串缓冲区(容器),转换为字符串
public String toString()

StringJoiner类的方法

(1) 创建一个StringJoiner对象,用指定的分隔符
构造方法 public StringJoiner(String s)

(2) 创建一个StringJoiner对象,用指定的分隔符, 开始符号,结束符号
public StringJoiner(String s,String start, String end)

常用方法
往字符串缓冲区(容器),添加字符串数据。
public StringJoiner add(String i)
获取字符串缓冲区(容器)中,字符的个数
public int length()
把字符串缓冲区(容器),转换为字符串
public String toString()

模块二:应用

1、字符串切割演示
String str = “www itcast cn”;
//使用 “ ” 进行切割
String[] array = str.split(" ");

for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
2、替换字符串中内容
String str = “我的手机号码是:1234345566,有事联系我”;
//替换字符串中的"1234345566" 为 “"
String s = str.replaceAll(“1234345566”, "
”);
System.out.println(s);
3、比较字符串相等

String s1 = “abc”; //s2复用s1的地址0x111
String s2 = new String(“abc”); //s2存储的地址是0x333
System.out.println(s1 == s2); //false,比较地址
System.out.println(s1.equals(s2)); //true,比较内容
原因:String类重写了Object类equals方法,所以使用String类的equals方法时比较的是两个字符串的内容。

4、字符串遍历
直接遍历字符串

String str = "abcdefg";
//快捷键:str.length().fori
//str.length(): 获取str字符串的长度
for(int i=0; i//获取i索引位置的字符char ch = str.charAt(i);System.out.println(ch);
}

把字符串转换为字符数组,再遍历数组

String str = "abcdefg";
//把字符串转换为字符数组
char[] chs = str.toCharArray();
//遍历字符数组
for(int i=0; i< chs.length; i++){char ch = chs[i];System.out.println(ch);
}

5、字符串拼接的练习
(1)使用StringBuilder, 把一个数组元素拼接成一个字符串

int[] array = {1,2,3,4,5};
StringBuilder sb = new StringBuilder("{"); 
//遍历数组, 把元素拼接成一个字符串
for(int i=0; i//判断是否为最后一个元素if(i == array.length-1){sb.append(array[i]); //如果是最后一个元素,不用拼接“,”}else{sb.append(array[i]).append(",");//如果不是最后一个元素,需要用拼接“,”}
}
sb.append("}");
//把StringBuilder转换为字符串
String result = sb.toString();
System.out.println(result);  

(2)使用StringJoiner, 把一个数组元素拼接成一个字符串

int[] array = {1,2,3,4,5};
StringJoiner sj = new StringJoiner(",", "[","]");
//遍历数组, 把元素拼接成一个字符串
for(int i=0; i//array[i]+""  目的是把数组的元素转换为字符串sj.add(array[i]+"");
}
//把StringBuilder转换为字符串
String result = sj.toString();
System.out.println(result);

模块三:经典面试题

(1) 题型1

String s1 = “abc”; String s2 = “a” + “b” + “c”;
//在编译时期,把 “a”+“b”+"c"转换为 “abc”
System.out.println(s1 == s2);
打印结果:true
(2) 题型2
String s3 = “a”;
String s4 = “bc”; String s5 = “abc”;
System.out.println((s3 + s4) == s5);
打印结果:false
结论:(s3+s4)是变量相加,会生成新的字符串

相关内容

热门资讯

武林外传里佟掌柜儿时的好友说的... 武林外传里佟掌柜儿时的好友说的是什么地方的方言?一楼的,是陕西话那为什么和佟掌柜说的不一样?是陕西话...
用英语以春节为题的手抄报 春节... 用英语以春节为题的手抄报 春节英语手抄报小学生春节英语手抄报教程关于春节的英语手抄报怎么画春节英语手...
大学生研发校徽月饼是什么样子的... 大学生研发校徽月饼是什么样子的?大学生研发“校徽月饼”走红 原料取材学校培育作物。陕西大学生研发“彩...
《潜伏》中,晚秋是个什么样的人... 《潜伏》中,晚秋是个什么样的人?结局如何晚秋有着悲惨的命运,一直深爱着孙红蕾,最后孙红蕾在香港执行任...
我爱上了我的小学女同桌,我13... 我爱上了我的小学女同桌,我13岁13岁 好小的年龄呀!暗恋两年也不错,主要是你们太小了,现在你们懂得...
TVB出过一个动画是在讲一些章... TVB出过一个动画是在讲一些章鱼小丸子的故事的叫什么?【是在一个类似放学ICY的节目播的】章鱼小超人...
谁有周建龙版的 有声小说 盗墓... 谁有周建龙版的 有声小说 盗墓笔记 7 8 部 分享下 谢谢盗吧首页吧规+资源,甭找了,就没这东西周...
当你一个人在深夜发呆的时候 会... 当你一个人在深夜发呆的时候 会听什么歌?推荐几首好听的额你喜欢悲伤的还是节奏性强的啊?
搞笑一家人剧情 搞笑一家人剧情尤美喜欢谁?我觉得才开始尤美喜欢允浩,允浩也喜欢尤美,只是尤美误会是她爸爸杀了开成嫂的...
跪求好听的歌! 跪求好听的歌!英文歌 中文歌都要 重在好听多来点啊下个,路口,见圣诞结 爱似水仙你若...
我只会打字,对电脑编程不懂怎么... 我只会打字,对电脑编程不懂怎么办?这没有其他的办法,只有深造你要学习吗?
百听不厌的50首经典老歌推荐 百听不厌的50首经典老歌推荐百听不厌的50首经典老歌推荐:1、后来2、光辉岁月3、鬼迷心窍4、大海5...
关于防溺水的手抄报,自己防溺水... 关于防溺水的手抄报,自己防溺水的卡通图片,各位亲,急用啊!
怪物猎人XX烬灭刃斩龙怎么打 怪物猎人XX烬灭刃斩龙怎么打你问怎么打没意义,各人打法不一样,比如咬尾巴大回旋人家直接滚过去输出,你...
工笔画淡蓝色怎么调 工笔画淡蓝色怎么调哪个?淡蓝色,画什么的有好多种蓝色,你要哪个 你要往哪上色白色加里面的任意一种蓝色...
缅甸富人区女孩,个个貌美有钱,... 缅甸富人区女孩,个个貌美有钱,为什么很难嫁出去?缅甸富人区女孩,个个貌美有钱,很难嫁出去有两个原因。...
我的家园写一篇童话作文 我的家园写一篇童话作文你可以将时间写成魔法师,把你家园写成童话王国,
喜欢一个女生,但我有点胖,不敢... 喜欢一个女生,但我有点胖,不敢表白怎么办?健身或者学点才艺来讨女生开心一边搭讪 ,一边减肥勇敢点吧,...
用世纪、奇迹、创造、幻想、呼风... 用世纪、奇迹、创造、幻想、呼风唤雨、腾云驾雾、潜入深海、中的四个词写几句话21世纪是一个美好的世纪是...
生肖传说升级攻略 生肖传说升级攻略求生肖传说10到30J最快升级方法或攻略,谢谢大家告诉我,回答的好+分家分哦做主线任...