①常用类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相关推荐

  1. Java基础复习-常用类

    Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...

  2. JAVA基础(12.Java中的常用类String)

    目录 1.前言 2.日期(时间)相关类 2.1 日期类的应用场景 2.1.1Java中的日期相关的几个类 3. Java中的常用类学习方式 3.1 什么是常用类?为什么要学习? 3.2 怎么使用Jav ...

  3. java基础知识--(常用类)String类

    8.01 String简介 String(字符串常量)概述 String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量: ...

  4. 大数据Java基础之常用类

    欢迎关注公众号: 9-1 字符串相关的类 String常用方法 9-2 JDK8之前日期时间API 9-4 Java比较器 9-5 System类 9-6 Math类 9-7 BigInteger与B ...

  5. 【Java 基础】字符串(String、StringBuilder),日期(Date、SimpleDateFormat、Calendar)

    字符串.日期 字符串(String) 字符串常量池(String Constant Pool) 字符串的初始化 intern 方法 字符串的常用方法(截取) 可变字符串(StringBuilder) ...

  6. 小汤学编程之JAVA基础day10——常用类(二):String常用方法、正则、StringBuffer和StringBuilder、Math和Random类、日期类和数字类

    一.String常用方法 二.正则表达式 1.基本     2.常用     3.高级 三.StringBuilder和StringBuffer类 1.区别     2.常用方法     3.继承结构 ...

  7. 尚硅谷Java基础学习--常用类部分例题解答(仅使用String类方法)

    以下为不借助StringBuffer等类的方法,直接使用String类方法及算法实现: No.1 public class Test1010 {public static void main(Stri ...

  8. 小汤学编程之JAVA基础day09——常用类(一):比较器、内部类和包装类

    一.比较器 1.内部比较器      2.外部比较器 二.内部类 1.成员内部类     2.静态内部类     3.局部内部类     4.匿名内部类 三.包装类 1.概念     2.包装类的应用 ...

  9. Java基础:常用类Compare

    Compare类 Comparable接口 自然排序 1.像String.包装类等实现了Comparable接口,重写了compareTo()方法 2.String.包装类重写了compareTo() ...

最新文章

  1. java目录文件夹操作
  2. 北斗导航 | 北斗伪距定位、测速与授时——PNT:最小二乘法、加权最小二乘:伪距单点定位
  3. vue watch监听某输入框中是否有值,然后改变某输入框的属性值
  4. c++邮递员投递经过特定点_厉害了斑马鱼,动物实验体天团C位
  5. sybase函数学习(八)
  6. JAVA的sleep
  7. 在两个不同域中的WINDOWS 2003活动目录做迁移笔记
  8. OSPF特殊区域的作用
  9. 关于data.table中i, j, by都为数字的理解
  10. SpringBoot整合jsp技术
  11. 微信机器人接口,微信ipad协议
  12. iphone5s已停用连接itunes怎么办?苹果5s已停用连接itunes解决方法
  13. 数据集中趋势度量:众数、平均数、中位数、几何平均数
  14. 【Python爬虫】淘宝商品比价定向爬虫
  15. SAP ABAP MOVE-CORRESPONDING ... TO ...的使用
  16. Ubuntu系统下 .7z 文件压缩解压命令
  17. Win7 X64 SQL SERVER 2000企业管理器无法建立新表
  18. python创作txt文本文件字符画
  19. 使用DHT11和51单片机进行温湿度的读取(保证好用版本)
  20. 学习笔记(117):R语言入门基础-前10名的行业和地区展示

热门文章

  1. WWDC 2015大会到来了
  2. Andrew Stankevich#39;s Contest (1)
  3. [Android]Notification汇总
  4. 重新打包版Inno Setup 5.4.3
  5. 【Node学习】—Express框架的安装
  6. 开关造成的毛刺_LED射灯开关关了为什么还会闪
  7. visual studio哪一款比较好用_电脑桌面上使用的工作便签软件下载哪一款好用?...
  8. python书籍_最好的Python书籍,让您像专业程序员一样编程
  9. 如果每天给你888元,只能看书学习,不能玩手机电脑,你能坚持多少天?
  10. 大公司的老板更专注人,小公司的老板更专注事