3.4 java基础总结①常用类String②Stringbuffer③Stringbuilder
①常用类String②正则表达式③Stringbuffer④Stringbuilder
一、String
①String内存分析
String str0 = "hello";预先放到数据段的常量池
String str1 = "hello";常量池里边已有,引用直接指向它
String str2 = new String("hello");堆中,新的
String str3 = new String("hello");堆中,新的
str3 = str2 ×,=比较的是引用,不相等,String重写的equals方法比较的是内容,相等
str3 = str2;str2 = "world";
System.out.println("str3");结果为hello,没有变,只是str2的引用指向了world而已,str3的引用还是指向hello
String的内容是不可变的,不管是常量池的对象,还是堆中的对象
+ 字符串链接符
②String的基础方法
-equalsIgnoreCase("str"); 忽略大小写比较
-compareTo 字符串按字典顺序比较,依次比较第一个不同字母的ASCII,方式是相减,如果都相同在用长度相减。
-length()
-charAt() 取出某个位置的char值,所以是char字符,作比较的时候是ASCII,所以在作比较的时候,一定要用'0','a'比较,或者是ASCII
-tocharArray();-getBytes()
-indexOf("e",0); 首次出现的下标,不写默认从开始
-lastIndexOf();
-toUpperCase(); 全大写,可以指定位置
-toLowerCase(); 全小写
-startWith("he"); 判断开头
-endWith("he")
-contains("he"); 包含子字符串
-concat("he"); +在结尾,元字符串没变,如果要新的需要接收
-substring(1,3); 截取子字符串,前闭后开,
-substring(1); 截取1到最后
-replace("L","you") 替换,也可以是字符
③String的强力方法
-trim(); 去掉字符串前后空格,用在接收用户输入 input.trim().equals();
-split(); 根据正则表达式拆分;
String birthday = "1990-1-1";
String[] results = birthday.split("-");
分隔符前边没有东西,会有一个空串,最后一个分隔符没有东西,不会返回空串
字符串 "boo:and:foo" 使用这些参数可生成以下结果:
Regex Limit 结果
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }
字符串为空和空串不一样
空串:String str = ""; 引用指向""
为空:String str = null; 引用为空
判断字符串非空:
if(str != null && str.trim().eauals(""))
二、正则表达式 regex 字符串模板
正则表达式本身是个字符串
①[【】表示一个字符
[0-9][\d] 都表示一个数字
[abc] 表示a、b、c
[a-zA-z0-9] 表示字母或数字
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
String regex = "0830[0-9]{7}"
if(input.matches(regex)){}
②{} 表示前边出现的次数
{m,n} 最少m次,最多n次
{m,} 最少m次,最多不限
{m} 只能m次
* 任意次 a[0-9]* a√
+ 至少一次 a× a0√
? 0-1次
?. 要用这些本身,用转义,\\? \\. 如果在字符串中有?.虽然可以直接用,但是不准确,因为尤其特殊含义
③(|) 或,分组,满足一个即可
(abc|12|k[65]?)
regex = "0830([0-9]{4}|110|120|119)";
三、StringBuffer
①不能直接用 = 赋值 调用构造new StringBuffer(String str)
②不能用+链接字符 -append
③内容可变,大量的String累加,用StringBuffer
④线程安全,效率低,(一定)(执行,使用效率)
如果线程不安全,效率高,速度快(StringBuilder)
方法:
-append
-insert(int,"he") 插入,在offset处插入
-delete(int start,end) 删除,前闭后开
-charAt
-length
-indexof(String,from index)
-setCharAt()
-repalce(start,end,str)
-reverse 反转
-toString
四、StringBuilder
兼容StringBuffer API
不保证线程同步,线程不安全,效率快
所以一般不需要线程安全的时候,普通的字符串大量操作都用StringBuilder
转载于:https://www.cnblogs.com/chenyuanqiu2008/p/5251871.html
3.4 java基础总结①常用类String②Stringbuffer③Stringbuilder相关推荐
- Java基础复习-常用类
Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...
- JAVA基础(12.Java中的常用类String)
目录 1.前言 2.日期(时间)相关类 2.1 日期类的应用场景 2.1.1Java中的日期相关的几个类 3. Java中的常用类学习方式 3.1 什么是常用类?为什么要学习? 3.2 怎么使用Jav ...
- java基础知识--(常用类)String类
8.01 String简介 String(字符串常量)概述 String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量: ...
- 大数据Java基础之常用类
欢迎关注公众号: 9-1 字符串相关的类 String常用方法 9-2 JDK8之前日期时间API 9-4 Java比较器 9-5 System类 9-6 Math类 9-7 BigInteger与B ...
- 【Java 基础】字符串(String、StringBuilder),日期(Date、SimpleDateFormat、Calendar)
字符串.日期 字符串(String) 字符串常量池(String Constant Pool) 字符串的初始化 intern 方法 字符串的常用方法(截取) 可变字符串(StringBuilder) ...
- 小汤学编程之JAVA基础day10——常用类(二):String常用方法、正则、StringBuffer和StringBuilder、Math和Random类、日期类和数字类
一.String常用方法 二.正则表达式 1.基本 2.常用 3.高级 三.StringBuilder和StringBuffer类 1.区别 2.常用方法 3.继承结构 ...
- 尚硅谷Java基础学习--常用类部分例题解答(仅使用String类方法)
以下为不借助StringBuffer等类的方法,直接使用String类方法及算法实现: No.1 public class Test1010 {public static void main(Stri ...
- 小汤学编程之JAVA基础day09——常用类(一):比较器、内部类和包装类
一.比较器 1.内部比较器 2.外部比较器 二.内部类 1.成员内部类 2.静态内部类 3.局部内部类 4.匿名内部类 三.包装类 1.概念 2.包装类的应用 ...
- Java基础:常用类Compare
Compare类 Comparable接口 自然排序 1.像String.包装类等实现了Comparable接口,重写了compareTo()方法 2.String.包装类重写了compareTo() ...
最新文章
- java目录文件夹操作
- 北斗导航 | 北斗伪距定位、测速与授时——PNT:最小二乘法、加权最小二乘:伪距单点定位
- vue watch监听某输入框中是否有值,然后改变某输入框的属性值
- c++邮递员投递经过特定点_厉害了斑马鱼,动物实验体天团C位
- sybase函数学习(八)
- JAVA的sleep
- 在两个不同域中的WINDOWS 2003活动目录做迁移笔记
- OSPF特殊区域的作用
- 关于data.table中i, j, by都为数字的理解
- SpringBoot整合jsp技术
- 微信机器人接口,微信ipad协议
- iphone5s已停用连接itunes怎么办?苹果5s已停用连接itunes解决方法
- 数据集中趋势度量:众数、平均数、中位数、几何平均数
- 【Python爬虫】淘宝商品比价定向爬虫
- SAP ABAP MOVE-CORRESPONDING ... TO ...的使用
- Ubuntu系统下 .7z 文件压缩解压命令
- Win7 X64 SQL SERVER 2000企业管理器无法建立新表
- python创作txt文本文件字符画
- 使用DHT11和51单片机进行温湿度的读取(保证好用版本)
- 学习笔记(117):R语言入门基础-前10名的行业和地区展示
热门文章
- WWDC 2015大会到来了
- Andrew Stankevich#39;s Contest (1)
- [Android]Notification汇总
- 重新打包版Inno Setup 5.4.3
- 【Node学习】—Express框架的安装
- 开关造成的毛刺_LED射灯开关关了为什么还会闪
- visual studio哪一款比较好用_电脑桌面上使用的工作便签软件下载哪一款好用?...
- python书籍_最好的Python书籍,让您像专业程序员一样编程
- 如果每天给你888元,只能看书学习,不能玩手机电脑,你能坚持多少天?
- 大公司的老板更专注人,小公司的老板更专注事