1.字符串的类型
(1)String
(2)StringBuilder
(3)StringBuffer
2.三者的区别
String类型的对象内容不可变
StringBuffer 和 StringBuilder类型的对象内容可变,而他们二者的区别在于:线程的安全性。
StringBuffer是线程安全的,StringBuilder是线程不安全的。
-
把String内容当成char[]进行操作
String str = "hello"; char[] charArray = str.toCharArray();//把String内容取出来组成一个char数组 char c = str.charAt(1);//根据下标返回该位置的char,会报StringIndexOutOfBoundsException int length = str.length();//获取字符串的长度
4.三个特殊方法
a. trim() --- 去掉字符串的前后空格
String newStr = " hello world ! ".trim(); System.out.println(newStr);
b. split() --- 字符串拆分(支持正则表达式)
String[] array = "2022-10-19".split("[-]"); System.out.println(array.length); System.out.println(array[1]);
c. matches() --- 用来对字符串是否满足正则表达式进行校验
System.out.println("请输入一个电话号码:"); String inputPhoneNum = new Scanner(System.in).next(); if(inputPhoneNum.matches("8320([0-9]{4}|11[09]|120)")){ System.out.println("匹配"); }else{ System.out.println("不匹配"); }
5.正则表达式(Regex)
就是用来表示某种字符串内容组成形式的表达式。
比如,我们在注册网站的时候需要输入填写邮箱的时候,我们用到用户输入的邮箱账户这个字符串去调用matches方法去匹配正则表达式,匹配上就返回true,否则就为false。
我们需要认识三种括号:
A. [ ] ---- 表示一个字符: 比如, [0123456789] [abcd......] 简写可以写作[0-9]或者[a-z]
也可以写取不到某个数[ ^123]这样子进行书写。
B. {} -----表示之前出现的表达式的次数,简单的理解可以想成“*”数学当中的乘法,当然稍微有些许区别。
{n,m}-----他有两个参数,n---表示至少出现n次,m----表示最多出现几次。
{n,}------它表示至少出现n次,多了不限制。
{n}-----只能出现n次
{,m}------这个语法是没有的,不能写成这样子。
C. ()-------(组一|组二|组三) 表示满足其中任意一个都可以
实例
/* 书写一个正则表达式验证:在ATM机器中取钱,只能是2万以及2万之内的百元整数 */
System.out.println("请输入你要存款的金额:"); String inputMoney = new Scanner(System.in).next(); if(inputMoney.matches("(200|1[0-9]{2}|[1-9][0-9]?)00")){ System.out.println("输入成功"); int im = Integer.parseInt(inputMoney); }else{ System.out.println("本ATM只接收2万及2万以内的百元整钞。"); }
我们要明白Java中正则表达式中进行判断的时候,我们首先要明白题目要求,读题。
在进行判断的时候,我们要首先明白这个题目是几位数。
题目中,2万是五位数,“00000”----
我们再看,只能取款百元整钞,我们就能确定最后两位是“00”
(万位|千位|百位)00,这个就是作为题目进行分析。一个五位数,确定了个位和十位
即,百位只能有一位数字,千位只能有两位,万位有三个数字。
即:可以得到判断条件
(200|1[0-9] [0-9]|[1-9] [ 0-9]|[1-9])00
简写化为:
(200|1[0-9] {2}|[1-9] [ 0-9]?)00