Day 14 of learning Java——字符串

本文是一位大一计算机新生的学习笔记,介绍了Java中的字符串基础知识,包括String、StringBuffer类,字符串的创建和连接操作,以及正则表达式的概念和应用。作者通过编写用户登录验证的简单代码,实践了字符串操作和正则表达式的使用。
摘要由CSDN通过智能技术生成

something about me

Hello!米娜桑!我是迴憶Li待續~,一名大一计算机新生。受到我好基友的影响,我也决定写写来帮助我的学习。我同时也是杰迷和吉吉粉,平时写代码离不开音乐,而我的名字呢便是来自于周董的一首歌,具体是哪一首jay迷们一定都知道了。

我在学习了C语言和一点的python后,我决定开始学习java。因为很多网页制作等等方面离不开Java,Java 毋庸置疑仍是当前互联网行业里招聘需求量最大的。

初学肯定会有一些难度,但对于放寒假的我来说,有的是时间卷Java😳

但愿能从今天开始到开学那段时间好好把握,减少一些打王者的时间😁

接下来呢就是我今天所卷的内容——字符串

初始字符串

字符串在C语言就已经系统地认识了,Java中的字符串与C语言中的也没有很大的区别。字符串分为好几个类,有最常见的String类以及需要对字符串进行处理的比如StringBuffer,StringBuilder等

String型字符串

三种格式

格式1:

String 变量名;
变量名 = new String("字符串");

格式2:(就是格式1的合并)

String 变量名 = new String(“字符串”);

格式3:(最常用到的)

String 变量名 = "字符串";

由于字符串是引用型变量,存储方式与数组基本相同。

字符串相加

Java语言定义了“+”运算符可以实现两个字符串的连接操作,例如:

str = "czw" + "真的很卷!";        //str的值就是czw真的很卷!

注意:

String str1 = "czw";
str1 = str1 + "很卷";

String类创建的字符串变量,一旦被初始化或者赋值,它的值和所分配的内存内容不会改变,若强行改变则会产生新的字符串!

String类常用方法

格式:字符串变量名.方法名();

str.length() //字符串长度

str1.equals(str2) //比较

str.substring(index) //返回从index开始直到最后

str.substring(index1,index2) //从index1开始到index2-1

str.charAt(index) //返回指定位置字符

str.indexOf(a) //返回字符串a在str中第一次出现的位置

str.lastIndexOf(a)//最后一次

str.toLowerCase() // 转为小写

str.toUpperCase() // 转为大写

以上是我认为比较常见的,但是我认为完全没必要背,记不得了就去API看一眼就行😇

小小的练习一下下

题目是自己创建一个用户登录界面,输入用户名和密码,错误就重新输入,不超过三次。正确就登录成功!适当人性化一涅涅😜

import java.util.Scanner;
public class String_test {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        java.lang.String rightname = "cjp";
        java.lang.String rightpassword = "cjpnb";
        int i;
        int flag = 0;
        for(i = 1;i<=3;i++){
            System.out.println("请输入用户名:");
            java.lang.String name = sc.next();
            System.out.println("请输入密码:");
            java.lang.String password = sc.next();
            if(name.equals(rightname)){
                if(password.equals(rightpassword)){
                    System.out.println("输入正确!");
                    flag = 1;
                    break;
                }else{
                    System.out.println("密码错误!");
                    System.out.println("您还剩下"+(3-i)+"次机会!");
                }
            }else{
                System.out.println("用户名错误");
                System.out.println("您还剩下"+(3-i)+"次机会!");
            }
        }
        if(flag != 1){
            System.out.println("账号冻结!");
        }
    }
}

以上呢就是我自己稍微写的一涅涅简单的代码,是可以运行的。

StringBuffer型字符串

创建结构:

StringBuffer 字符串名 = new StringBuffer(个数/"字符串内容") 

感觉用到的地方暂时不是很大,稍微了解一下下

还有那个StringBuffer类常用方法API上都有,需要就去瞟一眼就行

正则表达式

这个我觉得有伊涅涅小难度,就是比较抽象。

具体这是干嘛的就是说,他是一个字符串处理工具,它可以判断给定的字符串是否可以符合一定的条件,或者我们可以获得一些特定的部分

语法结构:

这个还是有必要说一下下的

String regex = "正则表达式";
String input = sc.next();
Pattern pa = Pattern.compile(regex);
Matcher ma = pa.matcher(input);
if(ma.matches())
    System.out.println("correct!");
else
    System.out.println("error!");

使用之前还得注意是否需要导入类:

import java.util.Scanner;    
import java.util.regex.Pattern;    
import java.util.regex.Matcher;    

具体的我觉得看几个例子就完全理解了,一下就是我整理的常用的:

常用正则表达式:

只能输入数字:"^[0-9]*$"

  只能输入n位的数字:"^\\d{n}$"

  只能输入至少n位的数字:"^\\d{n,}$"

  只能输入m~n位的数字:。"^\\d{m,n}$"

只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"

  只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"

  只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"

  只能输入非零的正整数:"^+?[1-9][0-9]*$"

  只能输入非零的负整数:"^-[1-9][]0-9"*$"

  只能输入长度为3的字符:"^.{3}$"

  只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"

  只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"

  只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"

  验证用户密码:"^[a-zA-Z]\\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。

  只能输入汉字:"^[\\u4e00-\\u9fa5]{0,}$"

  验证Email地址:"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"

  验证InternetURL:"^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$"

  验证电话号码:"1[358]\\d{9}$"

  验证身份证号(15位或18位数字):"^\\d{15}|\\d{18}$"

  验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"

  验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"

具体举个例子

输入一个手机号,判断是否合理,运用正则表达式判断

import java.util.Random;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class java_learning_5th {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        String regex = "1[358]\\d{9}$";
        System.out.println("请输入手机号:");
        String input = sc.next();
        Pattern pa = Pattern.compile(regex);
        Matcher ma = pa.matcher(input);
        if(ma.matches())
            System.out.println("correct!");
        else
            System.out.println("error!");
    }
}

所以大概就是这么个意思,还挺好理解的😁

总结一下下

到目前为止,大多数还是C语言里的基本内容应用到Java里的内容,具体难点就是正则表达式的书写,但熟练了也就不难了

最后,it is my first time !希望能坚持下去,要求不高争取两天写一次!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值