1. String

1、String对象是不可变的

String类的value属性是用来存放字符串里面的值的。这个属性是被final修饰的。final修饰的变量不能够被第二次赋值,所以字符串是不可变的。

2、java9 以后的String更节约空间,每个字符占用1个字节

String类型在java9之前采用的是char[]来保存对应的值,因此每个字符串占用2个字节。但是到了java9之后,采用byte[]数组加一个encode-flag字段来保存,字符串的每个字符只占用1个字节。所以java9的字符串会更加节约空间。

字符串常用方法

1、charAt() 获取某个下标的字符,从下标0开始

        String string = "大哥好帅";
System.out.println(string.charAt(3));
//帅

2、concat()字符串拼接,返回新的字符串

        String string1 = string.concat(", 真的好帅");
System.out.println(string1);

3、contentEquals() 盘窜一个String和StringBuffer,包含的值是否相同,返回布尔值

        String string2 = "中国";
StringBuffer sb = new StringBuffer("中国");
System.out.println(string2.contentEquals(sb));

4、endsWith、 startsWith 判断以什么字符串结尾或者开头

        System.out.println(string1.endsWith("好帅"));
System.out.println(string1.startsWith("大"));

5、equals 判断两个字符串对象的内容是否相等

        String string = "大哥好帅";
String string3 = "大哥好帅";
System.out.println(string.equals(string3));
//true

6、equalsIgnoreCase 忽略大小写判断两个字符串是否相等

        //忽略大小写判断是否相等
String string4Case = "HaHa 我想你";
String string4 = "HAHA 我想你";
System.out.println(string4Case.equalsIgnoreCase(string4));
//true

7、getBytes() 获取字符串对应的数组

        //获取字符串对应的bytes 数组
byte[] bytes = string4.getBytes();
for(byte b :bytes) {
System.out.println(b);
}

8、indexOf 获取子串在字符串中出现的起始位置

        //获取子串出现的位置
String subStringTest = "大哥说大哥好帅";
System.out.println(subStringTest.indexOf("大哥"));//子串第一次出现的位置
System.out.println(subStringTest.indexOf("大哥",1));//从指定起始位置后第一次出现的位置

9、startsWith('substr', indexNum)从某个位置开始判断是否以指定字符串开始

        //判断子串出现位置是否为指定位置,返回true/false
String subStringTest = "大哥说大哥好帅";
System.out.println(subStringTest.startsWith("帅",6));

10、.substring获取子字符串

        String subStringTest = "大哥说大哥好帅";
System.out.println(subStringTest.substring(3));
//大哥好帅

11、toCharArray()将String类型的字符串转化成为char数组

        //toCharArray()将String类型的字符串转化成为char数组
char[] chars = subStringTest.toCharArray();
for(char c : chars){
System.out.println(c);
}

12、toUpperCase、toLowerCase把字符串所有字母都转化为大写:

        String love = "I Want Make Love";
System.out.println(love.toUpperCase());
System.out.println(love.toLowerCase());
//I WANT MAKE LOVE
//i want make love

13、.length获取字符串长度

System.out.println(love.length());

2.  StringBuilder和StringBuffer类

String对象是不可变的,我们在操作String的时候也会产生大量的垃圾临时变量。
如果是大量的字符串拼接操作是非常耗内存。StringBuilder和StringBuffer可以解决这个问题。
StringBuilder是线程不安全的,而StringBuffer是线程安全的,尽量使用StringBuffer。
        //测试StringBuffer 适用大量的字符串拼接,节省内存
StringBuffer stringBuffer = new StringBuffer("LANGUAGES:");
stringBuffer.append("JAVA");
stringBuffer.append(",PHP");
stringBuffer.append(",PYTHON");
stringBuffer.append(",GOLANG");
stringBuffer.append(",RUBY");
stringBuffer.append(",javascript");
System.out.println(stringBuffer);
System.out.println(stringBuffer.length());

java 常用类库:String ; StringBuilder和StringBuffer类的更多相关文章

  1. Java基础学习总结(65)——Java中的String,StringBuilder和StringBuffer比较

    字符串,就是一系列字符的集合. Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的.字符 ...

  2. Java常用类库--观察者设计模式( Observable类Observer接口)

    如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口. import java.util.* ; class House extends Obse ...

  3. Java常用类库(一) : Object 和日期类的简单使用

    顶哥说:Java是世界的,但项目不是! Java有非常多的类库,而我们不会也不用都去学习,毕竟你也仅仅掌握了你手机20%的功能却足够你使用,不是吗? 今天介绍以下类: l  Object l  Dat ...

  4. Java常用类库API之数字处理工具类

    数字处理工具类BigDecimal和DecimalFormat Java提供的java.text.DecimalFormat类,帮助我们用最快的速度将数据格式化为我们想要的样子.例如,取两位小数 im ...

  5. 解析Java中的String、StringBuilder、StringBuffer类(一)

    引言 String 类及其相关的StringBuilder.StringBuffer 类在 Java 中的使用相当的多,在各个公司的面试中也是必不可少的.因此,在本周,我打算花费一些时间来认真的研读一 ...

  6. [19/03/15-星期五] 常用类_String类&StringBuilder和StringBuffer类

    一.基本概念 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”. 那什么叫做“不可变对象”呢?  指的是对象内部的成员变量的值无法再改变.Str ...

  7. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  8. JAVA(三)JAVA常用类库/JAVA IO

    成鹏致远 | lcw.cnblog.com |2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不 ...

  9. Java 常用类库与技巧【笔记】

    Java 常用类库与技巧[笔记] Java异常体系 Java异常相关知识 Java在其创立的时候就设置了比较有效的处理机制,其异常处理机制主要回答了三个问题:what,where,why what表示 ...

随机推荐

  1. html+css第六篇-定位

    relative相对定位/定位偏移量 position:relative; 相对定位 a.不影响元素本身的特性: b.不使元素脱离文档流: c.如果没有定位偏移量,对元素本身没有任何影响: 定位元素位 ...

  2. IDEA安装JavaFx

    jdk11之后jdk就不内置javafx了,需要自己下载 在idea中新建JavaFx项目: 创建成功后发现代码标红 这个时候要把刚刚下载的JavaFx包解压后添加进去 ​ 选择到自己解压的路径的文件 ...

  3. C#使用Thrift作为RPC框架实战(四)之TSocket

    前言 在前几个小节中我们讲了Thrift框架的基本概念以及重要的名称空间,接下来的几个小节,我们将站在实战的角度来深入讲解一些Thrift的重要类型.本小节我先要讲一下Thrift框架支持TCP通信的 ...

  4. [ARC101C] Ribbons on Tree

    神仙的容斥题与神仙的树形DP题. 首先搞一个指数级的做法:求总的.能够覆盖每一条边的方案数,通过容斥可以得到\(\text{ans}=\sum\limits_E{(-1)^{|E|}F(E)}\).其 ...

  5. [R] 保存pheatmap图片对象到文件

    一般我们使用pheatmap通过Rstudio交互得到的图片在plots的Export导出即可,如何保存对象到文件呢?这个需求在自动化流程中很常见,作者似乎也没说明. 生成示例数据: test = m ...

  6. R 语言 select函数在org.Hs.eg.db上的运用

    首先org.Hs.eg.db是一个关于人类的 一,在R中导入包library(org.Hs.eg.db) http://www.bioconductor.org/packages/release/da ...

  7. Excel-vlookup(查找值,区域范围,列序号,0)如何固定住列序列号,这样即使区域范围变动也不受影响

    突然,发现VLOOKUP的列序列号并不会随着区域范围的改变而自动调节改变,只是傻瓜的一个数,导致V错值.所有,就想实现随表格自动变化的列序号. 方法一:在列序号那里,用函数得出永远想要的那个列在区域范 ...

  8. javaWeb - 2 — ajax、json — 最后附:后台获取前端中的input type = "file"中的信息 — 更新完毕

    1.ajax是什么? 面向百度百科一下就知道了,这里就简单提炼一下 Ajax即Asynchronous Javascript And XML(异步JavaScript和XML).当然其实我们学的应该叫 ...

  9. 日常Java 2021/10/14

    Java数据结构 Java BitSet类 BitSet类创建一种特殊类型的数组来保存位值,数组大小随需要增加,BitSet(),BitSet(int size) 其中的方法 void and(Bit ...

  10. 源码分析-NameServer

    架构设计 消息中间件的设计思路一般是基于主题订阅发布的机制,消息生产者(Producer)发送某一个主题到消息服务器,消息服务器负责将消息持久化存储,消息消费者(Consumer)订阅该兴趣的主题,消 ...