在本小节中,提供了一些java中的字符串程序,以帮助您提高编码技巧。请尝试自己解决这些问题再看答案,以便更好地学习。
在这些示例中也尝试使用java中引入的所有最新功能,例如Stream
,lambda
表达式,功能接口等。
1. 如何在String中获取不同的字符及其计数?
------ ------------------ ------ --------------- ------ -------------- ------ ---------------------------- ------ ----- ------------------ - ------ ------ ---- ------------- ----- - ----------------------------------- -------------------------------------- ------------------------------- ------ - -- ------ - ------- ------ ---- ---------------------------------- ------ - ----------------- ----------- ----------------- - --- ------------------ -- ------ ---------- --- ----- - - -------------------- -------------------------- -- -------------- -------------------------------------- -- --------------------------------- --------------------- ---- - ------------------------ ----- ------ -------------------------------- ----------------------- ----- -------------------------- -- --------------- -------------------------------------- - -
2. 编写一个java程序来反转String
有很多方法可以反转String,一些常见的是:
- 使用
StringBuilder
/StringBuffer
类的reverse()
方法; - 使用
char
/byte
数组并反向遍历并填充结果字符串;
但是,如果不确定输入String内容,应该使用StringBuilder
内置的reverse()
方法。因为使用char
和byte
数组可能会产生不需要的结果。
------ ----- -------------- - ------ ------ ---- ------------- ----- - -------------------------- ------------------------------ --------- ----- - ------- ------ ---- ------------------------- ------ - ------------- -- - --- --------------------- ------ ------ - ------------------------ --------------------------- - -
3. 如何检查字符串是否是回文?
回文串是反向串也是相同的串。所以可以反转输入字符串并检查两个字符串是否相等。或者可以使用String charAt(int index)
方法来检查回文串。
------ ----- ---------------- - ------ ------ ---- ------------- ----- - ----------------------------- ------------------------------- ------------------------------- - ------- ------ ---- ---------------------------- ------ - ------- ------ - ----- --- ------ - --------------- ------- ---- - ---- --------- ---- - ------------------ -- ------------------------- - ------ - ------ ------ - - ------------------------ - - -- ---------- - ---------- - -
4. 如何删除字符串中所有出现的给定字符?
String
类中没有remove
函数,但在这种情况下可以使用replaceAll()
。这是一个简单的程序,演示了如何做到这一点。
------ ----- -------------------- - ------ ------ ---- ------------- ----- - ---------------------------------- ----- --------------------------- ----- ----------------------------- ----- - ------- ------ ---- --------------------------- ------ ---- -- - ------ ------ - ----------------------------------- ---- --------------------------- - -
5. 如何以编程方式证明String是不可变的?
知道String在java中是不可变的,但新开发人员仍然对此感到困惑。试着理解这种混乱的原因。
------ -- - ------- -- - ---------
在上面的代码片段中,s1
值已经改变,它是一个String
对象。那么怎么能说String是不可变的呢?
要理解的最重要的一点是如何在java中创建字符串。当使用字符串文字创建String时,它不会更改原始String
的值。它在字符串池中创建一个新的String并更改该变量的引用。所以原始字符串值永远不会改变,这就是字符串不可变的原因。
------ ----- ---------------------- - ------ ------ ---- ------------- ----- - ------ -- - ------- ------ -- - --- --------------------- -- ---- -- - --------- --------------------- -- ---- ----------------------- - -
6. 编写一个程序来计算字符串中的单词数量?
这个程序的简单解决方案似乎是input.split(" ").length
,但是如果字符串没有正确格式化并且它包含前导和尾随空格,重复多个空格和制表符,这将不起作用。
幸运的是,String split()
函数将正则表达式作为参数,可以使用它来计算字符串中的单词数。
------ ----- -------------------------- - ------ ------ ---- ------------- ----- - ---------------------- ---- -- ------ --------------------- ---- ---- -------------- -------------------- ---- -- --- -------- --------- ---- --- - ------- ------ ---- ------------------------- ----- - ------ ----------- - ------------ --- ----- - --------------------- - - - --------------------------------- -------------------------- - -
7. 编写一个程序来检查是否创建了两个具有相同字符的字符串?
首先,必须从输入字符串创建一组字符。然后使用Set equals()方法检查它们是否包含相同的字符。这是一个简单的程序,用于检查是否使用相同的字符创建了两个字符串。
------ -------------- ------ ---------------------------- ------ ----- ---------------------- - ------ ------ ---- ------------- ----- - ----------------------- ------- -------------------------- ------- ------------------------ ------- ---------------------- -------- ------------------------ ------ - ------- ------ ---- ----------------------- --- ------ --- - -------------------- ---- - --------------------- ----- ------ ------------------------------- -------------------- ---- - --------------------- ----- ------ ------------------------------- -------------------------------------- - -
8. 读取两个String用户输入并检查是否第一个包含第二个?
这是一个简单的程序,可以使用String contains()方法来检查指定的字符串是否是此字符串的一部分。但是,需要使用Scanner
类来读取用户输入。
------ ------------------ ------ ----- ----------------------- - ------ ------ ---- ------------- ----- - ------- ------- - --- ------------------- ------------------------- ----- ---------- ------ -- - ------------------- ------------------------- ------ ---------- ------ -- - ------------------- ---------------- ------- ------ - --------------------------- ---- ----------------------- -------- ------ - ---------- - ------- ------ ------- ------------------------------ ------- ------ ---------- - ------- ------ - ------ ------ - --------------------------- ------ ------- - -
执行上面示例代码,得到以下结果 -
----- ----- ------- --- ----- ------ ------- -- --- -------- -- - ----
9. 如何在不使用第三个变量的情况下交换两个字符串?
可以使用String substring()方法来完成它。下面是一个简单的演示代码片段:
------ -- - ------ ------ -- - ------ -- - -------------- -- - ---------------------------------------- -- - --------------------------
如果必须写一个函数来做这件事怎么办? 由于String是不可变的,因此方法结束后方法中String引用的值的更改将消失。此外,无法从java中的方法返回多个对象。因此,必须创建一个容器来保存输入字符串,然后在方法中执行上述逻辑。下面的代码显示了如何做到这一点,虽然它可能看起来很复杂,但逻辑与上面相同。
------- --------------------------- ------ ------------------ ------ ----- -------------- - ------ ------ ---- ------------- ----- - --------- --------- - --- ------------ ------- ------- - --- ------------------- ------------------------- ----- ---------- --------------------------------------------- ------------------------- ------ ---------- ---------------------------------------------- ---------------- ------------------------------ --------- - ----------------------- ------------------------------ - ------- ------ --------- --------------------- ---------- - ----------------------------------------------------------------------------------------- ---- - ----- ----------------------------------------------------------------- --------------------------------------------------------------------------- -- ----- ----------------------------------------------------------------------------------------------------- ------ ---------- - - ----- ---------- ------- ------ ------------ ------- ------ ------------- ------ ------ ---------------- - ------ ------------ - ------ ---- --------------------- ------------ - ---------------- - ------------ - ------ ------ ----------------- - ------ ------------- - ------ ---- ---------------------- ------------- - ----------------- - ------------- - --------- ------ ------ ---------- - ------ ------ ------ - ---------------- ------ ------ - --------------- - -
执行上面示例代码,得到以下结果 -
----- ----- ------- ---- ----- ------ ------- ------ ----- ------ - ----- ------ ------ - ------ ----- ------ - ------- ------ ------ - ----
10. 编写一个程序,从输入字符串中找出第一个非重复字符?
参考示例代码
------- --------------------------- ------ -------------------- ------ --------------- ------ ----- -------------------- - ------ ------ ---- ------------- ----- - --------------------------------------------------------------- ------------------------------------------------------- ------------------------------------------------------ - ------- ------ --------- --------------------------------- ------- - ------ ----- - --------------------- --------------------- -------------- - --- -------------------- --- ---- - - -- - ---- ------------- ---- - ---- - - --------- -- ---------------------------- --------- --- ---- - - - - -- - ---- ------------- ---- - -- -- -- --------- - -- ----- ----- ---------------------- ------ - ---- -- -- -- ------------ - -- - -- -- ----- ----- ---- --- ------ -- - - - ------ ----- - -