Java基础Day13

hashCode()-重写方法,返回字符串对象的哈希码值
不同对象调用Object里的hashCode方法返回值不一样-eg:2个不同的new Object对象(和环境与程序有关)
Java中所有的字符串,都是String类的对象-eg:String s=”abc”;
String s=”abc”;Syso(s.hashCode());与Syso(“abc”.hashCode());相比,后者更好一些,永远不会出现空指针
只要两个字符串对象的内容一样(字符和顺序都相同),返回的哈希码值相同

indexOf()
String str=”abc”
Syso(str.indexOf(“bc”));1 -返回子串在原串中第一个出现的字符的下标,默认从前往后找;若没有找到结果,返回-1
拓展-从特定位置开始找,str.indexOf(”f”,”4”)-(子串,起始下标)-从起始下标处找

(1个char)+””-字符变成字符串

intern()-把引用的地址值(new …)指向常量池(相等时才能指向同一个区域,不同时(“ab”与”abc”)虽然也指向常量池,但不是同一个区域)
String str1=new String(“abc”);
String str2=”abc”;
Syso(str1==str2); false
//str1=str1.intern(); 加在2、3步之间后true

Syso(str.isEmpty());-判断字符串是否是空串-即没给值(没有元素“”或String str=new String();)

将str.replace(‘old char’,’new char’);-(要替换的char,换成char)char类型
原串并没有改变,返回一个新串

Java中提供了大量不改变原串的方法(返回的是1个新串),给String类

str.substring()-截取一个子串
str.substring(2)-返回一个从起始下标开始往后截取的子串,截取的时候包括起始下标,如果给出的下标值等于字符串长度,则返回一个空串(如果超了就报错)
str.substring(2,5)-可以给定起始下标和结束下标,包括起始下标但不包括结束下标(左闭右开)

toLowerCase()大写转小写
反之toUpperCase()-小写转大写

str.trim()-去除前面和后面的空格全去掉(掐头去尾),包括制表符带来的空格

valueof()-将一个其他类型的量放在括号中,将其转化为字符串
boolean b=false;
String s=String.valueof(b);
Syso(s);false -将其转化为字符串

Syso(arr整型数组/ch字符数组);时,一个返回地址值,另一个返回拼接在一起的所有元素值,为何
int[] arr={1,2,3}; //ValueOf()底层调用Object的toString()拼接地址值
char[] ch={’1’,’2’,’3’,}; //针对char数组,依次打印元素值
若要显示地址,则syso(ch.toString());

开发工作,最常接触的就是字符串

正则表达式(class Pattern)
通过专门的语法对字符串进行精确匹配

待匹配字符串 String str=”abc”;

  1. 创建出Pettern类对象-指定匹配规则 Pattern p=Pattern.compile(“abc”);
  2. 把待匹配的字符串和匹配规则进行关联 Matcher m=p.matcher(str); //还要创建对象
  3. 进行匹配 syso(m.matches()); //都是”abc”返回true
    简写成一步的形式:syso(str.matches(“ab1c”)); //返回false

匹配字符串abd/cfg/kjl,三组各挑一个时
Syso(str.matches(“[abd][cfg][kjl]”)); 语法:[]-任意匹配其中一个
匹配数字
Syso(str.matches(“[0-9]”)); 语法:[起始-结束]-起始到结束的范围任意匹配一个(两头包括在内)或写为Syso(str.matches(“\d”)); 1个”\”系统会认为其是转义字符,消耗一个”\”,所以2个”\”,”\d”也代表0-9(可以理解为,正则转义又消耗了一个”\”)

匹配除x/y/i外,其他任意三个元素字符串
Syso(str.matches(“[^xyi]”)); ^表示非

符号“.”代表匹配任意字符syso(str.matches(“.”));
匹配”.”syso(str.matches(“\.”)); -“.”可用于匹配小数、文件后缀
匹配”\”,”\”会报错所以加上一个”\”变为匹配“\”-”\\”,字符转义去掉2个\,正则去掉1个
匹配“\t”,”-\-\\t”皆可

eg:匹配以a开头,数字结尾且最少3个字符组成的字符串,syso(str.matchs(“a.+[0-9]”));
数量词:
+,修饰前面字符,表示前面字符出现的次数-最少出现一次(>=1)
?,修饰前面字符-最多出现一次(<=1,即0次或1次)eg(“[0-9].?[a-z]”);
*,修饰前面字符-可以不出现,也可以出现多次(包括一次)

eg:匹配5个a字符组成的字符串,syso(str.matches(“a{5}”));
(“.{n,}”);-前面的字符最少出现n次(最少出现,包括刚好出现,左闭)
没有最多出现({,n}),因为会包括负数,会报错
可以组合使用(“.{2,8}”); -前面的字符出现的次数最小n最大m -eg:密码应用

正则用于场景匹配
案例:

  1. 匹配一个字符串内容是否是小数-(“0\.\d+|[1-9]\d*\.\d+”);(最左边的数不能为0)
    “|”-或-表示前后2个表达式没有关系

  2. 匹配一个字符串内容是否是密码(由小写英文字母、数字、下划线组成)(上述组成里的三类数据最少出现两类)(范围6-12位)
    判断参数是否为null;
    If(!(str.matches(“[a-z0-9_]{6,12}”)))、return false把不正常的范围与组成排除掉
    判断是否出现小写英文字母if(str.matches(“.[a-z].”))、if(str.matches(“.\d.”))、if(str.matches(“._.”))-(每类字符有3种位置,左中右,可简化为1类代码)
    每个if里有个count++
    Return count>=2; 省下1个if返回T

  3. 匹配邮箱(小写英文字母、数字、下划线、范围8-12)@(小写英文字母、数字、下划线、范围4-8位).com、.cn、.com.cn都要匹配
    (“[a-z0-9_]{8-12}@[a-z0-9_]{4-8} (\.com)”+
    “| [a-z0-9_]{8-12}@[a-z0-9_]{4-8}(\.com)?( \.cn)”);

“”+””可用加号连接

eg:匹配含有ab的字符串 -(“.ab.”);-同上,情况三合一
匹配含有2个ab的字符串 -(“.*ab.ab.”); 后面与前面重复时有简略形式吗?

()-捕获组-(“.(ab).\1.*”); 底层对括号内的内容捕获,并编号,写编号即可拿出值
捕获组编号-遇见”(“就开始编号,直至找到与之对等的”)”结束,(数据结构里栈的思想)
应用:AAAA-(“(.)\1+”);
ABAB-(“(…)\1”);
AABB-(“(.)\1(.)\2”);

根据正则语法进行匹配,匹配到后再进行替换
(str.replaceAll(“\d”,”+”));

将数量词(各种功能性符号)变为了要去匹配的字符
replaceAll(“[*?+{}]”,”-”);

eg:“tomandjack”把tom和jack互换
replaceAll(“(tom)(.*)(jack)”,”$3$2 1 ” ) − 想 在 后 面 表 达 式 拿 前 面 的 捕 获 组 , 将 n u m 换 成 1”)-想在后面表达式拿前面的捕获组,将\\num换成 1)numnum(num还是捕获组的编号)
eg:叠字变单字
(“(.)\1+”,”$1”);

思考题:
1.通过replaceAll()实现获取每个字符在字符串中出现的次数
2.把我我我爱爱爱爱学学学学习-变单字
3.字符串,魔晶-aabbbbfffddhlllllljjj,每段字符都是魔法碎片,求出魔晶的平均长度

split()
String[] s=str.split(“\d”); 将其变为切割符(将其变为逗号空格-”, ”)
2个切割符挨在一起时,会切出1个空串(n个挨在一起时,会切出n-1个空串,即n-1个逗号空格”, ”
如1个切割符出现在开头,最开始的那个为逗号空格[, …],多个同上
如切割符出现在末尾,则会被清除
Syso(Arrays.toString(s));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值