java - day009 - 基础API,object,String, StringBuilder/StringBuffer, 正则表达式
API
java.lang.object
object
所有类的顶层父类
一个类如果不继承其他类,默认继承object.
toString() 获得一个对象的字符串表示
可以重写
equals()
当前对象与参数对象比较是否相等
object 中默认实现是比较两个对象的内存地址.
可以重写
java.lang.String
String
封装一个char[] 数组
创建字符串对象
char[] a = {'a', 'b','c'};
String s = new String(a);
简化上面的语法
String s = "abc";
字符串的常量池
第一次用到一个字符串的字面值 "abc"
在 '字符串常量池'中新建对象
再次用到相同字面值时,访问'常量池'中已经存在的对象
String s2 = new String("abc");
// 这句代码创建了两个对象,第一个"abc"会在'常量池'中创建一个,new
也会在堆内存创建一个 s2 对象
字符串长度不可变
String s1 = "aaa";
String s2 = "bbb";
String s3 = "ccc";
String s4 = s1+s2+s3;
字符串+链接会新建对象
链接对此效率会低
String s5 = "aaa"+"bbb"+"ccc";
会进行编译器优化 String s5 = "aaabbbccc";
字符串方法
charAt(i); 获取指定位置的字符
indexOf(子串); 查找子串的起始位置,
String s1 = "abc abc";
String s2 = "bc";
s1.indexOf(s2) = 1;
indexOf(子串,指定位置);从指定位置向后查找子串的起始位置
lastIndexOf(子串);从后向前找
查找位置找不到会返回 -1
subString(start);截取从start 位置到末尾的子串
subString(start,end);截取[start,end)
trim();去除两端的空白字符,中间的不去除,返回一个新的字符串
length();获取字符串长度
StringBuilder/StringBuffer
可变的字符序列,封装char[]
一般用来代替String ,做高效率的字符串链接
append();
用来做字符串内容的追加
向内部数组放入新字符
数组放满,会创建容量翻倍的新数组,内容拷贝
String 和 StringBuilder 区别,不可变字符串和可变字符串的区别
StringBuilder 和 StringBuffer 区别
StringBuffer 是 旧版本的类,(jdk1.0),线程安全,效率低
StringBuilder 是 jdk1.5才有的类, 线程不安全,效率高
正则表达式 Regex(Regular Expression)
正确的字符串格式规则
一般用来判断用户输入是否符合格式要求
正则表达式是独立语法
正则表达式 | 匹配的字符串 |
k | k |
abc | abc |
[abc] | a,b,c, 只能匹配单个字符 |
[abc][123] | a1,a2,a3,b1,b2,b3,c1,c2,c3 |
[a-z] | 匹配a~z |
[a-zA-Z_0-9] | a,A,8,_ |
[^a-zA-Z] | 排除a~z,A~Z, 7,%,$,_ |
[\u4e00-\u9fa5] | 匹配中文 |
\d | 数组 |
\D | 排除数字 |
\w | 单词字符[a-zA-Z_0-9] |
\W | 排除单词字符 |
\s | 空白字符 |
\S | 排除空白字符 |
. (点) | 任意字符 |
[abc]? | ? 0或者一个 a,b,不写 , c |
[abc]?[123] | a1,b2,c3,1,2,3 |
[abc]* | * 0到多个 ,a, , abc,abbcc |
[abc]+ | + 1到多个, a,abc,abbcc |
[abc]{3} | 指定三个, abc,aab,bbb |
[abc]{3,5} | 3到5个 abc,abbc,abbbb |
[abc]{3, } | 至少三个 abc,acccccccc |
| | 或 |
( ) | \( \) 括号转译 |
Java 字符串的正则表达式匹配方法
matches(正则表达式) ; 返回 bool
replaceAll(正则表达式,子串);如果符合正则表达式,就替换成子串
split(正则表达式); 用匹配的分隔字符,拆分字符串
String s = "sdfsdfds,fsf,fdfsdf,ffs";
String[] StrArr = s.split(","); ["ffsfsf","fdsff","dsfds"]
注意:
输入反斜杠 "\" 输入 "\\"
BigDecimal/BigInteger
Date
SimpleDateFormat
java - day009 - 基础API,object,String, StringBuilder/StringBuffer, 正则表达式的更多相关文章
- java中String StringBuilder StringBuffer比较和效率(性能)测试
string stringbuilder stringbuffer三者的区别 从JDK源码看,String.StringBuilder.StringBuffer都是存放在char[] 数组字符串. 简 ...
- difference among String,StringBuilder,StringBuffer
difference among String,StringBuilder,StringBuffer String常用构造函数 String(byte[] bytes) String(byte[] b ...
- JDK源码分析系列---String,StringBuilder,StringBuffer
JDK源码分析系列---String,StringBuilder,StringBuffer 1.String public final class String implements java.io. ...
- 深入源码剖析String,StringBuilder,StringBuffer
[String,StringBuffer,StringBulider] 深入源码剖析String,StringBuilder,StringBuffer [作者:高瑞林] [博客地址]http://ww ...
- String, StringBuilder, StringBuffer问题
1. 区别 String为字符串常量,而StringBuilder和StringBuffer都是字符串变量,其中StringBuilder线程非安全,StringBuffer线程安全. 每次对 Str ...
- String StringBuilder StringBuffer区别
String StringBuilder StringBuffer String类是final类,不可以被继承,且它的成员方法也是final方法,当一个字符串对象进行操作操作时,任何的改变不会影响到这 ...
- Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类
Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...
- Java基础知识总结--String、StringBuffer、StringBuilder
1.Java String 类 String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法.在Java中,被final修饰的类是不允许被继承的,并且该类中 ...
- java学习(四)--- String 、StringBuffer、StringBuilder 和 数组
对于 String.StringBuffer.StringBuilder比较一下 主要说说三者的不同 String 长度大小不可变 StringBuffer 和 StringBuilder 长度可变 ...
随机推荐
- Tips for Conda
管理环境 创建环境 基于 python3.6 创建一个名为test_py3的环境 conda create -n test_py3 python=3.6 基于 python2.7 创建一个名为test ...
- Spring Cloud(7):事件驱动(Stream)分布式缓存(Redis)及消息队列(Kafka)
分布式缓存(Redis)及消息队列(Kafka) 设想一种情况,服务A频繁的调用服务B的数据,但是服务B的数据更新的并不频繁. 实际上,这种情况并不少见,大多数情况,用户的操作更多的是查询.如果我们缓 ...
- Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager等的详细解说
在 .aspx.cs页面中,输入这四个东西:Page.ClientScript.ClientScript.ScriptManager.ClientScriptManager,均会出提示,表示它们均可用 ...
- Moq中判断方法是否被执行时,参数中有列表的情况
如果参数中有列表,列表项为引用类型时,则会判断列表项是否为同一引用 列表本身不判断
- leetcode1105 Filling Bookcase Shelves
思路: dp[i]表示摆放好前i本书所需要的最小代价. 实现: class Solution { public: int minHeightShelves(vector<vector<in ...
- 【ARM-Linux开发】Rico Board DIY系列实验教程 Day 2——搭建Boa服务器
一:BOA WebServer简介 BOA WebServer是一款单任务的HTTP服务器,与其他网页服务器不同之处,是当有连接请求到来是,它既不是为每个连接都单独创建进程,也不是采用复制自身进程处理 ...
- 基于MSP430G2231实现的频率计
基于MSP430G2231实现的频率计 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 系列博客说明:此系列博客属于作者在大三大四阶段所储备的关于电子电路设计 ...
- 最新 荔枝java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.荔枝等10家互联网公司的校招Offer,因为某些自身原因最终选择了荔枝.6.7月主要是做系统复习.项目复盘.LeetCode ...
- Node中导入模块require和import??
转自:https://blog.csdn.net/wxl1555/article/details/80852326 S6标准发布后,module成为标准,标准的使用是以export指令导出接口,以im ...
- controller中获取当前项目物理绝对路径
用HttpServletRequest request获取 request.getSession().getServletContext().getRealPath(""); 上面 ...