1.Scanner类与String类
1.1 Scanner类
Scanner类作用
用Scanner类的方法可以完成接收键盘录入的数据
package com.igeek_03;
/**
* @author Lynn
* @create 2020-11-24-10:08
*/
import java.util.Scanner;
/**
* 用于字符串的获取
* Scanner用于获取键盘输入的数据(基本类型,字符串类型)
* 获取字符串类型:nextLine();--获取下一行字符串的数据(换行)
* next();--获取下一个字符开始的数据(不换行)
* 获取int类型:nextInt();
*
*/
public class ScannerDemo {
public static void main(String[] args) {
//实例化Scanner--系统中提供好的api
Scanner sc=new Scanner(System.in);//System.in表示系统中输入的内容获取
//接收数据
System.out.println("请输入数据:");
String s=sc.nextLine();
String s1=sc.next();
int n=sc.nextInt();
System.out.println("s:"+s);
System.out.println("s1:"+s1);
System.out.println("n:"+n);
//Scanner其实就是一个占用的资源,使用结束以后记得关闭
//如果不关闭,会一直占用内存
sc.close();
}
}
1.2 String类
String类概述
通过JDK提供的API,查看String类的说明
A:”abc”是String类的一个实例,或者成为String类的一个对象
B:字符串字面值”abc”也可以看成是一个字符串对象
C:字符串是常量,一旦被赋值,就不能被改变
D:字符串本质是一个字符数组
package com.igeek_03;
/**
* @author Lynn
* @create 2020-11-24-10:25
*/
/**
* 字符串:string
* 属于java.lang包下的api,使用的时候不需要导包
*
* 字符串是一个串,是多个字符连接而成
*
* 字符串的底层其实就是字符类型的数组
*/
public class PreString {
public static void main(String[] args) {
//储备知识
String s="王嘉尔好帅!";
//底层的实现--字符类型的数组
char[] c={'王','嘉','尔','好','帅','!'};
}
}
String类的构造方法
String(String original):把字符串数据封装成字符串对象<br /> String(char[] value):把字符数组的数据封装成字符串对象<br /> String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象<br />**注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据。**<br />/**<br />* **面试题:**<br />* String s="hello";s=s+"world",<br />* 问:原始值变了没有<br />* 答案:没有<br />* 解释:因为String是不可变类,即类的实例是不可被修改的。<br />*在这段代码中,s原来指向一个String对象,内容是“hello”,然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个String对象,内容为”helloworld!",原来那个对象还存在内存中,只是s这个引用变量不再指向他了。<br />*/<br />// String s="hello";<br />// s1=s+"world";<br />// System.out.println(s);<br />// System.out.println(s1);
package com.igeek_03;
/**
* @author Lynn
* @create 2020-11-24-10:30
*/
/**
* 演示String常用的构造方法
*
* 构造函数:
* String(String original):把字符串封装成字符串对象
* String(char[] value):把字符数组封装成字符串对象
* String(char[] value,int index,int count):把一部分字符数组封装成字符串对象
*
* 注意:
* 字符串是一个比较特殊的引用类型数据,直接输出字符串对象的时候输出的就是对象中的数据
*/
public class StringDemo {
public static void main(String[] args) {
//方式1--用的最多
String s1=new String("hello");
//在String的底层重写了toString()方法
System.out.println(s1);//hello
System.out.println("---------------");
//方式2
char[] chs={'h','e','l','l','o'};
//char chs[]={'h','e','l','l','o'};//也可以
String s2=new String(chs);
System.out.println(s2);//hello
//方式3
String s3=new String(chs,0, chs.length);
System.out.println(s3);//hello
String s4=new String(chs,1,3);
System.out.println(s4);//ell
//方式4--字符串的特殊声明方式,直接按照基本类型的声明格式使用!!
// --是Java对于String的恩赐
String s5="故事的";
System.out.println(s5);//故事的
int a=10;
// Integer i=new Integer(a);
System.out.println(a);//10
/**
* 面试题:
* String s="hello";s=s+"world",
* 问:原始值变了没有
* 答案:没有
* 解释:因为String是不可变类,即类的实例是不可被修改的。
*/
// String s="hello";
// s1=s+"world";
// System.out.println(s);
// System.out.println(s1);
}
}
创建字符串对象两种方式的区别
1.通过构造函数创建的字符串保存在堆中
2.直接声明的字符串保存在方法区中的常量池中
常量池的作用:
- Java字符串的优化机制
1.如果说利用直接声明字符串的时候会去常量池查找,如果有相同的字符串存在
则直接拿来使用,不再创建新的字符串
2.如果使用构造函数声明字符串(new),那么不管常量池中有没有相同的字符串都会在堆中
- 创建一个新的字符串对象
- ==:
- 基本类型:比较的是数据类型的值是不是相同
- 引用类型:比较的是引用类型的地址值是否相同 ```java package com.igeek_03;
/**
- @author Lynn
- @create 2020-11-24-11:07 */
/**
- 当前案例演示通过构造函数创建字符串和直接声明字符串的区别
- 1.通过构造函数创建的字符串保存在堆中
- 2.直接声明的字符串保存在方法区中的常量池中 *
- 常量池的作用:
- Java字符串的优化机制
- 1.如果说利用直接声明字符串的时候会去常量池查找,如果有相同的字符串存在
- 则直接拿来使用,不再创建新的字符串 *2.如果使用构造函数声明字符串(new),那么不管常量池中有没有相同的字符串都会在堆中
- 创建一个新的字符串对象 *
- ==:
- 基本类型:比较的是数据类型的值是不是相同
引用类型:比较的是引用类型的地址值是否相同 */ public class StringDemo02 { public static void main(String[] args) {
//构造函数创建
String s1=new String("hello");
//直接声明
String s2="hello";
System.out.println(s1);
System.out.println(s2);
//比较地址值
System.out.println("s1==s2:"+(s1==s2));//s1==s2:false
//s3直接从常量池中去拿的,并没有创建新的对象,其实就是s2
String s3="hello";
System.out.println("s1==s3:"+(s1==s3));//s1==s3:false
System.out.println("s2==s3:"+(s2==s3));//s2==s3:true
String类的判断功能
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的str开头
boolean endsWith(String str):判断字符串对象是否以指定的str结尾 ```java package com.igeek_04;
/**
- @author Lynn
- @create 2020-11-25-0:34 */
/**
- String判断的演示 *对象的顶级父类:Object
- 是类层级结构中的根类(是Java中的顶级父类),所有的类都直接或者是间接的继承Object *
- String判断功能
- boolean equals(Object):比较两个字符串的内容是不是相同(比较两个双胞胎像不像)
- boolean equalsIgnoreCase(String str):比较两个字符串的内容是不是一样,忽略大小写
- boolean startWith(String str):判断这个字符串是不是以指定的str开头
- boolean endWith(String str):判断这个字符串是不是以指定的str结束 *
- 注意:
- ==与equals的区别(面试题)
- 1.==在基本类型中比较的是两个变量的值是不是相等
- 2.==在引用类型中比较的是两个对象的地址值是不是相同
- 3.equals在引用类型中比较的是两个对象像不像
4.在Object类中有一个equals方法,这个方法如果不重写,是按照==的比较规则进行比较的 */ //public class StringDemo extends Object{ // String name; // // @Override // public String toString() { // return “StringDemo{“ + // “name=’” + name + ‘\’’ + // ‘}’; // } //} public class StringDemo{ public static void main(String[] args) {
//创建字符串的对象--直接赋值方式
String s1="hello";
String s2="hello";
String s3="HELLO";
//boolean equals(Object):比较两个字符串的内容是不是相同(比较两个双胞胎像不像)
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//false
System.out.println(s1.equalsIgnoreCase(s3));//true
//boolean startWith(String str):判断这个字符串是不是以指定的str开头--大小写敏感
System.out.println(s1.startsWith("h"));//true
//boolean endWith(String str):判断这个字符串是不是以指定的str结束--大小写敏感
System.out.println(s1.endsWith("o"));//true
判断功能案例
需求:模拟登录,给三次机会,并提示还有几次 ```java package com.igeek_04;
/**
- @author Lynn
- @create 2020-11-26-20:42 */
import java.util.Scanner;
/**
- 需求:模拟登录,给三次机会,并提示还有几次
- 分析:
- A:定义两个字符串对象,用于存储已经存在的用户名和密码
- B:键盘录入用户名和密码
- C:拿键盘录入的用户名和密码和已经存在的用户名和密码进行比较
- 如果内容相同,提示登录成功
- 如果内容不同,提示登录失败,并提示还有几次机会 */ public class Test { public static void main(String[] args) { //定义两个字符串对象,用于存储已经存在的用户名和密码 String username=”wlll”; String userpswd=”wlll”;
//给三次机会,用for循环实现
for (int i = 0; i <3 ; i++) {
//键盘录入用户名和密码
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名");
String name=sc.nextLine();
System.out.println("请输入密码");
String pswd=sc.nextLine();
//拿键盘录入的用户名和密码和已经存在的用户名和密码进行比较
if (username.equals(name) && userpswd.equals(pswd)){
System.out.println("登录成功!");
break;
}else if (i==2){
System.out.println("用户名和密码被锁定,请与管理员联系!");
}else {
System.out.println("登录失败,你还有"+(2-i)+"次机会!");//2,1,0
//break;
}
}
}
}
<a name="aXBvn"></a>
### String类的获取功能
String类的获取功能:
- int length():获取字符串的长度,其实也就是字符个数
- char charAt(int index):获取指定索引处的字符
- int indexOf(String str):获取str在字符串对象中第一次出现的索引
- String substring(int start):从start开始截取字符串
- String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
```java
package com.igeek_02_04;
/**
* @ClassName: StringDemo
* @Description: String类的获取功能
* @date 2017年11月11日 上午11:03:08
* Company www.igeekhome.com
*
* String类的获取功能:
* int length():获取字符串的长度,其实也就是字符个数
* char charAt(int index):获取指定索引处的字符
* int indexOf(String str):获取str在字符串对象中第一次出现的索引
* String substring(int start):从start开始截取字符串
* String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
*/
public class StringDemo {
public static void main(String[] args) {
//创建字符串对象
String s = "helloworld";
//int length():获取字符串的长度,其实也就是字符个数
System.out.println(s.length());
System.out.println("--------");
//char charAt(int index):获取指定索引处的字符
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println("--------");
//int indexOf(String str):获取str在字符串对象中第一次出现的索引
System.out.println(s.indexOf("l"));
System.out.println(s.indexOf("owo"));
System.out.println(s.indexOf("ak"));
System.out.println("--------");
//String substring(int start):从start开始截取字符串
System.out.println(s.substring(0));
System.out.println(s.substring(5));
System.out.println("--------");
//String substring(int start,int end):从start开始,到end结束截取字符串
System.out.println(s.substring(0, s.length()));
System.out.println(s.substring(3,8));
}
}
案例
package com.igeek_02_04;
/**
* @ClassName: StringTest
* @Description: 遍历字符串(获取字符串中的每一个字符)
* @date 2017年11月11日 上午11:09:15
* Company www.igeekhome.com
*
*/
public class StringTest {
public static void main(String[] args) {
//创建一个字符串对象
String s = "abcde";
//原始做法
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println(s.charAt(2));
System.out.println(s.charAt(3));
System.out.println(s.charAt(4));
System.out.println("---------");
//用for循环改进
for(int x=0; x<5; x++) {
System.out.println(s.charAt(x));
}
System.out.println("---------");
//用length()方法获取字符串的长度
for(int x=0; x<s.length(); x++) {
System.out.println(s.charAt(x));
}
}
}
package com.igeek_02_04;
import java.util.Scanner;
/**
* @ClassName: StringTest2
* @Description: 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
* @date 2017年11月11日 上午11:10:44
* Company www.igeekhome.com
*
* 分析:
* A:键盘录入一个字符串数据
* B:定义三个统计变量,初始化值都是0
* C:遍历字符串,得到每一个字符
* D:拿字符进行判断
* 假如ch是一个字符。
* 大写:ch>='A' && ch<='Z'
* 小写:ch>='a' && ch<='z'
* 数字:ch>='0' && ch<='9'
* E:输出结果
*/
public class StringTest2 {
public static void main(String[] args) {
//键盘录入一个字符串数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串数据:");
String s = sc.nextLine();
//定义三个统计变量,初始化值都是0
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
//遍历字符串,得到每一个字符
for(int x=0; x<s.length(); x++) {
char ch = s.charAt(x);
//拿字符进行判断
if(ch>='A' && ch<='Z') {
bigCount++;
}else if(ch>='a' && ch<='z') {
smallCount++;
}else if(ch>='0' && ch<='9') {
numberCount++;
}else {
System.out.println("该字符"+ch+"非法");
}
}
//输出结果
System.out.println("大写字符:"+bigCount+"个");
System.out.println("小写字符:"+smallCount+"个");
System.out.println("数字字符:"+numberCount+"个");
}
}
String类的转换功能
char[] toCharArray():把字符串转换为字符数组
String toLowerCase():把字符串转换为小写字符串
String toUpperCase():把字符串转换为大写字符串
案例
package com.igeek_02_05;
/**
* @ClassName: StringDemo
* @Description: String类的转换功能
* @date 2017年11月11日 上午11:13:33
* Company www.igeekhome.com
*
* String类的转换功能:
* char[] toCharArray():把字符串转换为字符数组
* String toLowerCase():把字符串转换为小写字符串
* String toUpperCase():把字符串转换为大写字符串
*
* 字符串的遍历:
* A:length()加上charAt()
* B:把字符串转换为字符数组,然后遍历数组
*/
public class StringDemo {
public static void main(String[] args) {
//创建字符串对象
String s = "abcde";
//char[] toCharArray():把字符串转换为字符数组
char[] chs = s.toCharArray();
for(int x=0; x<chs.length; x++) {
System.out.println(chs[x]);
}
System.out.println("-----------");
//String toLowerCase():把字符串转换为小写字符串
System.out.println("HelloWorld".toLowerCase());
//String toUpperCase():把字符串转换为大写字符串
System.out.println("HelloWorld".toUpperCase());
}
}
package com.igeek_02_05;
import java.util.Scanner;
/**
* @ClassName: StringTest
* @Description: 键盘录入一个字符串,把该字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
* @date 2017年11月11日 上午11:16:20
* Company www.igeekhome.com
*
* 分析:
* A:键盘录入一个字符串
* B:截取首字母
* C:截取除了首字母以外的字符串
* D:B转大写+C转小写
* E:输出即可
*/
public class StringTest {
public static void main(String[] args) {
//键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
//截取首字母
String s1 = s.substring(0, 1);
//截取除了首字母以外的字符串
String s2 = s.substring(1);
//B转大写+C转小写
String s3 = s1.toUpperCase()+s2.toLowerCase();
//输出即可
System.out.println("s3:"+s3);
}
}
String类的其它功能
去除字符串两端空格
String trim()
按照指定符号分割字符串
String[] split(String str)
案例
package com.igeek_02_06;
/**
* @ClassName: StringDemo
* @Description: String类的其它功能
* @date 2017年11月11日 上午11:18:31
* Company www.igeekhome.com
*
* 去除字符串两端空格
* String trim()
* 按照指定符号分割字符串
* String[] split(String str)
*/
public class StringDemo {
public static void main(String[] args) {
//创建字符串对象
String s1 = "helloworld";
String s2 = " helloworld ";
String s3 = " hello world ";
System.out.println("---"+s1+"---");
System.out.println("---"+s1.trim()+"---");
System.out.println("---"+s2+"---");
System.out.println("---"+s2.trim()+"---");
System.out.println("---"+s3+"---");
System.out.println("---"+s3.trim()+"---");
System.out.println("-------------------");
//String[] split(String str)
//创建字符串对象
String s4 = "aa,bb,cc";
String[] strArray = s4.split(",");
for(int x=0; x<strArray.length; x++) {
System.out.println(strArray[x]);
}
}
}
String类的其它案例
package com.igeek_02_06;
/**
* @ClassName: StringTest
* @Description: 把数组中的数据按照指定个格式拼接成一个字符串
* @date 2017年11月11日 上午11:20:04
* Company www.igeekhome.com
*
* 举例:int[] arr = {1,2,3};
* 输出结果:[1, 2, 3]
*
* 分析:
* A:定义一个int类型的数组
* B:写方法实现把数组中的元素按照指定的格式拼接成一个字符串
* C:调用方法
* D:输出结果
*/
public class StringTest {
public static void main(String[] args) {
//定义一个int类型的数组
int[] arr = {1,2,3};
//写方法实现把数组中的元素按照指定的格式拼接成一个字符串
//调用方法
String s = arrayToString(arr);
//输出结果
System.out.println("s:"+s);
}
/*
* 两个明确:
* 返回值类型:String
* 参数列表:int[] arr
*/
/**
* @Title: arrayToString
* @Description: 数组转成字符串
* @param arr
* @return
*/
public static String arrayToString(int[] arr) {
String s = "";
//[1, 2, 3]
s += "[";
for(int x=0; x<arr.length; x++) {
if(x==arr.length-1) {
s += arr[x];
}else {
s += arr[x];
s += ", ";
}
}
s += "]";
return s;
}
}
字符串反转
package com.igeek_02_06;
import java.util.Scanner;
/**
* @ClassName: StringTest2
* @Description: 字符串反转
* @date 2017年11月11日 上午11:23:19
* Company www.igeekhome.com
*
* 举例:键盘录入”abc”
* 输出结果:”cba”
*
* 分析:
* A:键盘录入一个字符串
* B:写方法实现字符串的反转
* a:把字符串倒着遍历,得到的每一个字符拼接成字符串。
* b:把字符串转换为字符数组,然后对字符数组进行反转,最后在把字符数组转换为字符串
* C:调用方法
* D:输出结果
*/
public class StringTest2 {
public static void main(String[] args) {
//键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
//写方法实现字符串的反转
//调用方法
String result = reverse(s);
//输出结果
System.out.println("result:"+result);
}
/*
* 把字符串倒着遍历,得到的每一个字符拼接成字符串。
*
* 两个明确:
* 返回值类型:String
* 参数列表:String s
*/
/*
public static String reverse(String s) {
String ss = "";
for(int x=s.length()-1; x>=0; x--) {
ss += s.charAt(x);
}
return ss;
}
*/
/**
* @Title: reverse
* @Description: 把字符串转换为字符数组,然后对字符数组进行反转,最后在把字符数组转换为字符串
* @param s
* @return
*/
public static String reverse(String s) {
//把字符串转换为字符数组
char[] chs = s.toCharArray();
//对字符数组进行反转
for(int start=0,end=chs.length-1; start<=end; start++,end--) {
char temp = chs[start];
chs[start] = chs[end];
chs[end] = temp;
}
//最后在把字符数组转换为字符串
String ss = new String(chs);
return ss;
}
}
1.3 StringBuilder类
StringBuffer和StringBuilder的区别:
- 1.StringBuffer是可追加的字符串,使用的方式和StringBuilder完全一样
- 2.区别:
- StringBuilder是jdk5.0推出的,线程不安全,但是效率高,优先选择使用
- StringBuffer是jdk1.0推出的,线程是安全的,但是效率低(非特殊情况,可以不使用)
- 3.Java在当初设计的时候做了过度设计,所以在jdk5.0的时候就推出了StringBuilder
- 线程安全:一群人过安检—一个一个的过
- 线程不安全:一群难民抢馒头吃 ```java package com.igeek_02;
/**
- @author Lynn
- @create 2020-11-25-10:04 */
/**
- StringBuffer和StringBuilder的区别:
- 1.StringBuffer是可追加的字符串,使用的方式和StringBuilder完全一样
- 2.区别:
- StringBuilder是jdk5.0推出的,线程不安全,但是效率高,优先选择使用
- StringBuffer是jdk1.0推出的,线程是安全的,但是效率低(非特殊情况,可以不使用)
- 3.Java在当初设计的时候做了过度设计,所以在jdk5.0的时候就推出了StringBuilder *
- 线程安全:一群人过安检—一个一个的过
线程不安全:一群难民抢馒头吃 / public class StringBufferDemo { public static void main(String[] args) {
//创建对象
StringBuffer sb=new StringBuffer();//不需要导包,就属于lang包
//StringBuilder sb=new StringBuilder();结果一样
//链式编程
sb.append("黄药师,").append("洪七公,").append("欧阳锋,").append("段王爷,").append("王重阳");
System.out.println(sb);
StringBuilder类概述
StringBuilder:是一个可变的字符串。字符串缓冲区类。
String和StringBuilder的区别:
String的内容是固定的
StringBuilder的内容是可变的StringBuilder类的常用方法
A:构造方法:
StringBuilder()
B:成员方法:
public int capacity():返回当前容量 (理论值)
public int length():返回长度(已经存储的字符个数)
public StringBuilder append(任意类型):添加数据,并返回自身对象
public StringBuilder reverse():反转功能 ```java package com.igeek_02;
/**
- @author Lynn
- @create 2020-11-25-10:17 */
/**
- StringBuilder:是一个可变长度的字符串 *
- 构造函数:StringBuilder()
- 常用的成员方法:
- public int capacity():返回当前的容量—理论值(默认值—16)
- public int length():返回长度(字符数)—实际值
*/
public class StringBuilderDemo {
public static void main(String[] args) {
} } ```//创建对象
StringBuilder sb=new StringBuilder();
System.out.println(sb);//空的可变字符串
System.out.println("sb.capacity():"+sb.capacity());//16 --默认值
System.out.println("sb.length():"+sb.length());//0
/**
- @author Lynn
- @create 2020-11-25-10:26 */
/**
- 其他的用法:
- 1.添加功能:append(任意类型的数据)
2.反转功能:reverse() */ public class StringBuilderDemo02 { public static void main(String[] args) {
//创建对象
StringBuilder sb=new StringBuilder();
//添加
StringBuilder sb2=sb.append("你好");
//输出结果
System.out.println("sb:"+sb);//sb:你好
System.out.println("sb2:"+sb2);//sb2:你好
System.out.println(sb==sb2);//true
//StringBuilder中的append方法会将所有的追加的元素统一转换为字符串进行处理--其实际效果就是:任意类型的数据+“
sb.append(true);
sb.append(9999);
sb.append("王嘉尔");
System.out.println(sb);//你好true9999王嘉尔
//反转功能
sb.reverse();
System.out.println(sb);//尔嘉王9999eurt好你
案例
```java package com.igeek_02;
/**
- @author Lynn
- @create 2020-11-25-10:43 */
import java.util.Scanner;
/**
- 回文:
- 上海自来水来自海上 *
- 判断是不是回文
- 是:返回true
否:返回false */ public class Test { public static void main(String[] args) {
//作用:程序的主入口,在业务逻辑中调用层--main方法中的业务逻辑越少越好
Scanner sc=new Scanner(System.in);
System.out.println("请输入字符串:");
String s=sc.nextLine();
//调用方法
boolean flag=isSymmetry(s);//s表示通过sc获取到的字符串
System.out.println(flag);
sc.close();
// StringBuilder sb=new StringBuilder(“上海自来水来自海上”); // StringBuilder sb2=new StringBuilder(sb.reverse()); // // System.out.println(); // System.out.println(sb.equals(sb2));//true
// sb.append(12321); // System.out.println(sb.reverse()); // System.out.println(sb==sb.reverse()); // System.out.println(“————————————————“); // // System.out.println(sb2.reverse()); // System.out.println(sb2==sb2.reverse()); } //封装一个方法—业务逻辑的封装—封装的越彻底越好 public static boolean isSymmetry(String s){ //逻辑代码—把字符串进行反转,之后的结果相同 //String转化成StringBuilder—再调用reverse()—再转回String //通过构造函数 StringBuilder sb=new StringBuilder(s); sb.reverse(); //转回String String result= sb.toString();
//比较结果是不是一样,--两个字符串是不是一样(反转前后)
//result是经过反转之后的字符串
//s是sc获取到用户输入的字符串
return result.equals(s);
}
} ```