Java 学习笔记 ( 五 ) 字符串

文章介绍了Java中的字符串基础知识,包括String类的不可变性、字符串的定义方式(直接赋值与使用String类)、字符串的比较方法,以及可变的字符序列StringBuilder和新特性StringJoiner的使用。重点讲解了StringBuilder的append和insert方法,以及StringJoiner的高效字符串操作。
摘要由CSDN通过智能技术生成

前言:

还在学习走的过程中

水平有限,不足之处望请斧正。

1、字符串概念

String 类代表字符串,字符串是Java中特殊的类,使用方法像一般的基本数据类型,被广泛应用在 Java 编程中。在 Java 中定义一个字符串最简单的方法是用双引号把它包围起来。这种用双引号括起来的一串字符实际上都是 String 对象,如字符串“Hello”在编译后即成为 String 对象。

2、String类的特点

  • 字符串不可变,它们的值在创建后不能被更改
  • 虽然 String 的值是不可变的,但是它们可以被共享
  • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

3、字符串的定义

3.1、直接定义字符串

直接定义字符串是指使用双引号表示字符串中的内容

例如:

String str = "hello world";

注意:字符串变量必须经过初始化才能使用。

3.2、使用 String 类定义

方法一:
    String str = new String() ;			//创建一个空字符串		str == null

方法二:
    String str1 = new String ("Hello");		//	str1 == Hello 
	String str2 = new String (str1);		// str1 和 str2 的值是相同的

方法三:
    //将字符数组中的元素变为字符串
    char [] arr = { 'a', 'b' ,'c','d'};
	String str = new String (arr);			//str 的值为 abcd
方法四:
    //根据字节数组来创建字符串
    byte [] bts = {97,98,99};
	String str = new String (bts) ; 		//str的值为 abc
    

3.3、两种方式的区别

直接赋值:在程序中对于相同的字符串无论出现多少次,在内存中都只存在一个

String类:通过new 创建字符串,即使内容相同,每new 一次都会重新申请一个内存空间

//直接赋值
String str1 = "abcd";
String str2 = "abcd"		//由于str1 和str2 的内容相同且采用直接赋值的方法 ,故在内存中只有一个 "abcd"
    
//通过String 类构造
 String str3 = new String ("abcd");
 String str4 = new String ("abcd") ;  //  由于 Str3 和 Str4 采用构造方法生成,故即使内容相同,在内存中仍然会创建两次
 

4、字符串的比较

4.1、== 号的作用

  • 基本数据类型:比较具体的值
  • 引用数据类型:比较的是地址值

4.2、equals方法的作用

public boolean equals(String s)     比较两个字符串内容是否相同、区分大小写
public boolean equalsIgnoreCase(String anotherString)    将此 String 与另一个 String 比较,不考虑大小写。

5、StringBuilder

5.1、StringBuilder简介

一个可变的字符序列,StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。

当我们在拼接字符串和反转字符串的时候会使用到

5.2、常用构造方法

1. StringBuilder() 		//构造一个空的对象
   StringBuilder builder = new StringBuilder();

2. StringBuilder(String str) 		// 构造一个字符串生成器,并初始化为指定的字符串内容。
    StringBuilder builder = new StringBuilder("abc");

3. StringBuilder(int capacity)		//构造一个其中不带字符的字符串生成器,初始容量由 capacity 参数指定。
   StringBuilder builder = new StringBuilder(初始长度);

注意:
    StringBuilder的对象创建时没有指定长度,StringBuilder对象会自动生成一个16位的字符数组
    只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。
    
    StringBuilder 只是一个容器本身并不是字符串类型
    可以通过 toString()方法变回字符串

5.3、StringBuilder对象的常用方法

StringBuilder sb = new StringBuilder();

// 	sb.append()     作用:追加数据
sb.append("1234");

//	sb.insert()		作用:向指定位置插入数据
sb.insert( 0 , "5"); 	// 每次加入新的字符串之后都会改变原来字符串中每个字符的地址 ,插入后原来的数据后移
    
 //sb.reverse()		作用:将对象中的数据反转
  sb.reverse();			// sb的内容从 51234 变为 43215

6、StringJoiner

  • StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
  • 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
  • JDK8出现的

基本使用

1.构造方法
    public StringJoiner(间隔符号)		// 创建一个StringJoiner对象 ,并指定拼接时的间隔符号
    
    // 创建一个StringJoiner 对象,并指定拼接时的间隔符号,开始符号,结束符号
    public StringJoiner (间隔符号 ,开始符号 ,结束符号 )     
    
    public StringJoiner add(添加的内容)		//添加数据,并返回对象本身
    
    public int length()  					//返回长度(字符出现的个数)
    
    public String toString() 				//返回一个字符串(拼接之后的结果)

今天的分享就到这里了,期待与你共同进步!

如有不足欢迎留言指正 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值