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. win10的docker配置nginx

    进入容器内部: docker exec -it 2b9676bf24ef /bin/bash配置映射关系:前面是本地的后面是docker的 --privileged=true 是可以多个,百度到的do ...

  2. 『与善仁』Appium基础 — 12、Appium的安装详解

    目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...

  3. 什么是JIT?

    目录 什么是JIT? 为什么HotSpot虚拟机要使用解释器与编译器并存的架构? 编译的时间开销 什么是JIT? 1.动态编译(dynamic compilation)指的是"在运行时进行编 ...

  4. 7.2 k8s 基于PV、PVC搭建zookeeper 3节点集群

    1.PV,PVC介绍 1.1.StorageClass & PV & PVC关系图 Volumes 是最基础的存储抽象,其支持多种类型,包括本地存储.NFS.FC以及众多的云存储,我们 ...

  5. 如何在 Kubernetes 集群中玩转 Fluid + JuiceFS

    作者简介: 吕冬冬,云知声超算平台架构师, 负责大规模分布式机器学习平台架构设计与功能研发,负责深度学习算法应用的优化与 AI 模型加速.研究领域包括高性能计算.分布式文件存储.分布式缓存等. 朱唯唯 ...

  6. 快来使用Portainer让测试环境搭建飞起来吧

    Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台操作.Swarm集群和服 ...

  7. CF1559D2 Mocha and Diana (Hard Version)

    考虑到加树边每次最多只导致一对联通块之间的状态. 所以我们以任意顺序加入当前的合法边. 我们考虑先加入所有可加的\((1,a)\) 然后统计只在\(A\)中与1连的点,\(B\)中与2连的点. 则他们 ...

  8. Atcoder Regular Contest 058 D - 文字列大好きいろはちゃん / Iroha Loves Strings(单调栈+Z 函数)

    洛谷题面传送门 & Atcoder 题面传送门 神仙题. mol 一发现场(bushi)独立切掉此题的 ycx %%%%%%% 首先咱们可以想到一个非常 naive 的 DP,\(dp_{i, ...

  9. Mysql笔记(3)

    查询总数count(1)查询总和sum(数据名) 查询最大值max(数据名) 查询最小值min(数据名) 查询平均值avg(数据名) 去除重复 通过having来过滤group by字句的结果信息 i ...

  10. List 去重的 6 种方法,这个方法最完美!

    在日常的业务开发中,偶尔会遇到需要将 List 集合中的重复数据去除掉的场景.这个时候可能有同学会问:为什么不直接使用 Set 或者 LinkedHashSet 呢?这样不就没有重复数据的问题了嘛? ...