java基础-字符串

字符串常见的API

String

StringBuilder

StringJonier

StringBuffer

Pattern

Matcher

字符串的内容是不会发生改变的,它的对象被创建后不能被更改

字符串对象的创建,有两种方式:

1、直接赋值

2、使用new关键字构造方法

复制代码
package com.jdL.day10classwork;

public class Stringtest01 {
    public static void main(String[] args) {
        //使用new方式获取一个对象
        //使用空参构造
        String str=new String();
        System.out.println(str);
        //使用有参构造
        String str1=new String("abc");
        System.out.println(str1);
        //传递一个字符数组,根据字符数组再创建一个新的字符串对象
        char[] c={'a','b','c','d','e'};
        String str2=new String(c);
        System.out.println(str2);
        //传递一个字节数组,根据字节数组再创建一个新的字符串对象
        byte[] a={97,98,99,100};
        String str3=new String(a);
        System.out.println(str3);
    }
}

字节数组是把对应的数字找到ACII码表中对应的字母,拼接成字符串

字符串的比较:

java提供了两种比较字符串的方式

一种是equals,另外一种是equalsIgnoreCase

这两种方式的区别在于,第二种是忽视大小写的,第一种意味着是两个字符串的内容要完全一样才可以

比较字符串的练习

账号/密码输错三次,提示锁定账号

复制代码
package com.jdL.day10classwork;

import java.util.Scanner;

public class Stringtest02 {
    public static void main(String[] args) {
        String userName="lisi";
        String passWord="123456";
        int count1=0;
        for(int i=0;i<3;){
            System.out.println("请输入用户名");
            Scanner sc=new Scanner(System.in);
            String name=sc.next();
            if (name.equals(userName)){
                break;
            }else {
                System.out.println("用户名错误,您还剩下"+(2-i)+"次机会");
                i++;
                count1++;
            }
        }
        int count2=0;
        if(count1>=3) {
            System.out.println("用户名输入超过三次,账号锁定");
        }else {
            for (int i = 0; i < 3; ) {
                System.out.println("请输入用户密码");
                Scanner sc1 = new Scanner(System.in);
                String password = sc1.next();
                if (password.equals(passWord)) {
                    System.out.println("登录成功");
                    break;
                } else {
                    System.out.println("密码错误,您还剩下"+(2-i)+"次机会");
                    i++;
                    count2++;
                }
            }
        }
        if(count2>=3){
            System.out.println("密码输错三次,账号锁定");
        }
    }
}

字符串的遍历:

复制代码
package com.jdL.day10classwork;

public class Stringtest03 {
    public static void main(String[] args) {
        String str="abcdefg";
        for(int i=0;i<str.length();i++){
            System.out.print(str.charAt(i));
        }
    }
}

练习:

键盘录入一个字符串,判断这个字符串中包含的大写字母的个数,小写字母的个数,数字的个数

复制代码
package com.jdL.day10classwork;

import java.util.Scanner;

public class Stringtest04 {
    public static void main(String[] args) {
        System.out.println("请输入一个字符串");
        Scanner sc=new Scanner(System.in);
        String newStr=sc.next();

        int lowerCount=0;
        int upperCount=0;
        int number=0;
        for(int i=0;i<newStr.length();i++){
            if(newStr.charAt(i)>=65&&newStr.charAt(i)<=90){
                upperCount++;
            }else if(newStr.charAt(i)>=97&&newStr.charAt(i)<=122){
                lowerCount++;
            }else if(newStr.charAt(i)>=48&&newStr.charAt(i)<=57){
                number++;
            }
        }
        System.out.println("字符中包含的大写字母个数有:"+upperCount);
        System.out.println("字符中包含的小写字母个数有:"+lowerCount);
        System.out.println("字符中包含的小写字母个数有:"+number);
    }
}

把int数组拼接成一个字符,比如

int\[\] arr={1,2,3},拼接成1,2,3

复制代码
package com.jdL.day10classwork;

public class Stringtest05 {
    public static void main(String[] args) {
        int[] array={1,2,3,4};
        String result="[";
        for(int i=0;i<array.length;i++){
            if(i==array.length-1){
                result=result+array[i]+"]";
            }else {
                result=result+array[i]+",";
            }
        }
        System.out.println(result);
    }
}

字符串反转

复制代码
package com.jdL.day10classwork;

public class StringReversal {
    public static void main(String[] args) {
        String str1="abcdefg";
        String newStr=stringReversal(str1);
        for(int i=0;i<newStr.length();i++){
            System.out.print(newStr.charAt(i));
        }

    }

    public static String stringReversal(String str){
        String result="";
        for(int i=str.length()-1;i>=0;i--){
            char a=str.charAt(i);
            result=result+a;
        }
        return result;
    }
}

字符串的互换位置,比如abcd,变成dcba,这样,再拨入abcde,就变成edcba

复制代码
package com.jdL.day10classwork;

public class Stringtest06 {
    public static void main(String[] args) {
        String str1="abcefgh";
        String newStr=stringback(str1);
        for(int i=0;i<newStr.length();i++){
            System.out.print(newStr.charAt(i));
        }
    }

    public static String stringback(String str){
            //将字符串转换为字符数组
            char[] arr=str.toCharArray();
            char temp=' ';
            for(int i=0,j=arr.length-1;i<arr.length;i++,j--){
                if (i<j){
                    temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
        }
        String newString=String.valueOf(arr);
            return newString;
    }
}
相关推荐
咖啡八杯1 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育1 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵2 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔3 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影3 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Miao121314 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔4 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程
CRMEB系统商城5 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience7 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
weixin_408099677 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能