学习Java第八天

2020/7/31

1.API

  • API (Application Programming Interface) :应用程序编程接口

  • java中的API

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

2.String类

  • Scanner的方法补充
//nextLine缺点:nextLine方法前面不能出现其他键盘输入方法
//next缺点:不能接收空格和回车
import java.util.Scanner;

public class Tset01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("输入整数:");
        int i = sc.nextInt();
        System.out.println(i);

        System.out.println("输入字符串:");
        String s = sc.nextLine();
        System.out.println(s);

        System.out.println("输入字符串:");
        String s1 = sc.next();
        System.out.println(s1);
    }
}

在这里插入图片描述

  • nextLine缺点:nextLine方法前面不能出现其他键盘输入方法
  • next缺点:不能接收空格和回车

1.String类的介绍

  • String所在的包是java.lang包,java.lang包下的所有类在使用时都不需要导包。
  • String代表字符串类,所有字符串字面值都是字符串的对象。
  • String类在打印时不会出现地址值,会出现直接内容。

2.构造方法

方法说明
new String(String s)把字符串变成字符串
new String(char[] chs)把字符数组变成字符串
new String(byte[] bys)把字节数组变成字符
new String(byte[] bys,int index,int len)把字节数组的一部分变成字符串
String s=“字符串”字符串直接赋值
public class Test02 {
    public static void main(String[] args) {
        //String构造方法
        String s1 = new String("abc");
        System.out.println(s1);

        char[] arr = {'a', 'b', 'c', 'd'};
        String s2 = new String(arr);
        System.out.println(s2);

        byte[] brr = {100, 101, 102, 103};
        String s3 = new String(brr);
        System.out.println(s3);
        
		第一个参数代表开始索引,第三个参数表示的是个数
        String s4 = new String(arr, 1, 2);
        System.out.println(s4);

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

在这里插入图片描述

3.创建对象的区别

  • ==号:在比较基本类型时比较的是其值是否相同

    ​ 在比较引用类型时比较的是地址是否相同
    在这里插入图片描述

4.字符串的常用方法

方法说明
equals()判断字符串的内容是否相同
charAt()获取某个索引处的字符
length()获取字符串的长度
equalsIgnoreCase()判断字符串的内容是否相同,忽略大小写
public class Test03 {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("abc");

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

        System.out.println(s1.equals(s2));
        System.out.println(s2.equals(s3));
        System.out.println(s3.equals(s4));
    }
}

在这里插入图片描述

5.登陆系统

public class Test04 {
    public static void main(String[] args) {
        String name = "高绍绪";
        String password = "123456";

        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入账户名:");
            String user = sc.nextLine();
            System.out.println("请输入密码:");
            String pass = sc.nextLine();
            if (user.equals(name) && pass.equals(password)) {
                System.out.println("登陆成功");
                break;
            } else {
                if (i == 2) {
                    System.out.println("账户锁定,请与管理员联系");
                }
                //System.out.println("请重新输入");
            }
        }
    }
}

在这里插入图片描述

6.字符串数组遍历

public class Test05 {
    public static void main(String[] args) {
        String s = "高绍绪是我的儿子哈哈哈";
        for (int i = 0; i < s.length(); i++) {
            System.out.println(s.charAt(i));
        }
    }
}

在这里插入图片描述

7.统计字符串中大小写字母和数字的个数

import java.util.Scanner;

public class Test06 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();

        int count1 = 0;
        int count2 = 0;
        int count3 = 0;

        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch >= 'A' && ch <= 'Z') {
                count1++;
            } else if (ch >= 'a' && ch <= 'z') {
                count2++;
            }
            else if(ch >= '0' && ch <= '9') {
                count3++;
            }
        }
        System.out.println("大写字母" + count1);
        System.out.println("小写字母" + count2);
        System.out.println("数字" + count3);
    }
}

在这里插入图片描述

8.把数组拼接成一个字符串

public class Test07 {
    public static void main(String[] args) {
        int[] arr = {12, 34, 45, 77, 54, 88};
        String s = pinjie(arr);
        System.out.println(s);
    }

    public static String pinjie(int[] arr) {
        String s = "[";
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                s += arr[i] + "]";
            } else {
                s += arr[i] + " ";
            }
        }
        return s;
    }
}

在这里插入图片描述

3.StringBuliding类

  • String不可变,一旦创建不能修改.。tringbulider叫做字符串缓冲区,是一个可变的字符串。

1.构造方法

方法说明
new StringBulider()创建一个空的StringBuilder对象
new StringBuilder(String)把字符串转变为StringBuilder对象
public class Test08 {
   public static void main(String[] args) {
       StringBuilder s = new StringBuilder();
       System.out.println(s);
       StringBuilder s2 = new StringBuilder("高绍绪我的儿");
       System.out.println(s2);
   }
}

在这里插入图片描述

2.Stringbuilder的常用方法

方法说明
append()给StringBuilder追加内容
reverse()反转StringBuilder的内容
toString()把StringBuilder类型转变成String类型
  • 链式编程
public class Test09 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("高绍绪是我儿子");
        sb.append(" ").append("高绍绪真是我儿子").append("hhh");
        System.out.println(sb);
    }
}

在这里插入图片描述

public class Test02 {
    public static void main(String[] args) {

        //创建对象
        StringBuilder sb = new StringBuilder("abc");

        //append()可以把任意类型追加到内容的后面
        sb.append(true);
        sb.append("柳岩");
        sb.append(36);

        //链式编程(写熟了之后可以用)
        sb.append(true).append("abc").append(123);

        System.out.println("反转前" + sb);
        //反转(不需要传参也不需要接受返回值 把自己本身给反转了)
        sb.reverse();
        System.out.println("反转后" + sb);
        
        //toString():转成String类型
        String s = sb.toString();
        System.out.println(s);

    }
}

在这里插入图片描述

3.String和StringBuilder的相互转换

虽然String和StringBuilder看卡里很像,但不是同一种类型。
调用方法需要对应的类,比如String类有startWitch(),比如StringBuilder有reverse()方法
    
String->StringBuilder
    new StringBuilder(String s);
    
StringBuilder->String
    String s = sb.toString();

4.StringBuilder的好处

StringBuilder因为对象的内容是可变的,所以在修改时执行速度快,在做大量的字符串拼接时就建议使用StringBuilder来完成。

public class Test03 {
    public static void main(String[] args) {
        //String是不可变的
        String s = "";
        //获取执行但当前代码的系统时间
        long time1 = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            s += "a";
        }
        long time2 = System.currentTimeMillis();
        System.out.println("String :" + (time2-time1));   //5736毫秒

        System.out.println(s);

        //StringBuilder是可变的
        StringBuilder sb = new StringBuilder();
        long time3 = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            sb.append("a");
        }
        long time4 = System.currentTimeMillis();
        System.out.println("StringBuilder:" + (time4-time3));  //2毫秒
        System.out.println(sb);
    }
}

5.StringBuilder完成数组的拼接

public class Test10 {
    public static void main(String[] args) {
        int[] arr={11,22,34,55,77,88,99};
        System.out.println(splic(arr));
    }
    public static String splic(int[] arr){
        StringBuilder s=new StringBuilder("[");
        for (int i = 0; i < arr.length; i++) {
            if(i==arr.length-1){
                s.append(arr[i]).append("]");
            }else{
                s.append(arr[i]).append(",");
            }
        }
        return s.toString();
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值