java基础----- String和StringBuilder

1.String的创建方式

package com.itheima01;
public class Demo02 {

    public static void main(String[] args) {
        //String类如何创建对象的?

        //把字符数组变成字符串
        char[] chs = {'a','b','c','d'};
        String s1 = new String(chs);
        System.out.println(s1);      //"abcd"

        //用字符串创建对象
        String s2 = new String("abcd");
        System.out.println(s2);     //"abcd"


        //简化方式
        String s3 = "abcd";
        System.out.println(s3);      //"abcd"
        
        //现在直接用最简单的方式就可以了,别的写法以后有使用场景

    }
}

2.String创建方式的区别

==号的作用:
	在判断基本类型时,判断的是值是否相同
	在判断引用类型时,判断的是地址值是否相同
package com.itheima01;

public class Demo03 {
    public static void main(String[] args) {
        //每次new都会开启新空间,堆内存
        String s1 = new String("abc");
        String s2 = new String("abc");

        //""字符串只要内容一样,就只会创建一次,在常量池
        String s3 = "abc";
        String s4 = "abc";


        System.out.println(s1 == s2);  //flase
        System.out.println(s2 == s3);  //false
        System.out.println(s3 == s4);  //true
        
        
        //只有直接写""才会在常量池,没有""就一定在堆内存
        //常量池中相同的字符串只会有一个
    }
}

3.String的常用方法

必须掌握:
    equals()		:判断两个字符串的内容是否相同
    length()        :获取字符串长度
    charAt()        :获取指定索引处的字符
    
扩展方法:
	replace()       :替换字符串中的内容
	substring()     :截取字符串的一部分

4.用户登陆案例

package com.itheima01;

import java.util.Scanner;

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

        //1. 已知用户名和密码,定义两个字符串表示即可
        String name = "admin";
        String password = "123456";

        //循环3次
        for (int i = 0; i < 3; i++) {

            //2.键盘录入要登录的用户名和密码
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名:");
            String n = sc.next();
            System.out.println("请输入密码:");
            String p = sc.next();

            //3.拿键盘录入的用户名、密码和已知的用户名、密码进行比较
            if( n.equals(name) && p.equals(password)){
                //4.如果相同就代表登陆成功,结束循环
                System.out.println("登陆成功");
                break;
            }else{
                //5.如果不同就本次用户名或密码错误
                System.out.println("用户名密码错误!!!");

                //只有在输入错误的情况下才需要考虑还剩几次机会,所以要写在这里判断剩余次数
                //判断他是不是最后一次机会
                if(i==2){
                    System.out.println("你的号没了~~");
                }else{
                    System.out.println("你还有"+ (2-i) +"次机会");
                }

            }

        }
    }
}

5.字符串遍历

package com.itheima01;

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

        String s = "卢本伟牛逼!!!";

        //循环
        for(int i=0; i<s.length();i++){
            //根据索引获取字符
            char ch = s.charAt(i);
            //打印
            System.out.println(ch);
        }
    }
}

6.统计字符个数案例

package com.itheima01;

import java.util.Scanner;

public class Demo09 {
    public static void main(String[] args) {
        //键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数
        //(不考虑其他字符)


        //1.键盘输入一个字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = sc.next();

        //2.定义统计个数的变量
        int count1 = 0;
        int count2 = 0;
        int count3 = 0;

        //3.遍历字符串
        for(int i=0; i<s.length();i++){
            //4.获取每个字符
            char ch = s.charAt(i);
            //5.判断字符是否符合要求
            if(ch>='A' && ch<='Z'){
                count1++;
            }else if(ch>='a' && ch<='z'){
                count2++;
            }else if(ch>='0' && ch<='9'){
                count3++;
            }
        }
        //6.打印结果
        System.out.println("大写字母有:" + count1 + "个");
        System.out.println("小写字母有:" + count2 + "个");
        System.out.println("数字字符有:" + count3 + "个");
    }
}

7.StringBuilder的创建方式

package com.itheima02;

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

        //StringBuilder如何创建对象?

        //我们把String称为不可变字符串,把StringBuiler称为可变字符串

        //方式一
        StringBuilder sb1 = new StringBuilder();
        System.out.println(sb1);


        //方式二
        StringBuilder sb2 = new StringBuilder("abc");
        System.out.println(sb2);
    }
}

8.StringBuilder的常用方法

append()		:给对象添加(追加)数据
reverse()       :把对象的内容前后反转
length()        :获取长度
toString()      :把对象转成String类型
package com.itheima02;

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

        StringBuilder sb = new StringBuilder();

        //append()   :给StringBuilder添加(追加)任意类型的内容
        sb.append(123);
        sb.append("abc");
        sb.append(3.14);
        sb.append(true);

        //会把所有数据依次添加到对象上
        System.out.println(sb);    //"123abc3.14true"


        //reverse() :把内容反转
        sb.reverse();
        System.out.println(sb);   //"eurt41.3cba321"

        //length()  :获取内容的长度
        int i = sb.length();
        System.out.println(i);    //14

        //toString()  :把对象转成String类型
        String s = sb.toString();
        System.out.println(s);    //"eurt41.3cba321"

    }
}

9.StringBuilder的使用场景

StringBuilder的方法多数都不适用,一般不会用

什么时候用他?
	一般是在做大量的字符串拼接时,使用StringBuilder的append()
package com.itheima02;

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

        //String

        String s = "";

        //获取当前时间毫秒值
        long time1 = System.currentTimeMillis();

        for (int i = 0; i < 1000000; i++) {
            s += "a";
        }

        //获取当前时间毫秒值
        long time2 = System.currentTimeMillis();

        System.out.println((time2-time1)+"毫秒");
    }
}
package com.itheima02;

public class Demo05 {

    public static void main(String[] args) {

        //StringBuilder

        StringBuilder sb = new StringBuilder();

        //获取当前时间毫秒值
        long time1 = System.currentTimeMillis();

        for (int i = 0; i < 1000000; i++) {
            sb.append("a");
        }

        //获取当前时间毫秒值
        long time2 = System.currentTimeMillis();

        System.out.println((time2-time1)+"毫秒");
    }
}

总结

今天我们学习的是String和StringBuilder两个类

java中其实定义了很多很多类,我们以后有很多天都是在学习java中的类

我们有API里面有java中SE阶段所有的类和类中的方法

建议:
	以后学习要自己区分开哪些类有哪些方法,不要记混!!!
	
	
	Scanner
		nextInt()      ?
		next()         ?
		nextLine()     ?
		
	Random
		nextInt(int i) ?
		
	String
	   equals()       ?
	   length()       ?
	   charAt()       ?
	   replace()      ?
	   substring()    ?
	   
    StringBuilder
        append()      ?
        reverse()     ?
        length()      ?
        toString()    ?
        
    ArrayList
        day09要学的类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值