public class StringDemo {
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', 'c'};
String s2 = new String(chs);
System.out.println("s2:" + s2);
//public String(byte[] bys):根据字节数组的内容,来创建字符串对象
byte[] bys = {97, 98, 99};
String s3 = new String(bys);
System.out.println("s3:" + s3);
//String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
String s4 = "abc";
System.out.println("s4:" + s4);
}
}
/*
*判断功能的方法举例 s1.equals(s2):比较s1和s2的内容是否一模一样,如果一样返回true,否则返回false *s1.equalsIgnoreCase(s2):比较s1和s2的内容是否相同,但是不区分大小写 s1.contains(s2): 判断s1中是*否包含s2,包含则返回true,不包含则返回false
*/
public class String_Demo {
public static void main(String[] args) {
// 创建字符串对象
String s1 = "hello";
String s2 = "hello";
String s3 = "HELLO";
// boolean equals(Object obj):比较字符串的内容是否相同
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // false
System.out.println("-----------");
//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2)); // true
System.out.println(s1.equalsIgnoreCase(s3)); // true
System.out.println("-----------");
}
}
Object 是” 对象”的意思,也是一种引用类型。作为参数类型,表示任意对象都可以传递到方法中。
/*
*使用==做比较: 基本类型:比较的是数据值是否相同 引用类型:比较的是地址值是否相同
*public boolean equals(Object anObject): 将此字符串与指定对象进行比较。由于我们比较的是字符串对*象,所以参数直接传递一个字符串
*/
public class StringDemo {
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));
}
}
/*获取功能的方法
*public int lengt():返回此字符串的长度。 举例:s.length() 获取s中的字符的数量 - public String *concat (String str) :将指定的字符串连接到该字符串的末尾。 举例:s1.cocat(s2) 把s2连接到s1的末尾 *- public char charAt (int index) :返回指定索引处的 char值。 举例:s1.charAt(5) 获取s1中索引为*5的字符 - public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。 举
*例:s1.indexOf(s2) 查找s2在s1中第一次出现的位置,如果不存在,返回-1 - public String substring
*(int *beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。举
*例:s1.substring(5) 截*取s1字符串从索引5开始一直到最后的内容 - public String substring (int *beginIndex, int *endIndex) : 返回一个子字符串,从beginIndex到endIndex截取字符串。含*beginIndex,不含endIndex。 *举例:s1.substring(5,10) 截取s1字符串从索引5开始一直到索引10之间的
*内容(包含5,不包含10)
*/
public class String_Demo02 {
public static void main(String[] args) {
//创建字符串对象
String s = "helloworld";
// int length():获取字符串的长度,其实也就是字符个数
System.out.println(s.length());
System.out.println("--------");
// String concat (String str):将将指定的字符串连接到该字符串的末尾.
String s = "helloworld";
String s2 = s.concat("**hello java");
System.out.println(s2);
// helloworld**hello java
// char charAt(int index):获取指定索引处的字符
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println("--------");
// int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回-1
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截取字符串。含start,不含end。
System.out.println(s.substring(0, s.length()));
System.out.println(s.substring(3,8));
}
}
/* 转换功能的方法 - public char[] toCharArray () :把字符串变成对应的字符数组。 举
*例:s1.toCharArray() 把s1变成字符数组 - public byte[] getBytes () :把字符串变成对应的字节数
*组。 举例:s1.getBytes() 把s1变成字节数组 - public String replace (String oldStr, String *newStr) :把字符串中的所有的oldStr替换成 newStr。举例:s1.replace("a","A") 把s1中的所有的"a"替
*换成"A"
*/
public class String_Demo {
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("-----------");
// byte[] getBytes ():把字符串转换为字节数组
byte[] bytes = s.getBytes();
for(int x = 0; x < bytes.length; x++) {
System.out.println(bytes[x]);
}
System.out.println("-----------");
// 替换字母hello为大写HELLO
String str = "hello world, hello java";
String replace = str.replace("hello", "HELLO");
System.out.println(replace);
// HELLO world, HELLO java
System.out.println("-----------");
}
}
CharSequence是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。
/* 分割功能的方法 - public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分*为字符串数组举例: "a,b,c,d".split(",") 把"a,b,c,d"按照逗号切割,将切割后的子字符串存入String[]中 */
public class String_Demo {
public static void main(String[] args) {
//创建字符串对象
String s = "aa,bb,cc";
String[] strArray = s.split(",");
// ["aa","bb","cc"]
for(int x = 0; x < strArray.length; x++) {
System.out.println(strArray[x]);
// aa bb cc
}
}
}
/*
*思路:1:已知用户名和密码,定义两个字符串表示即可 2:键盘录入要登录的用户名和密码,用 Scanner 实
*现 3:拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比较,用 *equals() 方法实现 4:用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用*break结束循环
*/
public class StringTest {
public static void main(String[] args) {
//已知用户名和密码,定义两个字符串表示即可
String username = "admin";
String password = "1234";
//用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环
for(int i=2; i>=0; i--) {
//键盘录入要登录的用户名和密码,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();
//拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比 较,用equals() 方法实现
if (name.equals(username) && pwd.equals(password)) {
System.out.println("登录成功");
break;
} else {if(i == 0) {
System.out.println("你的账户被锁定,请与管理员联系");
} else {
//2,1
System.out.println("登录失败,你还有" + i + "次机会");
}
}
}
}
/*
*思路:1:键盘录入一个字符串,用 Scanner 实现
* 2:遍历字符串,首先要能够获取到字符串中的每一个字符 *public char charAt(int index):返回指定索引*处的char值,字符串的索引也是从0开始的
*3:遍历字符串,*其次要能够获取到字符串的长度 public int length():返回此字符串的长度 数组的长度:*数组名.length 字符串的长度:字符串对象.length() 4:遍历字符串的通用格式
*/
public class StringTest {
public static void main(String[] args) {
//键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
for(int i=0; i
键盘输入一个字符串统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
/*思路:
*1:键盘录入一个字符串,用 Scanner 实现
*2:要统计三种类型的字符个数,需定义三个统计变量,初始值都为0
*3:遍历字符串,得到每一个字符
*4:判断该字符属于哪种类型,然后对应类型的统计变量+1 假如ch是一个字符,我要判断它属于大写字母,小写
*字母,还是数字,直接判断该字符是否在对应的范围即可 大写字母:ch>='A' && ch<='Z' 小写字母: *ch>='a' && ch<='z' 数字: ch>='0' && ch<='9'
*5:输出三种类型的字符个数
*/
public class StringTest {
public static void main(String[] args) {
//键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
//要统计三种类型的字符个数,需定义三个统计变量,初始值都为0
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
//遍历字符串,得到每一个字符
for(int i=0; i='A' && ch<='Z') {
bigCount++;
} else if(ch>='a' && ch<='z') {
smallCount++;
} else if(ch>='0' && ch<='9') {
numberCount++;
}
}
//输出三种类型的字符个数
System.out.println("大写字母:" + bigCount + "个");
System.out.println("小写字母:" + smallCount + "个");
System.out.println("数字:" + numberCount + "个");
}
}
例如:键盘输入 abc ,输出结果 cba
/*
*思路:1:键盘录入一个字符串,用 Scanner 实现
*2:定义一个方法,实现字符串反转。返回值类型 String,参数 String s
*3:在方法中把字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并返回
*4:调用方法,用一个变量接收结果
*5:输出结果
*/
public class StringTest {
public static void main(String[] args) {
//键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
//调用方法,用一个变量接收结果
String s = reverse(line);
//输出结果
System.out.println("s:" + s);
}
//定义一个方法,实现字符串反转 /* 两个明确: 返回值类型:String 参数:String s
public static String reverse(String s) {
//在方法中把字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并返回
String ss = "";
for(int i=s.length()-1; i>=0; i--) {
ss += s.charAt(i);
}return ss;
}
}