String与StringBuilder及相关案例

API

概述:(Application Programming Interface):应用程序编程接口

例子解释:

编写一个机器人程序去控制机器人踢足球,程序需要向机器人发出向前跑、向后跑、射门抢球等各种命令。
机器人厂商- -定会提供一些用于 控制机器人的接口类,这些类中定义好了操作机器人各种动作的方法。其实,
这些接口类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API

Java API:指的就是JDK中提供的各种功能的java类,这些类将底层的实现类封装起来。

接受变量的快捷键:ctrl+alt+V

String构造方法

image-20210627104100134

``

package com.itheima_01;

public class StringDemo01 {
    public static void main(String[] args) {
        String s1=new String();
        System.out.println("s1"+s1);

        //根据字符数组的内容,来创建字符串对象
        char [] chs={'a','c','j'};
        String s2=new String(chs);
        System.out.println("s2:"+s2);

        //根据字节数组的内容,来创建字符串对象
        byte[] bys={100,97,110};
        String s3=new String(bys);
        System.out.println("s3:"+s3);

        //推荐使用
        String s4="1234";
        System.out.println("s4:"+s4);
    }
}

String对象的特点

image-20210627105650018

image-20210627105745268

image-20210627110256201

字符串的比较

使用 == 做比较

  • 基本类型:比较的是数据值是否相同
  • 引用类型:比较的是地址值是否相同

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

  • public boolean equals(Object an Object):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串

image-20210627111106439

案例:用户登录

需求:已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示

``

package com.itheima_01;

import java.util.Scanner;

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

        String name="aaa";
        String pwd="111";

        //输入账户密码
        for (int i = 0; i < 3; i++) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入用户名:");
            String n = sc.nextLine();
            System.out.println("请输入密码:");
            String p = sc.nextLine();

            //判断内容是否相同
            if (name.equals(n) && pwd.equals(p)){
                System.out.println("登陆成功");
                break;
            }else{
                if((2-i)==0){
                    System.out.println("你的账户被锁定,请与管理员联系");
                }else {
                    System.out.println("登陆失败,你还有"+(2-i) +"次机会");
                }

            }

        }

    }
}

遍历字符串

  • public char charAt(int index): 返回指定索引处的char值,字符串的索引也是从0开始
  • public int length(): 返回此字符串的长度

遍历字符串的通用格式

for(int i=0;i<s.length();i++){
    s.charAt(i);   //就是指定索引处的字符值
}
package com.itheima_01;

import java.util.Scanner;

public class StringDemo03 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符:");
        String s=sc.next();
        for (int i = 0; i <s.length() ; i++) {
            System.out.println(s.charAt(i));
        }
    }
}

案例:统计字符次数

需求:键盘录入-一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

``

package com.itheima_01;

import java.util.Scanner;

/*
* 需求:键盘录入-一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
 */
public class StringDemo04 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符:");
        String s=sc.next();
        int c1=0,c2=0,c3=0;
        for (int i = 0; i <s.length() ; i++) {
            if(s.charAt(i)>='A' && s.charAt(i)<='Z'){
                c1++;
            }else if(s.charAt(i)>='a' && s.charAt(i)<='z'){
                c2++;
            }else if(s.charAt(i)>='0' && s.charAt(i)<='9'){
                c3++;
            }
        }
        System.out.println("大写字母有"+c1+",小写字母有"+c2+",数字有"+c3);
    }
}

案例:拼接字符串

需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
并在控制台输出结果。例如,数组为int[] arr= {1,2,3};,执行方法后的输出结果为: [1,2, 3]

package com.itheima_01;

/*需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
并在控制台输出结果。例如,数组为int[] arr= {1,2,3};,执行方法后的输出结果为: [1,2, 3]
*/
public class StringDemo05 {
    public static void main(String[] args) {
        int[] arr = {11, 22, 33, 123,333,434};
       String s= pinJie( arr);
        System.out.println(s);
    }

    public static String pinJie(int[] arr) {
        String ss="";
        ss+="[";
        //字符串拼接直接加号
        for (int i = 0; i <arr.length ; i++) {
            if(i==arr.length-1){//如果他是最后一个,不加逗号
                ss+=arr[i];
            }else{
                ss+=arr[i];
                ss+=",";  //如果它不是最后一个,需要加上逗号
            }
        }
        ss+="]";
        return ss;
    }
}

案例:字符串反转

需求:定义一个方法,实现字符串反转。键盘录入-个字符串,调用该方法后,在控制台输出结果
例如,键盘录入abc,输出结果cba

package com.itheima_01;

import java.util.Scanner;

/*
* 需求:定义一个方法,实现字符串反转。键盘录入-个字符串,调用该方法后,在控制台输出结果
例如,键盘录入abc,输出结果cba
*/
public class StringDemo06 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s = sc.next();

        String ss=fanzhuan(s);
        System.out.println(ss);

    }

    public static String fanzhuan(String s) {
        String t="";
        for (int i=s.length()-1; i >0; i--) {
            t+=s.charAt(i);
        }
        return t;
    }
}

方法名说明
public boolean equals(Object anObject)比较字符串的内容,严格区分大小写
public char charAt(int index)返回指定索引处的char值
public int length()返回此字符串的长度

StringBuilder概述

image-20210701094840740

StringBuilder是一个可变的字符串类(即StringBuilder对象中的内容是可变的),我们可以把它看成是一个容器

String和StringBuilder的区别:

  • String:内容是不可变的
  • StringBuilder:内容是可变的

StringBuilder构造方法

方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)根据字符串内容,来创建可变字符串对象
package com.itheima_01;

public class StringBuilderDemo01 {
    public static void main(String[] args) {
        StringBuilder s1=new StringBuilder();
        System.out.println("s1:"+s1);
        System.out.println("s1.length():"+s1.length());

        StringBuilder s2=new StringBuilder("hello");
        System.out.println("s2:"+s2);
        System.out.println("s2.length():"+s2.length());
    }
}

方法名说明
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()返回相反的字符串序列
package com.itheima_01;

public class StringBuilderDemo02 {
    public static void main(String[] args) {
        //1.创建对象
        StringBuilder s=new StringBuilder();
        //public StringBuilder  append(任意类型)  添加数据,并返回对象本身
        s.append(12);
        s.append("qwer");
        s.append(89);
        System.out.println("s"+s);
        //也可以用链式添加,(因为返回的是对象,可以直接调用方法)
        s.append(123).append("asd").append(567).append("cvb");
        System.out.println("s"+s);

        //public StringBuilder reverse()  返回相反的字符串序列
        System.out.println(s.reverse());



    }
}

StringBuilder和String的相互转换

1、StringBuilder转为String

public String toString(): 通过toString()就可以实现把StringBuilder转为String

2、String转换为StringBuilder

public StringBuilder(String s):通过构造方法将String转换为StringBuilder

package com.itheima_01;

public class StringBuilderDemo03 {
    public static void main(String[] args) {
        //public String toString(): 通过toString()就可以实现把StringBuilder转为String
        StringBuilder s=new StringBuilder();
        s.append("qwert");
        String ss="";
        ss=s.toString();
        System.out.println(ss);

        //public StringBuilder(String s):通过构造方法将String转换为StringBuilder
        String s1="zxcv";
        StringBuilder stringBuilder=new StringBuilder(s1);
        System.out.println(stringBuilder);
    }
}

案例:拼接字符串

需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如,数组为int[] arr= {1,2,3};, 执行方法后的输出结果为: [1,2, 3]

package com.itheima_01;

public class StringBuilderDemo04 {
    public static void main(String[] args) {
        int[] arr= {1,2,3};
        String jieguo=pinJie(arr);
        System.out.println(jieguo);

    }
    public static String pinJie(int[] arr){
        StringBuilder stringBuilder=new StringBuilder();
        stringBuilder.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length) {
                stringBuilder.append(arr[i]);
            }else{
                stringBuilder.append(arr[i]).append(",");
            }

        }
        stringBuilder.append("]");
        String  ss=stringBuilder.toString();
        return ss;
    }
}

案例:字符串反转

需求:定义一个方法,实现字符串反转。键盘录入-个字符串,调用该方法后,在控制台输出结果。例如,键盘录入abc,输出结果cba

思路:
①键盘录入-个字符串,用Scanner实现
②定义一个方法,实现字符串反转。返回值类型String,参数String s
③在方法中用StringBuilder实现字符串的反转,并把结果转成String返回
④调用方法,用一个变量接收结果
⑤输出结果

package com.itheima_01;

import java.util.Scanner;

public class StringBuilderDemo05 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String m=sc.next();
        String n=fanZhuan(m);
        System.out.println(n);
    }
    public static String fanZhuan(String s){
        StringBuilder stringBuilder=new StringBuilder(s);
        stringBuilder.reverse();
        String s1=stringBuilder.toString();
        return s1;
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值