1. String
1.1 String概述
String类在java.lang包下,所以使用的时候不需要导包。
String类代表字符串:"abc"
字符串的特点:(1)字符串不可变,他们的值在创建之后不能被更改。
(2)虽然String的值是不可变的,但是他们可以被共享。
(3)字符串效果上相当于是字符数组(char[]),但是底层原理是字节数组(byte[])
1.2 String的构造方法(一般使用第四种)
1.3 String对象的特点
1.4 字符串的比较
使用==作比较
基本数据类型:比较的是数据值
应用数据类型:比较的是地址值
equals() 比较内容是否相同。
char[] chs = {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);
String s3 = "abc";
System.out.println(s1 == s2);//false
System.out.println(s1 == s3);//false
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s2));//true
2.案例
2.1 用户登录
package com.test04;
import java.util.Scanner;
public class Dome01 {
public static void main(String[] args) {
String urse = "lmq";
String password = "123456";
Scanner sc =new Scanner(System.in);
for (int i=0;i<3;i++){
System.out.println("请输入用户名:");
String u = sc.next();
System.out.println("请输入密码:");
String p = sc.next();
if(urse.equals(u) && password.equals(p)){
System.out.println("登录成功!!!");
break;
}else if (i==2){
System.out.println("登陆失败!!!");
}else {
System.out.println("你还有"+ (2-i)+"次机会");
}
}
}
}
2.2 遍历字符串
package com.test04;
import java.util.Scanner;
public class Dome02 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入一串字符串:");
String line = sc.nextLine();
for (int i=0 ; i<line. Length();i++){
//返回一个一个的字符
System.out.println(line.charAt(i));
}
}
}
2.3 统计字符字数
package com.test04;
import java.util.Scanner;
public class Dome03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一串字符串:");
String line = sc.nextLine();
int count=0;
int count1=0;
int count2=0;
for (int i=0; i<line.length(); i++ ){
//判断是否是大写
if (line.charAt(i) >'A' && line.charAt(i)<'Z'){
count++;
//判断是否是小写
}else if (line.charAt(i) >'a' && line.charAt(i)<'z'){
count1++;
//判断是否是数字
}else if (line.charAt(i)>'0' && line.charAt(i)<'9'){
count2++;
}
}
System.out.println("大写字符有:"+count+"个");
System.out.println("小写字符有:"+count1+"个");
System.out.println("数字字符有:"+count2+"个");
}
}
2.4 拼接字符串
package com.test04;
public class Dome04 {
public static void main(String[] args) {
int[] arr ={1,2,3};
//用一个变量接收结果。
String s = method(arr);
//输出结果
System.out.println(s);
}
public static String method(int arr[]){
String s="";
s += "[";
for (int i=0;i<arr.length;i++){
//最后一个不需要,
if (i==arr.length-1){
s += arr[i];
}else {
s +=arr[i];
s +=", ";
}
}
s +="]";
return s;
}
}
2.5 字符串反转
package com.test04;
import java.util.Scanner;
public class Dome05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String line = sc.nextLine();
System.out.println(methon(line));
}
public static String methon(String a){
String s="";
//倒过来输出,并存入到s中(用拼接的方式)
for (int i=a.length()-1;i>=0;i--){
s += a.charAt(i);
}
return s;
}
}
3.String的方法
4.StringBuilder
4.1StringBuildder的概念
StringBuilder对象中的内容可变
String:内容不可变。
4.2 StringBuild的构造方法。
4.3StringBuilder 的添加和反转
4.4 StringBuilder 和 String 之间的相互转换
4.4.1 StringBuilder 转换为 String
public String toString()
4.4.2 String 转换 StringBuilder
publicStringBuilder(String s)
5. StringBuffer
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
5.1 append
和 insert
方法
append
方法总是在缓冲区的末尾添加这些字符。
insert
方法将字符添加到指定点。
public class RunoobTest{
public static void main(String args[]){
StringBuilder sb = new StringBuilder(10);
sb.append("Runoob..");
System.out.println(sb);
sb.append("!");
System.out.println(sb);
sb.insert(8, "Java");
System.out.println(sb);
sb.delete(5,8);
System.out.println(sb);
}
}
5.2StringBuffer 方法