String类,StringBuilder类

一、String类的概述

字符串也是一个封装好的类,存储方法区的常量池里面

二、String类的构造方法

1、String(String original):把字符串数据封装成字符串对象
2、String(char[] value):把字符数组的数据封装成字符串对象
3、String(char[] value, int index, int count):把字符数组中的一部分数据封装

public static void main(String[] args) {
        
//      String(char[] value):把字符数组的数据封装成字符串对象
        char[] arr=new char[]{'a','b','c'};
//      String(char[] value, int index, int count):把字符数组中的一部分数据封装
        String s1=new String(arr,offset:1,count:2);//从角标1开始取两个元素
//      String(String original):把字符串数据封装成字符串对象//创建字符串对象
        String s2=new String(original:"bc");
        System.out.println(s1);
        System.out.println(s2);
    }

输出结果如下:
1

三、String类的判断功能

1、boolean equals(Object obj):比较字符串的内容是否相同

//      boolean equals(Object obj):比较字符串的内容是否相同
        String s="helloworld";
        String s1="hello";
        String s2="helloworld";
        System.out.println(s.equals(s1));
        System.out.println(s.equals(s2));

输出结果如下
2
2、boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写

//      boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
        String s3="helloworld";
        String s4="HelloWorld";
        System.out.println(s3.equalsIgnoreCase(s4));

输出结果如下:
3`
3、boolean startsWith(String str):判断字符串对象是否以指定的str开头

//      boolean startsWith(String str):判断字符串对象是否以指定的str开头
        String s5="helloworld";
        System.out.println(s5.startsWith("h"));
        System.out.println(s5.startsWith("he"));
        System.out.println(s5.startsWith("helloworld"));

输出结果如下:
4
4、boolean endsWith(String str):判断字符串对象是否以指定的str结尾

//      boolean endsWith(String str):判断字符串对象是否以指定的str结尾
        String s6="helloworld";
        System.out.println(s6.endsWith("d"));
        System.out.println(s6.endsWith("ld"));
        System.out.println(s6.endsWith("helloworld"));

输出结果如下图:
5

四、键盘模拟登录案例

import java.util.Scanner;//导包
// 模拟登陆:键盘录入用户名和密码进行比较,如果相等提示登陆成功
        Scanner sc=new Scanner(System.in);//Scanner是util类型需要导包
        String username="admin";
        String password="123";
        //三次录入机会
        for (int i=0;i<3;i++){
            System.out.println("请输入用户名");
            String name=sc.next();
            System.out.println("请输入密码");
            String ps=sc.next();
         //重写equals比较字符串的内容是否相等
            if(name.equals(username)&&ps.equals(password)){
                System.out.println("登陆成功");
                break;//登录成功跳出循环
            }else{
                //登陆失败的时候
                System.out.println("登陆失败,您还有"+(2-i)+"次机会");//从零开始
            }
        }

输出结果如图:
6

五、String类的获取功能

1、int length():获取字符串的长度,其实也就是字符个数

String s1="helloworld";
System.out.println(s1.length());//获取字符串长度,也可以看出字符数组

7
2、char charAt(int index):获取指定索引处的字符

//  char charAt(int index):获取指定索引处的字符
//  遍历数组的第一种方式length()和charAt()
        String s1="helloWorld";
        for(int i=0;i< s1.length();i++){
            System.out.println(s1.charAt(i));
        }

输出结果如下图:
8
3、int indexOf(String str):获取str在字符串对象中第一次出现的索引

// indexOf(String str):获取str在字符串对象中第一次出现的索引
     System.out.println(s1.indexOf("o"));//没有找到时 index=-1;

4、int lastIndexOf(String str):获取str在字符串对象中最后一次出现的索引

// lastIndexOf(String str):获取str在字符串对象中最后一次出现的索引
       System.out.println(s1.lastIndexOf("o"));

3/4输出结果如图:
9
5、String substring(int start):从start开始截取字符串

// String substring(int start):从start开始截取字符串
     System.out.println(s1.substring(2));// lloworld  从start这个索引处开始截取字符串---默认截取到最后

输出结果如下图:
10
6、String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end

// substring(int start,int end)
     System.out.println(s1.substring(0,5));//[start,end)

输出结果如下图:
11

六、获取功能案例:遍历字符串数组的两种方式

//  遍历数组的第一种方式s1.length()和charAt();
        String s="helloWorld";
        for(int i=0;i< s1.length();i++){
            System.out.println(s1.charAt(i));
        }
// 第二种遍历数组:char[] toCharArray():把字符串转换为字符数组
        String s="helloWorld";
        char[] arr = s.toCharArray();
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]+"\t");
        }

输出结果如下图:
12

七、String类的转换功能

1、char[] toCharArray():把字符串转换为字符数组

        String s="helloWorld";
        char[] arr = s.toCharArray();//toCharArray转成字符数组
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }

2、String toLowerCase():把字符串转换为小写字符串

 System.out.println(s.toLowerCase());//toLowerCase转小写

3、String toUpperCase():把字符串转换为大写字符串

System.out.println(s.toUpperCase());//toUpperCase转大写

八、String类的其他方法演示

1、去除字符串两端空格String trim()
2、按照指定符号分割字符串String[] split(String str)

/*1、去除字符串两端空格String trim()
  2、按照指定符号分割字符串String[] split(String str)*/
        String s="      ==helloworld==  ";
        String s1="    ==hello  world==  ";
 //输出s/s1看一下去掉空格之前的效果       
        System.out.println(s);
        System.out.println(s1);
// 去除字符串两端空格String trim(),只能去除两边的///replace 去除中间的
//System.out.println(s1.replace(target:"要被替代的旧的值",replacement:"新的值"));
        System.out.println(s.trim());
        
// 按照指定符号分割字符串String[] split(String str)
        String s3="2019,11,13";
        String[] arr = s3.split(",");
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

输出结果如下图:

13
14

九、String常见的面试题

1、Object中的equals方法和String中的equals方法有什么区别

Object中的equals方法:
比较的是内存的地址值,只有两个变量在内存中指向同一个对象才会返回true
String中的equals方法:
重写了equals方法,在比较两个字符串的时候,会根据内存进行比较,只要两个字符串的内容相同返回的就是true.

2、判断两个字符串是否相等
        String a=new String("hello");//存在堆中,会创建两个对象,一个在堆里面new出来的对象,一个在常量池里面的常量对象
//      System.out.println(a);//值
//      String b="hello";//方法区的常量池
        String b=new String("hello");
        String c="hello";
        String d="hello";
        System.out.println(a==b);//false
        System.out.println(a==c);//false
        System.out.println(a.equals(b));//true
        System.out.println(c==d);//true
3、下面语句会在内存中创建几个对象
String a=new String("hello");//存在堆中,会创建两个对象,一个在堆里面new出来的对象,一个在常量池里面的常量对象
4、判断b 和 c两个字符串是否相等
        String a="ab";
        String b="abc";
        String c=a+"c";
        System.out.println(b.equals(c));//true内容相同
//        String a=new String("abc");
        System.out.println(b==c);//false地址不同

十、StringBuilder类的概述(高效缓冲字符串,可以直接实例化)

比普通的字符串用起来更加强大,一个字符串类。

String与StringBuilder的区别

1、普通的String长度是不可以改变的,高校字符串是可以改变的
2、普通得String内容是固定的,StringBuilder内容是可变的

StringBuilder类的常用方法

1、构造方法:StringBuilder()

StringBuilder sb=new StringBuilder();

2、成员方法:
(一)添加功能:append(任意类): 往容器里面添加内容,链式编程,追加一个之后返回的还是sb对象,StringBuilder编程时只会产生一个对象

//先进行实例化,创建一个对象
        StringBuilder sb=new StringBuilder();
//往字符串里面添加数据
        sb.append(2).append("哈哈").append('a').append('b');
        System.out.println(sb);

输出结果如下图:
15
(二)删除功能:int delete(int start,int end) 移除此序列的字符串中字符[start,end)
int deleteCharAt(int index) 移除此序列指定位置上的char

//产出区间
        sb.delete(3,4);
        System.out.println(sb);
        sb.deleteCharAt(2);
        System.out.println(sb);

输出结果如下图:
16
(三)替换功能:StringBuilder replace(int start,int end,string str)

        sb.replace(0,1,"3333");//[start,end)
        System.out.println("代替:"+sb);

输出结果如下图:
17

注意:StringBuilder与StringBuffer两者都是可变字符串,区别在于StringBuilder是单线程的,线程不安全,StringBuffer是多线程的,线程安全。 StringBuilder-----StringBuffer-------在开发中一般使用StringBuil

(四)反转功能:StringBuilder: reverse—字符串反转(相当于String 倒着遍历)

        StringBuilder sb=new StringBuilder();
        sb.append(2).append("哈哈").append('a').append('b');
        //输出追加的序列
        System.out.println(sb);
        //反转
        sb.reverse();
        //输出反转之后的序列
        System.out.println(sb);

输出结果如下图:
18
(五)获取功能:int capacity():返回当前容量 //int length()返回字符数长度

        String s="hello";
        StringBuilder sb=new StringBuilder();//里面没有任何内容的,可以看成   一个容器用来存储字符串
        System.out.println(s.length());//length获取的是内容的长度
//      length获取的是高效字符串内容的长度

//      int capacity()返回当前容量,创建一个StringBuilder的时候,系统会默认分配16个字节长度
        System.out.println(sb.capacity());

输出结果如下图:
19
String substring(int start):返回一个新的String,它包含此字符序列当前所包含的子序列

        StringBuilder sb=new StringBuilder();
        sb.append('a').append("b").append('c').append('d');
        //输出追加元素之后的字符序列
        System.out.println(sb);
        String s = sb.substring(3);
        //输出角标从3开始的字符序列
        System.out.println(s);

输出结果如下图:
20
String substring(int start,int end):返回一个新的String它包含此字符序列当前所包含的子序列

        StringBuilder sb=new StringBuilder();
        sb.append('a').append("b").append('c').append('d');
        System.out.println(sb);
        String s = sb.substring(1,3);//[1,3)--- 1是闭区间 3是开区间
        System.out.println(s);

输出结果如下图:
21
int lastIndexOf(String str):返回最右边出现的指定的子字符串在此字符串中的索引数值

        StringBuilder sb=new StringBuilder();
        sb.append('a').append("b").append('c').append('d');
        System.out.println(sb);
        //搜索子字符串“b”在字符串中的位置
        int s = sb.lastIndexOf("b");
        //搜索子字符串“e”在字符串中的位置
        int s1=sb.lastIndexOf("e");//字符串中没有“e”这个字符串默认输出 -1
        System.out.println(s);
        System.out.println(s1);

输出结果如下图:
22
int intdexOf(String str):返回第一次出现的指定子字符串在该字符串中的索引位置

        StringBuilder sb=new StringBuilder();
        sb.append('a').append("b").append('c').append('d');
        System.out.println(sb);
        //查询c所在的索引数
        int i = sb.indexOf("c");
        System.out.println(i);

输出结果如下图:
23
int intdexOf(String str,int fromIndex):从指定的索引处开始,返回第一次出现的指定子字符串在该字符串的索引。

        StringBuilder sb=new StringBuilder();
        sb.append('a').append("b").append('c').append('d');
        System.out.println(sb);
       //搜素从“0”开始字符串“c”所出现的索引数 
        int i = sb.indexOf(str:"c",fromIndex:0);
        System.out.println(i);

输出结果如下图:
24
char charAt(int index):返回此序列中指定索引处的char值

        StringBuilder sb=new StringBuilder();
        sb.append('a').append("b").append('c').append('d');
        System.out.println(sb);
        //搜索索引数为“3”的字符
        char c = sb.charAt(3);
        System.out.println(c);

输出结果如下图:
25

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值