Java学习笔记——String类

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方法小结

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传是Web开发中常见的功能之一,Java中也提供了多种方式来实现文件上传。其中,一种常用的方式是通过Apache的commons-fileupload组件来实现文件上传。 以下是实现文件上传的步骤: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> ``` 2.在前端页面中添加文件上传表单: ```html <form method="post" enctype="multipart/form-data" action="upload"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3.在后台Java代码中处理上传文件: ```java // 创建一个DiskFileItemFactory对象,用于解析上传的文件 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置缓冲区大小,如果上传的文件大于缓冲区大小,则先将文件保存到临时文件中,再进行处理 factory.setSizeThreshold(1024 * 1024); // 创建一个ServletFileUpload对象,用于解析上传的文件 ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制,这里设置为10MB upload.setFileSizeMax(10 * 1024 * 1024); // 解析上传的文件,得到一个FileItem的List集合 List<FileItem> items = upload.parseRequest(request); // 遍历FileItem的List集合,处理上传的文件 for (FileItem item : items) { // 判断当前FileItem是否为上传的文件 if (!item.isFormField()) { // 获取上传文件的文件名 String fileName = item.getName(); // 创建一个File对象,用于保存上传的文件 File file = new File("D:/uploads/" + fileName); // 将上传的文件保存到指定的目录中 item.write(file); } } ``` 以上代码中,首先创建了一个DiskFileItemFactory对象,用于解析上传的文件。然后设置了缓冲区大小和上传文件的大小限制。接着创建一个ServletFileUpload对象,用于解析上传的文件。最后遍历FileItem的List集合,判断当前FileItem是否为上传的文件,如果是,则获取文件名,创建一个File对象,将上传的文件保存到指定的目录中。 4.文件上传完成后,可以给用户一个提示信息,例如: ```java response.getWriter().write("File uploaded successfully!"); ``` 以上就是使用Apache的commons-fileupload组件实现文件上传的步骤。需要注意的是,文件上传可能会带来安全隐患,因此在处理上传的文件时,需要进行严格的校验和过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值