Java学习笔记——String类

2023-11-13

API概述

在这里插入图片描述

案例:键盘录入字符串

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

package top.djzxdx.demo1206;

import java.util.Scanner;

public class DemoScanner {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        int i = sc.nextInt();
        System.out.println("请输入:");
        String next = sc.next();
        System.out.println(i);
        System.out.println(next);
    }
}

注意:当nextInt();和nextLine();一起用的时候,会出现nextLine没有机会执行的情况,建议此时把nextLine方法换成next方法。这种问题只会发生在控制台中键盘输入的情况下,实际今后项目上都是web开发,通过网页执行的,则不会发生这种问题,因此无需担心。

String 概述

在这里插入图片描述

String类的常见构造方法

在这里插入图片描述
在这里插入图片描述

创建字符串对象的区别

在这里插入图片描述
常量池中有的变量不会重新创建,所以内存地址相同,返回true;但new出来的创建的字符串对象,默认在堆内存中,内存地址不一样,所以返回false。

String常见的面试题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符串的比较

在这里插入图片描述
package top.djzxdx.stringmethod;

public class Demo1Equals {
public static void main(String[] args) {
String s1 = “abc”;
String s2 = “ABC”;
String s3 = “abc”;
System.out.println(s1.equals(s2)); //false
System.out.println(s1.equals(s3)); //true
System.out.println(s1.equalsIgnoreCase(s2)); //true
}
}

案例:用户登录

需求:已知一个用户的用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录失败给出提示:用户名密码不正确,请重试;登录成功之后,给出提示:登录成功。
思路:
1、定义2个String 类型的变量a和b,分别存储用户名和密码。
2、再定义1个sc1用于接收键盘输入的用户名,1个sc2用于接收键盘输入的密码;
3、写一个for循环,用于控制次数。
4、if语句判断如果a.equals© && b.equals(d),则登录成功,然后break;else:用户名密码不正确,请重新输入。

package top.djzxdx.logintest;

import java.util.Scanner;

public class LoginTest {
    public static void main(String[] args) {
        String a = "username";
        String b = "password";
        Scanner sc = new Scanner(System.in);
        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入用户名:");
            String c = sc.nextLine();
            System.out.println("请输入密码:");
            String d = sc.nextLine();
            if (a.equals(c) && b.equals(d)) {
                System.out.println("登录成功");
                break;
            } else {
                if (i < 3) {
                    System.out.println("用户名或密码不正确,请重新输入!" + "您还剩余" + (3 - i) + "次机会");
                } else {
                    System.out.println("您输错了3次,明天再试吧!");
                }
            }
        }
    }
}

遍历字符串

在这里插入图片描述

package top.djzxdx.forstring;

import java.util.Scanner;

public class ForString {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.nextLine();
        for (int i = 0; i < str.length(); i++) {
            System.out.print(str.charAt(i) + " ");
        }
    }
}

在这里插入图片描述

package top.djzxdx.tochararray;

import java.util.Scanner;

public class ToCharArray {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.nextLine();
        char[] arr = str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

package top.djzxdx.test4;

import java.util.Scanner;

public class Test4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = sc.nextLine();
        int d = 0, x = 0, sz = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c >= 'A' && c <= 'Z') {
                d++;
            } else if (c >= 'a' && c <= 'z') {
                x++;
            }else if (c >= '0' && c <= '9') {
                sz++;
            }else{
                continue;
            }
        }
        System.out.println("您输入的字符中,大写字母有"+d+"个,小写字母有"+x+"个,数字有"+sz+"个。");
    }
}

案例:手机号屏蔽——字符串截取方法

需求:以字符串的形式从键盘接收1个手机号,将中间四位号码屏蔽。
最终效果:156****1234
第一种实现代码(不使用字符串截取方法):

package top.djzxdx.phonenum;

import java.util.Scanner;

public class PhoneNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        one:
        while (true) {
            System.out.println("请输入一个手机号:");
            String s = sc.nextLine();
            if (s.length() < 11 || s.length() > 11) {
                System.out.println("您输入的手机号位数不正确,请重新输入:");
                continue;
            } else {
                String snew = "";
                char[] chars = s.toCharArray();
                for (int j = 0; j < chars.length; j++) {
                    if (chars[j] < '0' || chars[j] > '9') {
                        System.out.println("您输入的手机号含有非法字符,请重新输入");
                        continue one;
                    }
                }
                for (int i = 0; i < 3; i++) {
                    snew = snew + chars[i];
                }
                snew = snew + "****";
                for (int i = 7; i < 11; i++) {
                    snew = snew + chars[i];
                }
                System.out.println("隐藏后的手机号码为:" + snew);
                break one;
            }
        }
    }
}

第二种实现方法(使用substring截取方法):

package top.djzxdx.phonenum;

import java.util.Scanner;

public class PhoneNumSubstring {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        one:
        while (true) {
            System.out.println("请输入一个手机号:");
            String s = sc.nextLine();
            if (s.length() < 11 || s.length() > 11) {
                System.out.println("您输入的手机号位数不正确,请重新输入:");
                continue;
            } else {
//                String snew = "";
                char[] chars = s.toCharArray();
                for (int j = 0; j < chars.length; j++) {
                    if (chars[j] < '0' || chars[j] > '9') {
                        System.out.println("您输入的手机号含有非法字符,请重新输入");
                        continue one;
                    }
                }
                String q = s.substring(0, 3);
                String h = s.substring(7);
                System.out.println("隐藏后的手机号码为:" + q + "****" + h);
                break one;
            }
        }
    }
}

截取方法的使用说明:
在这里插入图片描述

案例:敏感词替换——字符串替换

在这里插入图片描述

package top.djzxdx.replace;

import java.util.Scanner;

public class DemoReplace {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = sc.nextLine();
        String yc = s.replace("TMD", "***");
        System.out.println(yc);
    }
}

切割字符串

需求:以字符串的形式从键盘录入学生信息,例如:“张三,23”,从该字符串中切割出有效数据,封装为Student学生对象。
用于封装数据的类,都会新建一个包,包名叫domain,把用于封装数据的类都放到domain下。
在这里插入图片描述

package top.djzxdx.domain;

public class Student {
    private String name;
    private String age;

    public Student() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public Student(String name, String age) {
        this.name = name;
        this.age = age;
    }
}

在这里插入图片描述

package top.djzxdx.test5;

import top.djzxdx.domain.Student;

import java.util.Scanner;

public class StudentTest5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生的姓名和年龄,用逗号隔开:");
        String s = sc.nextLine();
        String[] arrs = s.split(",");
        Student stu = new Student(arrs[0], arrs[1]);
        System.out.println(stu.getName() + "..." + stu.getAge());
    }
}

String方法小结

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java学习笔记——String类 的相关文章

随机推荐

  • 深度学习学习率

    目录 1 什么是学习率 2 学习率对网络的影响 3 学习率的设置 3 1 分段常数衰减 Piecewise Decay 3 2 指数衰减 Exponential Decay 3 3 自然指数衰减 Natural Exponential De
  • 【tensorflow】AttributeError: module ‘tensorflow._api.v1.compat‘ has no attribute ‘v1‘

    2020年2月4日 0次阅读 共232个字 0条评论 0人点赞 QueenDekimZ tensorflow slim python object detection builders model builder test py 出现报错
  • 快速学会git版本管理——上传gitee仓库

    首先在gitee右上角有一个新建仓库 创建之后打开自己想要上传的文件 右键打开 Git Bash Here 接下来会弹出git的窗口 首先先初始化仓库 用git命令 git init 然后用git add 上传所有文件上传到暂存区 上一篇文
  • 刷脸支付优化用户体验赋能商家运营

    从前我们还在说以后要是能靠脸吃饭就好了 时至今日刷脸支付的到来 真正的可以实现靠脸吃饭了 刷脸支付用户两年或超7 6亿 2022年中国刷脸支付用户规模将突破7 6亿 刷脸支付同时具备优化用户体验和赋能商家运营的作用 在各大平台加速推广的情况
  • springboot整合jett实现模板excel数据导出

    一 jett的介绍 1 1 介绍 jett是使用Excel电子表格模板快速创建Excel电子表格报告的工具 1 2 使用方式 1 使用 来标识我们需要填充的数据 2 使用
  • 多个版本的python共存,以及怎么使用不同版本的pip

    一 安装2 7 3 6 8 3 8 5三个版本的python 安装过程略 注意 添加上环境变量就行 二 实现多版本共存 1 修改python2的文件名 进入Python2 7安装目录找到如图内容 把python exe重命名为python2
  • redis中hash表内容删除的方法代码

    hash Redis hash是一个string类型的field和value的映射表 hash特别适合用于存储对象 Redis 中每个hash可以存储 232 1键值对 40多亿 实例 127 0 0 1 6379 gt HMSET run
  • 毕业设计-基于BP神经网络预测系统的设计- MATLAB

    目录 前言 课题背景和意义 实现技术思路 一 神经网络 三 图形用户界面的实现 四 神经网络预测系统的设计 五 神经网络预测系统的性能和特点 部分源代码 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业
  • vue开发调试

    1 调试方式 1 1 为什么调试 当遇到应用逻辑出现错误 但又无法准确定位的时候 同后台项目开发一样 可以在JS实现的应用逻辑中设置断点 并进行单步 进入方法内 跳出方法等调试 从而准确定位问题根源 1 2 调试方法 本文主要讲两种方式 d
  • Linux系统安装配置curl

    1 获得安装包 从网上直接下载或者其他途径 这里直接wget wget http curl haxx se download curl 7 20 0 tar gz 2 解压到当前目录 或者 http www linuxidc com Lin
  • 贝叶斯方法应用:检测时间序列拐点

    随着时间推移 制造设备比如贴片机的位置由于各种原因会产生小的偏差 这些偏差可能是阶跃 也有可能是渐变的形式 由于偏差值很小 产线的自动光学检测设备并不会报警 然而小的偏差如果不经处理 经过一定时间累积会产生较大偏差 影响产品质量 为了能够提
  • 最好看的代码雨特效

    上代码
  • 2010年10大热门的开源NoSQL服务器软件

    NoSQL 就是反SQL 是一项全新的数据库革新运动 特别是在 2010 年得以迅猛发展 而各种开源的 NoSQL 软件突然间涌现在你面前 目前似乎没有对 NoSQL 给出一个标准的定义 也没有相应的规范 但从这些软件可以看出 NoSQL
  • WCF 第五章 一个单一实例中的多线程

    默认的InstanceContextMode行为设置指导WCF为每个请求创建一 个新的服务实例 然后在很多情况下 这不是最好的解决方案 例如 如果一个服务有一个代价很高的例行初始化 比如 一个构造器从一个数据库读取数据或者创 建一个大的内存
  • Linux OpenGauss 数据库远程连接

    目录 前言 1 Linux 安装 openGauss 2 Linux 安装cpolar 3 创建openGauss主节点端口号公网地址 4 远程连接openGauss 5 固定连接TCP公网地址 6 固定地址连接测试 前言 openGaus
  • carla二次开发(一)自定义创建地图

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 为什么创建carla地图很困难 二 官方创建方法 三 blender插件创建地图 四 City Engine创建地图 五 ue4创建地图 前言 carla
  • 某A类网络10.0.0.0的子网掩码255.224.0.0,请确定可以划分的子网个数,写出每个子网的子网号及每个子网的主机范围。

    某A类网络10 0 0 0的子网掩码255 224 0 0 请确定可以划分的子网个数 写出每个子网的子网号及每个子网的主机范围 可以确定划分的子网有2 3 2 6个 子网号 10 32 0 0主机范围 10 32 0 1 10 63 255
  • 数据结构计算题

    1 将下列函数按它们在 n 时的无穷大阶数 从小到大排列 n n n3 7n5 nlogn 2n 2 n3 log2n n1 2 log2n 3 2 n n n2 log2n 解答 log2n n1 2 log2n n nlog2n n2
  • c语言a b等于c的编程,简单的a+b (C语言代码)

    解题思路 题目中要求多次输入 所以需要一个死循环来进行控制 一般采用while 1 或者for 注意事项 scanf 函数需要加上取地址符 且它的返回值 它的返回值可以分成三种情况 1 正整数 表示正确输入参数的个数 例如执行 scanf
  • Java学习笔记——String类

    目录 API概述 案例 键盘录入字符串 String 概述 String类的常见构造方法 创建字符串对象的区别 String常见的面试题 字符串的比较 案例 用户登录 遍历字符串 案例 手机号屏蔽 字符串截取方法 案例 敏感词替换 字符串替