StringBuilder可以看成一个容器,创建之后里面的内容是可变的
构建StringBuilder容器---拼接和反转时使用
package com.sstxwd6;
public class StringBuliderDemo {
//创建对象
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("abdcf");
//添加
sb.append(6);
sb.append('i');
sb.append(true);
//反转
sb.reverse();
//获取长度
int length = sb.length();
//请注意:一般来说,new创建出来的对象,在打印时出来的应该是地址值
//但是StringBuilder对象在直接打印后,出来的是属性值
//这是因为StringBuilder是Java自己写好的类,Java在底层对其进行了特殊的处理,使其打印出的是属性值而不是地址值
System.out.println(sb);
System.out.println(length);
//StringBuilder只是一个容器,并不是String类,所以在有必要时,要将其转变为字符串
String str = sb.toString();
System.out.println(str);
}
}
反转字符串
package com.sstxwd6;
import java.util.Scanner;
public class StringBuliderDemo2 {
//判断对称字符串
public static void main(String[] args) {
//键盘先录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
//判断是否是对称字符串,将其反转后进行比较即可
String reversalStr = new StringBuilder(str).reverse().toString();;
if(str.equals(reversalStr)){
System.out.println("该字符串是反转字符串");
}else {
System.out.println("该字符串不是反转字符串");
}
}
}
拼接字符串
package com.sstxwd6;
public class StringBuliderDemo3 {
//定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回
//调用该方法,并在控制台中输出结果
public static void main(String[] args) {
int []arr = {1,2,3,4,5};
String str = arrToStr(arr);
System.out.println(str);
}
public static String arrToStr(int []arr){
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
if (i< arr.length-1){
sb.append(arr[i]);
sb.append(",");
}else {
sb.append(arr[i]);
}
}
String str = sb.append("]").toString();
return str;
}
}
StringJoiner--更便于拼接
StringJoiner可以看成一个容器,创建之后里面的内容是可变的
构造方法
public StringJoiner(间隔符号) 创建一个StringJoiner对象,并指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号) 创建一个StringJoiner对象,并指定拼接时的间隔符号,开始符号,结束符号。
成员方法
package com.sstxwd6;
import java.util.StringJoiner;
public class StringJoinerDemo {
public static void main(String[] args) {
//创建对象
StringJoiner sj = new StringJoiner("--");
//添加元素
sj.add("2689").add("0hbu").add("#$%");
//打印结果
System.out.println(sj);
}
}
package com.sstxwd6;
import java.util.StringJoiner;
public class StringJoinerDemo2 {
public static void main(String[] args) {
//创建对象
StringJoiner sj = new StringJoiner("--","[","]");
//添加元素
sj.add("2689").add("0hbu").add("#$%");
int len = sj.length();
System.out.println(len);// 所有字符的总个数
//变成字符串
String str = sj.toString();
//打印结果
System.out.println(str);
}
}
String------>字符串的类,定义了很多字符串的操作方法
StringBuilder --------> 实现高效拼接和反转字符串
StringJoiner-------->更便于拼接,可以指定拼接时的间隔符号,开始符号,结束符号。
罗马数字的转换
package Test;
import java.util.Scanner;
import java.util.StringJoiner;
public class test1 {
/*转换罗马数字
键盘录入一个字符串,要求1:长度只能小于9;要求2:只能是数字
将内容变成罗马数字
数字0-9的ASCII码表是48-57
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个长度小于9,且元素只能为数字的字符串:");
String str ;
while (true) {
str = sc.next();
boolean flag1 = checkStr1(str);
boolean flag2 = checkStr2(str);
if (flag1&&flag2){
break;
}
System.out.println("字符串不符合输入规则,请重新输入:");
}
System.out.println("正在转换,请您稍等");
//这里没有使用StringBuilder,是因为如果输出没有拼接,结果不容易观看,使用我采用了拼接模式
StringJoiner sj = new StringJoiner(",");
for (int i = 0; i < str.length(); i++) {
sj.add(Convert(str.charAt(i)-48));
}
System.out.println(sj);
}
public static String Convert(int a){
String []arr = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
return arr[a];
}
public static boolean checkStr1(String str){
if (str.length()>9||str.length()<0){
return false;
}else {
return true;
}
}
public static boolean checkStr2(String str){
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)>=48&&str.charAt(i)<=57){
continue;
}else {
return false;
}
}
return true;
}
}
调整字符串
package Test;
public class test2 {
public static void main(String[] args) {
String strA = "abcde";
String strB = "cdeab";
boolean result = check(strA,strB);
System.out.println(result);
}
//对字符串进行旋转调整
public static String adjust(String a){
String str = a.substring(1)+a.substring(0,1);
return str ;
}
//判断两个字符串是否在旋转几次后,可以相同
public static boolean check(String strA,String strB){
for (int i = 0; i < strA.length(); i++) {
strA = adjust(strA);
if (strA.equals(strB)){
return true;
}
}
return false;
}
}