学习视频:https://www.bilibili.com/video/BV18J411W7cE?p=115&spm_id_from=pageDriver
字符串:
API:Application Programming Interface(应用程序编程接口)
Java API:指的是jdk中提供的各种功能的Java类,这些类将底层的实现封装起来,我们不需要关心如何实现,只需要知道如何和使用即可。
帮助文档:
1、打开帮助问档
2、通过索引框找到类
3、查看类在哪个包
4、看类的描述信息
5、看构造方法和成员方法
String:
String类代表字符串,Java程序中所有的双引号字符串,都是String类的对象。
特点:
- 字符串不可变,在创建后值不能改变
- 虽然String值不可变,但是他们可以被共享
- 字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])
String的构造方法:
方法名 | 说明 |
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bys) | 根据字节数组内容,来创建字符串对象 |
String s = “abc” ; | 直接赋值的方式创建字符串对象,内容是abc |
package Demo;
public class stringDemo {
public static void main(String[] args) {
String s1 = new String();
System.out.println(s1);
char[] chs = {'a', 'b', 'c'};
String s2 = new String(chs);
System.out.println(s2);
byte[] bys = {97,98,99};
String s3 = new String(bys);
System.out.println(s3);
String s4 = "abc";
System.out.println(s4);
}
}
String对象的特点:
1、通过new创建的字符串对象,每一次new都会申请一个内存空间i,虽然内容相同,但是地址不同
2、以“”方式创建的字符串,只要字符串序列相同,无论在程序中出现几次,jvm都只会创建一个String对象,并在字符池中维护
String s3 = "abc"; String s4 = "abc:
对第一行,jvm会建立一个String对象放在字符池中,并给s3参考;第二行则让s4参考字符池中的String对象,本质上他们是同一个对象
字符串比较:
使用 == 比较
- 基本类型:比较的是数据值是否相同
- 引用类型:比较的是地址值是否相同
字符串是对象,需通过equals()方法来实现
public boolean equals(Object anObject):
package Demo;
//比较字符串内容是否相同
public class stringDemo {
public static void main(String[] args) {
String s1 = new String();
char[] chs = {'a', 'b', 'c'};
String s2 = new String(chs);
byte[] bys = {97,98,99};
String s3 = new String(bys);
String s4 = "abc";
//比较字符串内容是否相同
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3));
System.out.println(s3.equals(s4));
}
}
package Demo;
import java.util.Scanner;
public class User {
public static void main(String[] args) {
String username = "zsy";
String password = "123456";
for (int i = 0; i < 3; i++) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String name = sc.nextLine();
System.out.println("请输入密码");
String pass = sc.nextLine();
if(name.equals(username)&&pass.equals(password)){
System.out.println("登录成功");
break ;
}else{
if(2-i == 0){
System.out.println("你的账户被锁定,请联系管理员");
}else {
System.out.println("你还有" +(2-i)+"次机会");
}
}
}
}
}
遍历字符串
package Demo;
import java.util.Scanner;
public class stringLength {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s5 = sc.nextLine();
System.out.println(s5.length()); //打印字符串的长度
for (int i = 0; i < s5.length(); i++){
System.out.println(s5.charAt(i));
}
}
}
s5.charAt(i)返回索引处的char值
案例:统计字符串中大小写字母以及数字的个数
package Demo;
import java.util.Scanner;
public class Count {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s6 = sc.nextLine();
int i = 0, j = 0, k = 0;
for (int l = 0; l < s6.length(); l++) {
char ch = s6.charAt(l);
if (ch >= 'A' && ch <= 'Z') {
i++;
} else if (ch >= 'a' && ch <= 'z') {
j++;
} else if (ch >= '0' && ch <= '9') {
k++;
}
}
System.out.println("大写字母个数为" + i + "小写字母个数为" + j + "数字个数为" + k);
}
}
案例:字符串拼接
将一个int型数组,拼接为一个字符串
package Demo;
public class stringDemo1 {
public static void main(String[] args) {
int[] arr = {1,2,3};
String s = fa(arr);
System.out.println(s);
}
public static String fa(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;
}
}