1String构造方法:
public String():创建一个空白字符串对象,不含有任何内容
public String(char[] chs):根据字符数组的内容,来创建字符串对象
public String(byte[l bys):根据字节数组的内容,来创建字符串对象
String s =“abc”;直接赋值的方式创建字符串对象,内容就是abc
推荐使用直接赋值方式得到字符串对象
public class StringDemo01 {
public static void main(String[] args) {
// public String():创建一个空白字符串对象,不含有任何内容
String s1 = new String();
System.out.println("s1:" + s1);
//public String(char[] chs):根据字符数组的内容,来创建字符串对象
char[] chs = {'a','b','g'};
String s2 = new String(chs);
System.out.println("s2:" + s2);
//public String(byte[l bys):根据字节数组的内容,来创建字符串对象
byte[] bys = {97,98,99};
String s3 = new String(bys);
System.out.println("s3:" + s3);
//String s =“abc;直接赋值的方式创建字符串对象,内容就是abc
String s4 = "abf";
System.out.println("s4:" + s4);
}
}
2.键盘录入数据
scanner:
用于获取键盘录入数据。(基本数据类型,字符串数据)
public string nextLine();
获取链盘录入字符串数据
public class ScannerDemo {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入一个数据");
// String line = sc.nextLine();
//Ctrl+Alt+v
String line = sc.nextLine();
System.out.println("你输入的数据是:" + line);
}
}
3
使用==做比较:
基本类型:比较的是数据值是否相同
引用类型:比较的是地址值是否相同
pubLic boolean equals (Object anObject):
将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
public class StringDemo_02 {
public static void main(String[] args) {
//构造方法的方式得到对象
char[] chs = {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);
//直接赋值的方式得到对象
String s3 = "abc";
String s4 = "abc";
//比较字符串对象地址是否相同
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println("------");
//比较字符串数值是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
4 String练习
/*
需求:
已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示
思路:
1:已知用户名和密码,定义两个字符串表示即可
2:键盘录入要登录的用户名和密码,用Scanner实现
3:拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比较,用equals()方法实现
4:用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环
*/
public class StringTest01 {
public static void main(String[] args) {
//已知用户名和密码,定义两个字符串表示即可
String name = "梅";
String password ="123456";
//用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环
for(int x= 0; x<3; x++) {
//键盘录入要登录的用户名和密码,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String na = sc.nextLine();
System.out.println("请输入用户密码");
String psd = sc.nextLine();
//拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比较,用equals()方法实现
if(na.equals(name) && psd.equals(password)){
System.out.println("登陆成功");
break;
}else{
if(2 - x ==0){
System.out.println("你的账户被锁定,请与管理员联系");
}else{
System.out.println("登录失败,你还有" +(2-x) +"次机会");
}
}
}
}
}
/*
需求:
键盘录入一个字符串,使用程序实现在控制台遍历该字符串
思路:
1:键盘录入一个宁符串,用scanner实现
2:遍历字符串,首先要能够获取到字符串中的每—个字符
public char charAt (int index)。返回指定索引处的char值,字符串的索引也是从0开始的
3:遍历字符串,其次要能够获取到字符串的长度
public int Length() :返回此字符串的长度
数组的长度:数组名.Length
字行串的长度:字符串对象.Length()
4:谊历字符串的通用格式
*/
import java.util.Scanner;
public class StringTest02 {
public static void main(String[] args) {
//键盘录入一个字符串,用scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String line = sc.nextLine();
for(int x= 0; x < line.length(); x++){
System.out.println(line.charAt(x));
}
}
}
/*
键盘输入一个字符串,判断其中大写字母,小写字母,数字的个数
*/
public class StringTest03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String line = sc.nextLine();
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
for(int x = 0; x<line.length(); x++){
char ch = line.charAt(x);
if(ch >='A' && ch<='Z'){
bigCount++;
}else if(ch >='a' && ch<='z'){
smallCount++;
}else if('0' <= ch && ch<='9'){
numberCount++;
}
}
System.out.println("大写字母个数为:" + bigCount);
System.out.println("小写字母个数为:" + smallCount);
System.out.println("数字字符个数为:" + numberCount);
}
}
/*
遍历数组
*/
public class StringTest04 {
public static void main(String[] args) {
int[] arr ={1,5,6,88};
String a = getNum( arr);
System.out.println(a);
}
public static String getNum(int[] arr) {
String a = "";
a += "[";
for (int x = 0; x < arr.length; x++) {
if (x == arr.length-1) {
a += arr[x];
} else {
a += arr[x];
a +=",";
}
}
a +="]";
return a;
}
}
/*
需求:
定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果
例如,链盘录入abc。输出结果cba
思路:
1 :链盘录入一个字符串,用Scanner实现
2:定义一个方法,实现字符串反转。返回值类型string,参数string s
3:在方法中把字符串倒着遍历,然后把每—个得到的字符拼接成一个字将串并返回
4:调用方法,用一个变量接收结果
5:输出结果
*/
public class StringTest05 {
public static void main(String[] args) {
//链盘录入一个字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String num = sc.nextLine();
//调用方法,用一个变量接收结果
String a = arrayToString(num);
System.out.println("反转字符为:" + a);
}
//定义一个方法,实现字符串反转。返回值类型string,参数string s
public static String arrayToString(String num){
String s = "";
//在方法中把字符串倒着遍历,然后把每—个得到的字符拼接成一个字将串并返回
for(int x=num.length()-1; x>=0; x--){
s += num.charAt(x);
}
return s;
}
}
5StringBuilder构造方法:
public stringBuilder(),创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
public class StringBuilderDemo01 {
public static void main(String[] args) {
//public stringBuilder(),创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb = new StringBuilder();
System.out.println("sb:" + sb);
System.out.println("长度:" + sb.length());
//public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:" + sb2);
System.out.println("长度:" + sb2.length());
}
}
6StringBuilder的添加和反转方法
public stringBuilder append(任意类型):添加数据,并返回对象本身
public StringBuilder reverse( ):返回相反的字符序列
public class StringBuilderDemo01 {
public static void main(String[] args) {
//创建对象
StringBuilder sb = new StringBuilder();
//public stringBuilder append(任意类型):添加数据,并返回对象本身
StringBuilder sb2 = sb.append("hello");
sb.append("nfe");
sb.append("fewda");
sb.append(533);
System.out.println("sb:" + sb);
//链式编程
sb.append("fekfmefj").append(52566).append("fef");
System.out.println("sb:" + sb);
//反转
sb.reverse();
System.out.println("sb:" + sb);
}
}
7
StringBuilder转换为String
public String toString(),通过 toString())就可以实现把StringBuilder 转换为String
String转换为StringBuilder
public StringBuilder(String s),通过构造方法就可以实现把 string 转换为stringBuilder
public class StringBuilderDemo02 {
public static void main(String[] args) {
//StringBuilder转换为String
StringBuilder sb = new StringBuilder();
sb.append("sdf");
// String s = sb;//错误
// public String toString(),通过 toString())就可以实现把StringBuilder 转换为String
String s = sb.toString();
System.out.println(s);
//String转换为StringBuilder
String s1 = "fsa";
//public StringBuilder(String s),通过构造方法就可以实现把 string 转换为stringBuilder
StringBuilder sb2 = new StringBuilder(s1);
System.out.println(sb2);
}
}
8,StringBuilder练习
/*
需求:
定义一个方法,把 int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。
例如,数组为int[] arr = [1,2,3];,执行方法后的输出结果为:[1,2,3]
思路:
1 :定义一个int类型的数组,用静态初始化完成数组元素的初始化
2:定义一个方法。用于把 int 数组中的数据按熙指定格式拼接成一个字符串返回。返回值类型String,参数列表int[]arr
3:在方法中用StringBuilder按照要求进行拼接,并把结果转成string 返回
4:调用方法用一个变量接收结果
5:输出结果
*/
public class StringBuilderTest01 {
public static void main(String[] args) {
//定义一个int类型的数组,用静态初始化完成数组元素的初始化
int[] arr ={12,815,3,46,65};
//调用方法用一个变量接收结果
String line = arrayToString(arr);
System.out.println(line);
}
//定义一个方法。用于把 int 数组中的数据按熙指定格式拼接成一个字符串返回。
/*
两个明确:
返回值类型:String,
参数:int[] arr
*/
public static String arrayToString(int[] arr){
//在方法中用StringBuilder按照要求进行拼接,并把结果转成string返回
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int x = 0; x<arr.length; x++){
if(x == arr.length-1){
sb.append(arr[x]);
}else{
sb.append(arr[x]);
sb.append(", ");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
/*
需求:
定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果
例如,链盘录入abc,输出结果 cba
思路:
1 :键盘录入一个字符串,用Scanner实规
2:定义一个方法。实现字符串反转。返回值类型string,参数String s
3:在方法中用stringBuilder实现字符串的反转,并把结果转成string返回
4:调用方法,用一个变量接收结果
5 :输出结果
*/
import java.util.Scanner;
public class StringBuilderTest02 {
public static void main(String[] args) {
//键盘录入一个字符串,用Scanner实规
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String line = sc.nextLine();
//调用方法,用一个变量接收结果
String us = reverse(line);
System.out.println("反转字符为:" + us);
}
//定义一个方法。实现字符串反转。返回值类型string,参数String s
public static String reverse(String s){
//在方法中用stringBuilder实现字符串的反转,并把结果转成string返回
// StringBuilder sb = new StringBuilder();
// sb.append(s);
// sb.reverse();
// String ss = sb.toString();
// return ss;
//可以用一行代码转换
return new StringBuilder(s).reverse().toString();
}
}