字符串模块

1、API

  

API(Application Programmming Interface)应用程序接口

JavaAPI:指的是JDK(java development kit Java开发工具包)中提供的各种功能的Java类 这些类将底层的实现封装起来的,我们不需要关心这些类是如何实现的,只需要学习这些类如何让使用,我们可以通过帮助文档学习这些API如何使用。

1.3、API使用练习

需求:按照帮助文档的使用步骤学习Scanner类的使用,并实现键盘录入一个字符串,最后在控制台输出。

package com.itheima_01;
/*
* 需求:按照帮助文档的使用步骤学习Scanner类的使用,并实现键盘录入一个字符串,最后在控制台输出。
*Scanner:用于获取键盘录入数据。(基本类型数据,字符串数据)
*   public String nextLine();
* 获取键盘录入字符串数据
* */



import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
//        public String nextLine();
//    接受数据
        System.out.println("请输入一个字符串数据");
        String line=sc.nextLine();
        System.out.println("你输入的数据是:"+line);

    }

}

2、String

String是引用类型

String类代表字符串,Java程序中所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,Java程序中所有的双引号字符串,都是String类的对象

字符串的特点:

        字符串不可变,他们的值在创建后不能被更改

        虽然String的值是不可改变的,但是他们可以被共享

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

package com.itheima_02;
/*
 * String构造方法:
 *               public String();创建一个空白字符串,不含任何内容
 *               public String(char [] chs);根据字符数组的内容,来创建字符串对象
 *               public String(byte [] bys);根据字节数组的内容,来创建字符串对象
 *               String ="abc";直接赋值的方式创建字符串对象,内容就是abc
 *      推荐使用直接赋值的方式
 /
public class StringDemo_02 {
    public static void main(String[] args){
//        public String();创建一个空白字符串,不含任何内容
        String s1=new String();
        System.out.println("s1:"+s1);
//          public String(char [] chs);根据字符数组的内容,来创建字符串对象
        char [] chs={'a','b','c'};
        String s2=new String(chs);
        System.out.println("s2:"+s2);
//        public String(byte [] bys);根据字节数组的内容,来创建字符串对象
        byte []byt={97,98,99};
        String s3=new String(byt);
        System.out.println("s3:"+s3);
//        String ="abc";直接赋值的方式创建字符串对象,内容就是abc
        String s4="abc";
        System.out.println("s4:"+s4);

    }
}

2.3、String对象的特点

package com.itheima_03;

public class StringDmeo_01 {
    public static void main (String[] args){
        char []chs={'a','b','e'};
        String s1=new String(chs);
        String s2=new String(chs);
//        引用类型用==,比较的是地址是否相等
        System.out.println(s1==s2);
//        用equals()比较的是内容是否相等
        System.out.println(s1.equals(s2));
        String s3="abc";
        String s4="abc";
        System.out.println(s3==s4);
        System.out.println(s3.equals(s4));

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

 案例:用户登陆

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

package com.itheima_03;

import java.util.Scanner;

/*
* 需求:已知用户名和密码,请用程序实现模拟用户登陆,总共给三次机会,登录之后,给出相应提示。
*
* 需求分析:
*      需求创建一个String类 导包,用户可以在控制台输入name和password
       n创建两个成员变量 name password
       用equals()判断name与所给的username内容是否相等,password与pwd内容是否相等
       设置校验次数为3次,每次校验失败都给出提示
* */
public class StringDemo_02 {
    public static void main(String[] args) {
//  定义两个数组,用字符串表示
        char[] chs1 = {'y', 'l'};
        String un = new String(chs1);
        char[] chs2 = {'a', 'b', 'c'};
        String pwd = new String(chs2);
        for (int i = 0; i < 3; i++) {
//        输入的不对就在循环一次,超过三次就锁定
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名");
            String name = sc.nextLine();
            System.out.println("请输入用户密码");
            String password = sc.nextLine();

            if (un.equals(name) && pwd.equals(password)) {
                System.out.println("登陆成功");
            } else {
                if (2 - i == 0)
                {
                    System.out.println("账户已锁定,请与管理员联系");
                } else {
                    System.out.println("你还有" + (2 - i) + "次机会");
                }

            }


        }

    }
}

案例:遍历字符串

需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串

package com.itheima_03;

import java.util.Scanner;
/*
* 需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
* 分析:
*      导包,输入一个字符串
*      然后把字符串给一个字符串数组,
*      对字符串数组进行遍历
*      可以用一个方法
*
*
* */
public class StringDemo_03 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String line=sc.nextLine();
//        line.charAt(0);
//        line.charAt(1);
//        line.charAt(2);
//        System.out.println(line.charAt(0));
//        输出字符串的长度
        System.out.println(line.length());
//        字符串的数组长度需要加上line.length()

        for (int i=0;i<line.length();i++)
        {
            line.charAt(i);
            System.out.println(line.charAt(i));
        }
    }
}

案例:统计字符串中大写字母、小写字母、数字的个数并输出

package com.itheima_04;

import java.util.Scanner;

public class StringDemo_01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String line=sc.nextLine();
//        String ch=line.charAt(0);
        int a=0;
        int b=0;
        int c=0;
        for (int i=0;i<line.length();i++)
        {
            line.charAt(i);
//            System.out.println(line.charAt(i));
            if(line.charAt(i)>='A'&&line.charAt(i)<='Z')
            {
                a++;
//                System.out.println("大写字母有:"+line.charAt(i));
//                System.out.println(a);

            }else if(line.charAt(i)>='a'&&line.charAt(i)<='z')
            {
                b++;
//                System.out.println("小写字母有:"+line.charAt(i));
//                System.out.println(b);

            }else if(line.charAt(i)>='0'&&line.charAt(i)<='9')
            {
                c++;
//                System.out.println("数字有:"+line.charAt(i));
//                System.out.println(c);
            }
        }
        System.out.println("大写字母:"+a+"  小写字母:"+b+"  数字的个数:"+c);

    }
}

案例:拼接字符串

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

注意:+在没有碰到字符串的时候,作用是数值运算的加法作用,当第一次遇到字符串的时候,将成为字符串连接符,其后所有的量都将先被转换为字符串然后做拼接。

package com.itheima_04;

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

    }
//    定义一个方法,用于把int数组中数据按照指定的格式拼接成一个字符串
/*  两个需要注意的地方:
                返回值应该是String
                参数:int [] arr
* */
    public static String arrayToString(int [] arr){
        String s=" ";
//        字符串类型可以用+  连接。
//        当+前面不是数字时,+就起连接作用
        s+="[";

        for (int i=0;i<arr.length;i++)
        {

            if(2-i>0)
            {
                s+=arr[i];
                s+=',';
            }else
            {
                s+=arr[i];
            }
        }
        s+="]";
        return s;
    }

}

案例:字符串反转

需求:定义一个方法,实现字符串录入,调用该方法,在控制台输出结果。

例如:键盘输入abc,输出cba

package com.itheima_04;

import java.util.Scanner;

public class StringDemo_03 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String line=sc.nextLine();
        System.out.println("你输入的字符串长度为:"+line.length());
        String ch=getString(line);
        System.out.println(ch);
    }
//    定义一个方法,将字符出遍历倒序输出
    public static String getString(String line)
    {
        String s="";
        for(int i=line.length()-1;i>=0;i--)
        {
           s+=line.charAt(i);
        }
            return s;
    }
}

3、StringBuilder

 

 

package com.itheima_05;
/*
* 先创建对象,有对象之后才能调用方法
* */
public class StringBuilder_01 {
    public static void main(String[] args) {
        StringBuilder s1=new StringBuilder();
        System.out.println("s1:"+s1);
        System.out.println("s的长度"+s1.length());

        StringBuilder s2=new StringBuilder("avs");
        System.out.println("s2:"+s2);
        System.out.println("s2的长度"+s2.length());
//      append()用于添加任意类型的数据,并且对象可以返回他本身
        StringBuilder   s3=new StringBuilder ("ni,");
        s3.append("hao,").append("I,").append("am,").append("yl");
        System.out.println("s3:"+s3);
//      reverse()用于将对象倒序输出
        StringBuilder   s4=new StringBuilder ("uoy eovl");
        s4.reverse();
        System.out.println("s4:"+s4);

//        int [] arr={1,2,3,4,5};
//        arr[].reverse();
//        System.out.println(arr);
    }
}
package com.itheima_05;

public class StringBuilder_02 {
    public static void main(String[] args) {
//        将String转换为StringBuilder
        String s1=new String("abc");
        System.out.println("s1:"+s1);
        StringBuilder sb=new StringBuilder(s1);
        sb.append("efg");  //String转换成SB之后,就可以使用append
        sb.reverse();
        System.out.println(sb);
//        将StringBuilder转换为String
        StringBuilder sb1=new StringBuilder("woxuehuile");

        sb1.append("+chifan");
        String s=sb1.toString();
//        s+="woxuehuile";
//        s.append("chifan");  转换之后就不不能再用append() reverse()了
//          s.reverse();
        System.out.println(s);
        System.out.println(s.length());
    }
}

案例:拼接字符串

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

 

package com.itheima_05;
/*
* 需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,
*     调用该方法,并在控制台输出结果,
*     例如:数组为int [ ]arr={1,2,3};执行方法后的输出结果为:[1,2,3]
* */
public class StringBuilderTest_01 {
    public static void main(String[] args) {
        int[] arr={1,2,3};
        String s1=arrayToString(arr);
        System.out.println("s1:"+s1);
    }
//    定义一个方法,将数组遍历,并且将数组元素类型转换成String类型
    public static String arrayToString(int [] arr) {
        StringBuilder s=new StringBuilder();
//        s+="[";
        s.append("[");

        for(int i=0;i<arr.length;i++)
        {
//            System.out.println(arr[i]);

//            s+=",";
            if(arr.length-i>1)
            {
                s.append(arr[i]).append(",");
//                s+=",";
//                s.append("]");
            }else
            {
//                s+=arr[i];
                s.append(arr[i]);
            }
        }
        s.append("]");
//        System.out.println(s);
//        将StringBuilder转化String
        String s0=s.toString();
        return s0;


    }
}

案例:在控制台输入一个字符串,调用一个方法,将字符串倒序输出。使用StringBuilder

package com.itheima_05;
import java.util.Scanner;
/*
* 需求:
*       定义一个方法,实现字符串反转,键盘录入一个字符串,调用该方法后,在控制台输出结果。
*分析:
*    导包,键盘输入字符串
*    在定义方法中利用StringBuilder 中的reversr()来实现字符串的反转
*  */
public class StringBuilderTest_02 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String s=sc.nextLine();
        String ch=reverse(s);
        System.out.println("反转后的字符串为:"+ch);

    }
//    定义一个方法,用来输入的字符串反转
    public static String reverse(String s){
//        String sb=s.toString();  将SB转换为String
        StringBuilder sb=new StringBuilder(s);
        sb.reverse();
//        System.out.println(sb);
        String s1=sb.toString();
        return s1;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值