* 通过new创建的字符串对象,没一次new都会申请一个内存空间,虽然内容相同,但是地址值不同 char[] ch = {'a','b','c'};
* String s1 = new String(ch); String s2 = new String(ch);
* 上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容相同的
*
* 以""方式给出的字符串,只要字符串序列相同(顺序和大小写),无论在程序代码中出现几次, JVM都会值建立一个String对象,并在字符串池中维护
* String s3 = "abc"; String s4 = "abc";
* 上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考;
* 第二行则让s4直接参考字符串池中的String对象,也就是说他们本质上是同一个对象
1.倒序输出字符串
2.给一个字符串换,判断该字符串中是否包含某个子串。如果包含,求子串的所有出现位置。
(如:"abcd23abcd34bcd"中,"bc"子串的出现位置)
3.判断字符串是否是回文数
4.将驼峰字符串转化为下划线字符串
5.给定一个字符串数组,按照字典顺序[abcdefg……],进行大小写排序
题目1: 倒序输出字符串
输出结果:
public static void main(String[] args) {
//创建一个字符串
String s = "abcdefg";
//接收倒叙字符串
String x = "";
//用toCharArray()方法将此字符串转换为新的字符数组
char[] charArray = s.toCharArray();
//倒序循环便利出新数组的每一个索引值上的值
for (int i = charArray.length - 1; i >= 0; i--) {
x = x + charArray[i];
}
//输出
System.out.println(x);
}
题目2:给一个字符串换,判断该字符串中是否包含某个子串。如果包含,求子串的所有出现位置。
(如:"abcd23abcd34bcd"中,"bc"子串的出现位置)
输出结果:
public class Opp1 {
static // 初始定义的字符串
String arr = "abcd23abcd34bcd";
public static int Opp1(String str, String key) {
// 定义计时器
int count = 0;
// 定义变量,保存indexOf查找后的索引结果
int index = 0;
// 开始循环找,条件,indexOf==-1 字符串没了
// 盘判定所找的字符是否在字符串中
int indexNum = 0;
while ((index = str.indexOf(key)) != -1) {
count++;
// 获取到的索引,再和字符串长度求和,截取字符串
str = str.substring(index + key.length());
// 获取截取的字符串中的字符最后一个字母所在的下标
indexNum += (index + key.length());
// 截取的字符串中包含bc字符串,所以需要减去bc字符串的长度
System.out.println("第" + count + "查找“bc”出现的位置是:" + (indexNum - key.length()));
}
return count;
}
public static void main(String[] args) {
System.out.println("bc在字符串:" + arr + "中出现的次数是:" + Opp1(arr, "bc"));
}
}
题目3:判断字符串是否是回文数
输出结果:
package com.dodoke.stringObj.string;
import java.util.Scanner;
public class Opp2 {
public boolean sPalindrome(String x) {
//将输入的字符串使用toCharArray()用数组arr接收
char[] arr = x.toCharArray();
//设置数组开头
int top = 0;
//设置数组结尾长度减一
int end = arr.length-1;
//非法输入判定
if(x.equals("") || x.equals(null))
return false;
//判定数组开头和数组结尾是否不相同
while(top < end){
if(arr[top++] != arr[end--])
return false;
}
return true;
}
public static void main(String[] args){
Opp2 opp = new Opp2();
//用Scanner接收键盘输入字符
Scanner in = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//nextLine()方法将回车视为结束字符,当遇见回车时,会读取回车键之前这一行所有的字符
String A = in.nextLine();
if(opp.sPalindrome(A))
System.out.println("输入字符串是回文字符串");
else
System.out.println("输入字符串不是回文字符串");
}
}
题目4: 将驼峰字符串转化为下划线字符串
输出结果:
package com.dodoke.stringObj.string;
public class Opp3 {
public static void main(String[] args) {
//创建驼峰命名字符串
String arr = new String("getElementById");
//使用replaceAll()方法将正则表达式判定的大写字母转化为下标符号
String opp = arr.replaceAll("[A-Z]", "_");
//输出
System.out.println(opp);
}
}
题目5:给定一个字符串数组,按照字典顺序[abcdefg……],进行大小写排序
输出结果: