API

API是应用程序编程接口。(Application Programming Interface)

JAVA API:指的是JDK中提供的各种功能的JAVA类

Demo:

import javax.sound.sampled.Line;
import java.util.Scanner;

public class JavaStudyDay11 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入字符串:");
        String line = sc.nextLine(); //Ctrl + Alt + V 快捷键生成接受变量
    }
}

String类

String类在java.lang包下,所以使用的时候不需要导包。

String类代表字符串,java程序中所有字符串文字都被实现为此类的实例。

也就是说java程序中所有的双引号字符串,都是String类的对象。

特点

1.字符串不可变,他的值在创建后就不能被更改。

2.虽然String的值是不可变的,但是他们是可以被共享的。

3.字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])。

String构造方法

方法名

说明

public String()

创建一个空白字符串对象,不含有任何内容

public String(char[] chs){}

根据字符数组的内容,来创建字符串对象

public String(byte[] bys){}

根据字节数组的内容,来创建字符串对象

String s = “sbc”;

直接复制,内容就是sbc

String对象的特点

1.new出来的对象每次创建都会建立一个新的存储空间,即便内容相同,但地址不同。

2.以“ ”方式(直接赋值)给出的字符串,只要字符序列相同(顺序和大小写),无论程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。

例:

String s2 = “abc";

String s3 = “abc”;

在上述代码中,JVM会建立一个String对象存在字符串池中,并给s2做参考;第二行则让s3直接参考字符池中的String对象,说明他们本质上是同一个对象。

字符串的比较

使用==比较

基本类型:比较数据值是否相同

引用类型:比较地址值是否相同

字符串是对象,它比较内容是否相同,通过equals()方法来实现。

String中 == 比较地址值、().equals()比较内容值。

Demo:用户登录

package JavaStudyDay11;

import java.util.Scanner;

public class UseerLogin {

    public static void main(String[] args) {
        //定义两个字符串存储用户名和密码
        String user = "dejavu";
        String password = "dejavu1118";
        //用Scanner类来输入用户名和密码
        //用for循环判断登录次数
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String input_user = sc.nextLine();
            System.out.println("请输入密码:");
            String input_password = sc.nextLine();
            //用equals方法来判断用户名和密码是否相等
            if (input_user.equals(user) && input_password.equals(password)) {
                System.out.println("登录成功");
                break;
            } else {
                System.out.println("用户名或密码错误,你还有"+ (2-i) +"次机会");
            }
        }

    }

}

Demo:遍历字符串

package JavaStudyDay11;

import java.util.Scanner;

public class StringDemo2 {
    public static void main(String[] args) {
        //键盘录入字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("输入想要遍历的字符串:");
        String s = sc.nextLine();	//dejavu get better 
        //使用for循环、length()方法以及charAt方法来遍历字符串
        for (int i = 0; i < s.length(); i++) {
            System.out.print(s.charAt(i)); //dejavu get better
        }
    }
}

charAt() 方法用于获取字符串中的每个字符

Demo:判断大小写以及数字在字符串中出现的字数

package JavaStudyDay11;

import java.util.Scanner;

//统计字符次数
//判断大写字母、小写字母、数字出现的次数
public class StringDemo3 {
    public static void main(String[] args) {
        //定义计数
        int count_up = 0;
        int count_low = 0;
        int count_num = 0;
        //键入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s = sc.nextLine();
        //使用for循环、length()方法以及charAt方法来遍历字符串
        for (int i = 0; i < s.length(); i++) {
            s.charAt(i);
            //判断是否为大写
            if(s.charAt(i)>'A' && s.charAt(i)<'Z'){
                count_up++;
            }
            //判断是否为小写
            else if(s.charAt(i)>'a' && s.charAt(i)<'z'){
                count_low++;
            }
            //判断是否为数字
            else if(s.charAt(i)>'0' && s.charAt(i)<'9'){
                count_num++;
            }
        }
        System.out.println("大写字母出现了"+count_up+"次");
        System.out.println("小写字母出现了"+count_low+"次");
        System.out.println("数字出现了"+count_num+"次");
    }
}

Demo:拼接字符串 ArrayToString

package JavaStudyDay11;

public class StringDemo5 {
    public static void main(String[] args) {
        int[] arr = {11, 18, 12, 17, 10, 16};
        String s = concat(arr);
        System.out.println(s);
    }

    public static String concat(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;
    }
}

Demo:实现字符串反转

package JavaStudyDay11;

import java.util.Scanner;

//字符串反转
public class StringDemo4 {
    public static void main(String[] args) {
        //键入字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要反转的字符串:");
        String s = sc.nextLine();
        String s1 = reverse(s);
        System.out.println(s1);
}

    //定义方法实现字符串反转
    public static String reverse(String s) {
        String ss = "";
        for (int i = s.length() - 1; i >= 0; i--) { //从尾到首遍历
            ss += s.charAt(i);
        }
        return ss;
    }

}

StringBuilder类

public

方法名

说明

public StringBuilder append(任意类型)

添加数据,并返回对象本身

public StringBuilder reverse()

返回相反的字符序列

Demo:字符连接plus

package JavaStudyDay11;

public class Stringconcat {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        String concat = concat(arr);
        System.out.println(concat);
    }
    public static String concat(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for(int i = 0;i<arr.length; i++){
            if(i == arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]);
                sb.append(",");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

Demo:字符反转plus

package JavaStudyDay11;

import java.util.Scanner;

public class StringReverse {
    public static void main(String[] args) {
        //键入字符
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String line = sc.nextLine();
        String myReverse = myReverse(line);
        System.out.println("反转后为:"+myReverse);
    }
        //定义方法实现反转
    public static String myReverse(String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        String ss = sb.toString();
        return ss;
    }
}