public class Application {
public static void main(String[] args) {
// String 类使用final 修饰,不能被继承
// 分配在常量区
String t1 = "hello";
// 分配在堆上
String t2 = new String("hello");
System.out.println("值比较" + t1.equals(t2));
String t3 = "hello word hello java";
// 判断字符串是否以XXX开始
System.out.println(t3.startsWith("hello"));
// 判断字符串是否以XX结尾
System.out.println(t3.endsWith("java"));
// 清楚字符串前后的空白字符(开头和结尾的,中间的处理不掉)
String t4 = " sdf sdf sdss ss ";
System.out.println(t4.trim());
// 替换字符串中的指定字符
System.out.println(t4.replace(" ", "1"));
// 替换成空字符串就会消除空格
System.out.println(t4.replace(" ", ""));
int index1 = t3.indexOf("hello");// 表示首次出现的位置
int index2 = t3.indexOf("Java");// -1 表示不存在
int index3 = t3.indexOf("hadoop");
int index4 = t3.lastIndexOf("hello");// 最近出现的位置
System.out.println(index1 + " " + index2 + " " + index3 + " " + index4);
// 字符串截取
String t3SubString1 = t3.substring(5);// 从5 到最后
String t3SubString2 = t3.substring(6, 10);// 从6到10,不包含10
String t3SubString3 = t3.substring(6, 16);
System.out.println(t3SubString1);
System.out.println(t3SubString2);
System.out.println(t3SubString3);
// 字符串和char[] 的相互转换
char[] t3Chars = t3.toCharArray();
// 获取字符串中的每一个字符
for (char c : t3Chars) {
System.out.print(c + " ");
}
// char[]转 String
char[] t5Chars = new char[] { 'z', 'h', 'i', 'y', 'o', 'u' };
String t5 = new String(t5Chars);
System.out.println("\n" + t5);
// 按照指定字符,拆分字符串
// String[] t3Arrays = t3.split(" ");//按照空格拆分
String[] t3Arrays = t3.split("hello");// 按照hello拆分
for (String s : t3Arrays) {
System.out.println(s);
}
// 字符串拼接
// 使用+拼接,不推荐,每加一次都会创建一个新的字符串
// 比较消耗内存
String t6 = t3 + t4 + t5;
// 推荐使用 StringBuffer 或者 StringBuilder,使用append的方法拼接的
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(t3);
stringBuffer.append(t4);
stringBuffer.append(t5);
System.out.println(stringBuffer);
String t7 = stringBuffer.toString();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(t3);
stringBuilder.append(t4);
stringBuilder.append(t5);
System.out.println(stringBuilder);
String t8 = stringBuilder.toString();
// StringBulder 相对较快,线程不安全
// stringBuffer 相对较慢,线程安全
//判断一个字符串是否对称(回文)
//上海自来水来自海上
System.out.println(isSymmetrical("上海自来水来自海上"));
System.out.println(isSymmetrical("上海自来水来自于海上"));
//计算 t11在 t10 中出现了多少次
String t10 = "ABBABABAB";
String t11 = "BA";
System.out.println(timeOf(t10,t11));
}
/**
* 判断字符串是否对称
* @param str 需要判断的字符串
* @return 对称返回 true ,否则返回false
*/
public static boolean isSymmetrical(String str) {
//1、定义变量 表示判断结果
boolean flag = true;//表示对称
//2、String 转 char[]
char[] strChars = str.toCharArray();
//2、首位比较 length / 2 次
for(int i = 0;i < strChars.length / 2;i ++){
char a = strChars[i];//整数第i个字符
char b = strChars[strChars.length - 1 - i];//倒数第i个字符
//4、比较a 和 b,如果相同下一组,如果不想沟通循环返回 false
if(a != b) {
flag = false;//总覅出家门你滴哦车门
break;
}
}
return flag;//5、返回判断结果
}
/**
* target 在 source 中出现了多少次
* @param source ABBABABAB
* @param target BA
* @return 出现的次数,如果没有返回 0
*/
public static int timeOf(String source,String target) {
int time = 0;//出现次数
int index = -1;//target的索引
while((index = source.indexOf(target)) != -1) {
//只要 source 包含 target 就继续循环,判断后续内容是否包含 target
time++;//出现次数+1
//截取出剩余的内容,起始位置 = index + 长度
source = source.substring(index + target.length());
}
return time;//返回的次数
}
}
Java String类型
最新推荐文章于 2023-03-23 14:12:37 发布