Java零基础入门到精通_Day 8

1.API

应用程序接口

Java API:指的就是JDK 中提供的各种功能的Java类这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

2. String 

String 类在java.lang 包下,所以使用的时候不需要导包
String 类代表字符串,Java程序中的所有字符串文字(例如“abc”)都被实现为此类的实也就是说,Java 程序中所有的双引号字符串,都是String 类的对象
字符串的特点


字符串不可变,它们的值在创建后不能被更改
虽然 String的值是不可变的,但是它们可以被共享

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

3.String 构造方法

package Base_one.Base_008;

public class StringDemo1 {
    public static void main(String[] args) {
        String s1 = new String();
        System.out.println(s1); // 空的

        // public String(char[] chs) 根据字符数组的内容 创建字符串对象
        char[] chs ={'a','b','c'};
        String s2 = new String(chs); //String方法传进去一个字符数组
        System.out.println(s2);

        //public string(byte[] bys):根据字节数组的内容,来创建字符串对象
        byte[] bys = {97,2,3};
        byte[] bys1 = {97,98,99};
        String s3 = new String(bys);
        System.out.println(s3); // a

        String s4 = new String(bys1);
        System.out.println(s4); // abc

        String s5 = "abc";
        System.out.println(s5);

    }
}

4. String 对象的特点

通过 new 创建的字符串对象,每一次 new都会申请一个内存空间,虽然内容相同,但是地址值不同

char[]chs ={'a','b''c'}i
string sl=new string(chs);
string s2=new string(chs);

上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的

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

String s3="abc";
String s4="abc";

在上面的代码中,针对第一行代码,JVM 会建立一个String对象放在字符串池中,并给s3 参考;第二行则让s4 直接参考字符串池中的Strinq对象,也就是说它们本质上是同一个对象。

package Base_one.Base_008;

public class String_object {
    public static void main(String[] args) {
        // 构造方法的方式创建对象
        char[] chs = {'a','b','c'};
        String s1 = new String(chs);
        String s2 = new String(chs);

        System.out.println(s1==s2); //false
        // 直接赋值的方式得到对象
        String s3 = "abc";
        String s4 = "abc";
        System.out.println(s3==s4); //true
        // 比较字符串的地址是否相同
        System.out.println(s1==s3); //false

    }
}

5.字符串的比较

package Base_one.Base_008;


public class StringDemo02 {
    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); //false
    System.out.println(s1==s3); //flase
    System.out.println(s3==s4); //true
    System.out.println("----");
    //比较字符串内容是否相同
    System.out.println(s1.equals(s2)); //true
    System.out.println(s1.equals(s3)); //true
    System.out.println(s3.equals(s4)); //true

    }
}

6. 用户登录

package Base_one.Base_008;

import java.util.Scanner;
import java.util.stream.Stream;

public class StringTest01 {
    public static void main(String[] args) {
        String user = "user";
        String pwd = "a123456";
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入用户名:");
        String username = scanner.nextLine();

        System.out.println("请输入密码:");
        String password = scanner.nextLine();

        StringTest01 test01 = new StringTest01();

        int cout=0;
        for(int i=0;i<3;i++){
            if(username.equals(user) && (password.equals(pwd))){
                System.out.println("正确");
                break;
            }else {
                System.out.println("第"+(i+1)+"次输入不对,重新输入");
                System.out.println("还有"+(2-i)+"次机会");
                if ((2-i)==0){
                    System.out.println("三次机会使用完毕!");
                    break;
                }else {
//                username = usr.nextLine();
//                password = pw.nextLine();
                    username = test01.userInput(username);
                    password = test01.pwdInput(password);
                }
            }
          }
    }
    public String userInput(String username){
        Scanner usr = new Scanner(System.in);
        String u = usr.nextLine();
        return u;
    }

    public String pwdInput(String password){
        Scanner pw = new Scanner(System.in);
        String p = pw.nextLine();
        return p;
    }
}

7.遍历字符串

package Base_one.Base_008;

import java.util.Scanner;

public class StringYest02 {
    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.print(line.charAt(i)+" ");
        }
    }
}

8. 统计字符次数

package Base_one.Base_008;

import java.util.Scanner;

public class StringTest03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个字符串");
        String line = sc.nextLine();
        int D = 0;
        int X = 0;
        int number = 0;
        for (int i= 0;i<line.length();i++){
            char ch = line.charAt(i);
            if (ch>='A' && ch<='Z'){
                D++;
            } else if (ch>='a' && ch<='z') {
                X++;
            } else if (ch>='0' && ch<='9') {
                number++;
            }else { // 其他字符的情况
                continue;
            }
        }
        System.out.println(D);
        System.out.println(X);
        System.out.println(number);
    }
}

8. 拼接字符串

package Base_one.Base_008;

public class StringTest005 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                System.out.print(arr[i]);  // 注意这里使用空格而不是加号
            } else {
                System.out.print(arr[i] + ",");  // 注意这里使用空格而不是加号
            }
        }
        System.out.print("]");
        System.out.println();
        System.out.println("-------");
        String line = araytoString(arr);
        System.out.println(line);
    }

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



9.字符串反转

package Base_one.Base_008;

import java.util.Scanner;

public class StringDemo06 {
    public static void main(String[] args) {
//        String s = "abc";
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个字符串");
        String s = sc.nextLine();
        System.out.println(s);
        System.out.println("---");

        String ss = reverseString(s);
        System.out.println(ss);
    }

    public static String reverseString(String l) {
        String line = "";
        for (int i = l.length()-1; i>=0 ; i--){
            line += l.charAt(i);
        }
        return line;
    }

}

10.String中的方法

11. StringBuilder

StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。这里的可变指的是StringBuilder对象中的内容是可变的。

String 和 StringBuilder 的区别:
String:内容是不可变的
StringBuilder:内容是可变的

12.StringBuilder 构造方法

package Base_one.Base_008;

public class StringBuilderDemo {
    public static void main(String[] args) {
        // 创建一个空的可变字符串对象,不含有任何内容。
        StringBuilder sb = new StringBuilder();
        System.out.println(sb); //
        System.out.println(sb.length()); // 0

        StringBuilder sb2 = new StringBuilder("hello");
        System.out.println(sb2); //hello
        System.out.println(sb2.length()); //5
    }
}

13 StringBuilder 的添加和反转方法

package Base_one.Base_008;

public class StringBuilderDemo1 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        //public stringBuilder append(任意类型):添加数据,并返回对象本身
        //public stringBuilder reverse():返回相反的字符序列
//        StringBuilder sb2 = sb.append("hello"); // 返回对象本身
//        System.out.println(sb);
//        System.out.println(sb2);
//        System.out.println(sb==sb2); //
//        sb.append("hello");
//        sb.append(123);
//        System.out.println(sb);
        // 链式法则
        sb.append("hello").append(134); // 可以一直调用方法
        System.out.println(sb); //hello134
        sb.reverse();
        System.out.println(sb); //hello134
    }
}

13 String 和 StringBuilder 相互转换

package Base_one.Base_008;

public class Reverse {
    public static void main(String[] args) {
//        StringBuilder sb = new StringBuilder();
//        sb.append("hello");
        String s = sb;// 类型不一样
//        String s = sb.toString(); // 利用toString()方法
//        System.out.println(s);
        // 转换为StringBUilder
        String s = "hello";
        StringBuilder sb = new StringBuilder(s);
        System.out.println(sb);

    }
}

14 拼接字符串

package Base_one.Base_008;

public class Test {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        String s = arrtoString(arr);
        System.out.println(s);
    }
    public static String arrtoString(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]);
                sb.append("]");
            }else{
                sb.append(arr[i]).append(",");
            }
        }
        String s = sb.toString();
        return s;
    }
}

15.字符串反转升级版

package Base_one.Base_008;

import java.util.Scanner;

public class Test02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入一个字符串");
        String s = scanner.nextLine();
        System.out.println(s);

        String ss = reverseString(s);
        System.out.println(ss);
    }
    public static String reverseString(String s){
        // 将接收到的字符串转为StringBuilder类型
//        StringBuilder sb = new StringBuilder(s);
//        sb.reverse();
//        // 再转化为String
//        String ss = sb.toString();
//        return ss;

        // 将上面的四步一步完成
        String ss = new StringBuilder(s).reverse().toString();
        return ss;
    }
}

16 总结

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XF鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值