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 长度可变 ...
随机推荐
- 【Leetcode_easy】686. Repeated String Match
problem 686. Repeated String Match solution1: 使用string类的find函数: class Solution { public: int repeate ...
- [CareerCup] Guards in a museum 博物馆的警卫
A museum was represented by a square matrix that was filled with O, G, and W where O represented ope ...
- 使用jenkins+sonar进行代码扫描,并发送自定义邮件
jenkins架构 1.一台机器作为jenkins master不进行构建操作,只负责调度其他slave节点执行任务 2.一台slave机器作为执行机器存放从gitlab上拉取的代码,使用sonar- ...
- git推送远程仓库以及分支介绍
1.介绍 我们要把本地仓库的项目推送到远程服务器,首先我们得有自己的服务器,一般我们选择码云和github,码云和github的操作差不多,今天我们再次介绍码云的使用 2.码云的使用 第一步:首先我们 ...
- vue路由传参的三种方式
方式一 通过query方式传参 这种情况下 query传递的参数会显示在url后面 this.$router.push({ path: '/detail', query: { id: id } }) ...
- vue {{}}的用法
参考链接:https://blog.csdn.net/cofecode/article/details/78666233
- 第一周----常量和final
符号常量 final 字面常量:1 2 int a=3; a是变量 3是常量
- [转帖]拿小本本记下的Linux Shell常用技巧(一)
拿小本本记下的Linux Shell常用技巧(一) https://zhuanlan.zhihu.com/p/73361101 一. 特殊文件: /dev/null和/dev/tty Linux系统提 ...
- go 相关资源
网站guide 官方文档 国内镜像 包下载 Golang标准库文档 Release History Getting Start 安装 1.下载binrary包(zip 解压后需要配置gopath, m ...
- 第7章学习小结 不使用STL-map过实践题:QQ帐户的申请与登陆
目录: 一:查找的概念与术语 二:折半查找 三:二叉排序树 四:平衡二叉树 五:B-树 六:B+树 七:散列表 八:实践题:QQ帐户的申请与登陆 九:自我总结 一.查找的概念与术语 (一)查找表 查找 ...