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. flutter第一课

    网上搜到有一个8小时体验flutter的教程,感觉可以尝试一个hello world出来:https://www.jianshu.com/p/9aaabc60d8af 官网下载很慢,可以使用镜像下载, ...

  2. Docker容器基础入门认知-网络篇

    这篇文章中,会从 docker 中的单机中的 netns 到 veth,再到单机多个容器之间的 bridge 网络交互,最后到跨主机容器之间的 nat 和 vxlan 通信过程,让大家对 docker ...

  3. .NET 5的System.Text.Json的JsonDocument类讲解

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...

  4. 洛谷 P3700 - [CQOI2017]小Q的表格(找性质+数论)

    洛谷题面传送门 又是一道需要一些观察的数论 hot tea-- 注意到题目中 \(b·f(a,a+b)=(a+b)·f(a,b)\) 这个柿子长得有点像求解 \(\gcd\) 的辗转相除法,因此考虑从 ...

  5. jumpserver——脚本安装

    CentOS Linux release 7.7.1908 (Core) 3.10.0-1062.4.1.el7.x86_64 Initialize(){ yum update -y systemct ...

  6. Oracle-trunc函数、round 函数、ceil函数和floor函数---处理数字函数使用

    0.round函数 按照指定小数位数进行四舍五入运算. SELECT ROUND( number, [ decimal_places ] ) FROM DUAL #number : 待处理数值  de ...

  7. c语言转义字符如下

    #define MQTT_EVENT_REPORT_BOX_STATUS_FORMAT "{"\                                           ...

  8. 【模板】滑动窗口最值(单调队列)/洛谷P1886

    题目链接 https://www.luogu.com.cn/problem/P1886 题目大意 有一个长为 \(n\) 的序列 \(a\) ,以及一个大小为 \(k\) 的窗口.现在这个从左边开始向 ...

  9. day04 sersync实时同步和ssh服务

    day04 sersync实时同步和ssh服务 sersync实时同步 1.什么是实时同步 实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器. 2.为什么使 ...

  10. Spark(八)【广播变量和累加器】

    目录 一. 广播变量 使用 二. 累加器 使用 使用场景 自定义累加器 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的 ...