Java学习笔记5 字符串String

String 类

在 java.lang 包下的一个类、所以该类不需要导入,可以直接使用
String 类 用来表示 字符串 类型
字符串类型是由 多个字符组成一个特殊的数组
Java中的字符串类型 对应的值 是不可变的
字符串的字面量表示 使用 双引号

声明并创建一个字符串对象

// 创建一个 长度为 0, 内容空 空字符串 的 字符串对象 
String s = new String(); 


// 创建一个长度为 0, 内容为 空 字符串的 字符串对象 
String s = "" ; 


// 创建一个 内容为 hello 的字符串对象 
String s = new String("hello") ;

String s = "hello" ;


// 用一个 char 数组 构建一个字符串对象 
char[] x = {'中', '国', '人'} ;

String s = new String(x) ;  


// 用一个 byte 数组 构建一个字符串对象 

byte[] x = {65, 66, 67} ;

String s = new String(x) ;  // ABC

字符串 常量池(串池)

当使用 字面量(用双引号引起来的内容) 来构建 字符串的时候, 会从串池中获取对象,所以 只要内容相同,那么地址一定相同

new 构建的字符串

使用 new 关键字,代表创建对象,创建好的对象会被存储在堆空间中

// 该语句创建了2个对象   
String s = new String("hello"); 
// 该语句创建了1个对象   
String s1 = new String("hello") ;

第一个对象是 从 常量池 中构建的 hello , 第二个对象是从堆空间中创建的 new String(“hello”)

字符串是不可变的

String 默认存储数据使用 byte[] , 但是 JDK7 以及之前的版本采用的是 char[]
JDK8 优化了String数据的存储方式
由于 byte[] value 使用 final 修饰,代表地址不可更改

String类中的静态方法

  • valueOf(x) : 可以将任意类型数据转成字符串, 如果值为 null(空), 那么会返回一个长度为4 且内容为 null 的字符串

  • format(template, args…) : 格式化字符串,按照指定的格式,显示字符串的内容

template : 字符串模板, 可以支持的占位符有

%d :  代表一个整数 
%s :  代表一个字符串 
%f :  代表一个小数 
%.nf :  n是一个数字,例如 %.2f 代表 小数点后保留2位数字

%x :  代表在控制台输出的时候,会自动转成 16进制 

%o :  代表在控制台输出的时候,会自动转成 8进制 

%b :  代表在控制台输出的时候,会自动转成 boolean

%% :   代表在控制台输出的时候, 会输出一个 % 

  • join(sep, str…) : 将多个字符串,按照 sep指定分隔符,进行拼接,形成一个新的字符串
  • String.copyValueOf(char[]) : 将 char 数组转成字符串
  • String.copyValueOf(char[], offset, len) : 将 char数组中指定范围内的元素转成字符串

char[] 和 String 相互转换

char[] —> String :

  1. new String(char[])
  2. String.copyValueOf(char[])

String —> char[]

  1. toCharArray(); 将字符串转成 char数组

byte[] 和 String 相互转换

byte[] ----> String

  1. new String(byte[])

String ----> byte[]

  1. getBytes()

StringBuilder

可变的字符串

StringBuilder 常见的构造方法

StringBuilder() : 无参构造,创建一个长度为 0 内容为 空字符串的对象

StringBuilder(String str) : 将一个字符串快速转换成 StringBuilder对象

StringBuilder 常见的成员方法

append(x) : 进行字符串拼接、将 x 拼接到字符串的尾部

delete(start ,end) : 删除指定区间内的字符串

deleteCharAt(int index) : 删除指定位置的字符

replace(int start, int end, String str): 将指定区间的内容,替换成指定的内容

insert(int offset, String str) : 将指定的str字符串插入到 offset对应的位置上

indexOf / lastIndexOf : 用来获取指定的子串 在字符串中出现的索引位置,如果找不到,返回 -1

reverse() : 反转字符串

toString() : 将 StringBuilder 对象转成 String

length() : 获取字符串的长度

compareTo(str) : 比较两个字符串的大小

StringBuffer

可变的字符串, 用法和 StringBuilder 完全相同

StringBuilder VS StringBuffer

StringBuilder 是线程不安全的,在高并发环境下会出现问题,性能高
StringBuffer 是线程安全的,主要应用于多线程环境下,性能较低

StringJoiner

用来拼接字符串的

常见的构造方法

StringJoiner(String delimiter) : 构建一个StringJoiner对象,并指定分隔符

StringJoiner(String delimiter, String prefix, String suffix) : 构建一个StringJoiner对象,并指定分隔符 前缀和后缀

常见的方法

  • add(x) : 将要进行拼接的元素添加到 Joiner对象中

  • merge(StringJoiner joiner) : 将两个 Joiner对象进行合并

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值