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 长度可变 ...
随机推荐
- c-lodop的三个进程和一个服务介绍
在windows任务管理器里,最新版可以看到有三个进程,例如安32位c-lodop的时候,有CLodopPrint32.exe.CLodopPrint32_backup.exe.CLodopServi ...
- linux EXT4格式分区扩容
1.查看现有的分区大小 2.关机增加磁盘大小为100G 3.查看磁盘扩容后状态 lsblk或dh -TH 4.进行分区扩展磁盘,保留根目录的起止位置. 5.删除根分区,不要保存 6.创建分区, ...
- sql 索引【转】
T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他 简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...
- Matlab批量获取子文件夹与文件名
批量得到父文件夹下所有子文件夹的路径的MATLAB函数. function [SubFolders] = GetFolders(ParentFolder) %GetFolders % 函数功能为获取父 ...
- 【数据库开发】Redis消息通知
消息通知 任务队列 使用任务队列的好处 松耦合.生产者和消费者无需知道彼此的实现细节,只需要约定好任务的描述格式.这使得生产者和消费者可以由不同的团队使用不同的编程语言编写 易于扩展.消费者可以有多个 ...
- css实现可伸缩的搜索框
效果图: 代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...
- js删除array数组中元素
for(var i = 0; i < array.length; i++) { if(-1 != array[i]) { array.splice(i, 1); i--; } } 上面if就是判 ...
- Linux IO的五种模型 ongoing
服务器端编程经常需要构造高性能的IO模型,常见的IO模型: 阻塞I/O模型 (Blocking IO) ------------(同步)(阻塞) 非阻塞I/O模型 (Non-Blocking IO) ...
- 基于nginx与zookeeper的API Gateway实现笔记 - 环境搭建
为了简化操作,采用操作系统为CentOS 8. 首先需要编译出libzookeeper,在官网下载最新的zookeeper源码,或者github上clone一个,地址为:https://github. ...
- MySQL(六) 索引
索引与优化 1.选择索引的数据类型 MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响.通常来说,可以遵循以下一些指导原则: (1)越小的数据类型通常更好:越小的数据类型通常在磁 ...