当前位置:网站首页 > Java基础 > 正文

java字符串是基础吗



目录

一.string类的介绍

(一)概述:

(二)特点:

二.string类的创建

(一)构造方法:

(二)创建字符串对象两种方式的区别

(三)字符串的比较

三.string类的常见成员方法

四.StringBuilder和StringJoiner的使用

五.字符串的相关内存原理


一.string类的介绍

(一)概述:

 java中所有的双引号字符串:“”,都是string类的对象,是一种引用数据类型

(string类使用时无需导包)

(二)特点:

1.字符串不可变,创建后的值不可修改。
2.string的值不可变,但是可以被共享。
3.字符串效果上等于字符数组char[],底层原理是字节数组byte[].

二.string类的创建

(一)构造方法:

1.创建空白字符串对象,初始化不含任何内容。
 
2.根据字符数组的内容,来创建字符串对象。
 

java字符串是基础吗

3.根据字节数组的内容,来创建字符串对象。
 
4.直接赋值
 

(二)创建字符串对象两种方式的区别

1.通过构造方法创建:
通过new创建的字符串对象,每一次new都会在堆内存区域申请一块内存空间,即使字符串内容相同,但是不同的字符串变量地址值不同,在堆内存中有自己的存储空间。
2.直接赋值方式创建:
以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池(堆内存中)中维护,具有相同的地址

注:使用直接赋值的方式最简单并且节约内存。

(三)字符串的比较

1.==号的使用
    比较基本数据类型:比较具体的值
    比较引用数据类型:比较对象的地址值
2.如何实现字符串内容的比较equals()
string的成员方法:equals(),比较两个字符串的内容是否相同,区分大小写
 

三.string类的常见成员方法

1.charAt()//返回指定索引的一个char值                    注:调用方式:a.charAt()

 

2.length()//返回字符串的长度

 

3.substring()//返回字符串的子字符串

注:当形参只有一个时,只给出截取字符串的第一个下标,则会返回从该下标开始到结尾的子字符串

 

4.replace()//对指定的字符串内容实现自定义内容替换

 

四.StringBuilder和StringJoiner的使用

注:这两个类主要用于提高拼接字符串相关操作的效率,避免浪费内存空间。

       他们都可以看作一个容器,内容都可以修改。

(一)StringBuilder

1.构造方法

2.常用的成员方法

代码示例:

 

(二)StringJoiner

1.构造方法

2.常用的成员方法

代码示例:

 

注:StringBuilder,StringJoiner不是字符串,只是一个容器,任何操作之后如果需要调用字符串的方法需要将其转换为字符串形式


五.字符串的相关内存原理

1.字符串存储的内存原理(上面有提及)

在创建字符串时,直接赋值会复用字符串常量池中的已存在的字符串,不存在就会在串池中生成新的字符串。

字符串string作为一种引用字符串类型,使用new会在堆内存区中开辟新的空间,每个字符串都具有不同的地址值。

2.==号比的是什么(上面有提及)

3.字符串拼接的底层原理

如果没有变量参与,都是字符串直接相加,编译之后就是拼接完成以后的结果,会复用串池中的字符串。

如果变量有参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。

4.StringBuilder提高效率原理图

所有拼接的内容都会往stringBuilder中放,节约内存。

5.StringBuilder容器的相关知识

1.默认创建一个长度为16的字节数组

2.添加的内容长度小于16,直接存

3.添加的内容大于16会扩容(原来的容量*2+2)

4.如果扩容之后还不够,以实际长度为准


本文章总结一些关于string类的基础知识,旨在便于后续复习。

版权声明


相关文章:

  • java基础代码模板2024-11-09 13:26:06
  • java基础入门教学答案62024-11-09 13:26:06
  • java语言基础的实验目的2024-11-09 13:26:06
  • java银行基础面试题2024-11-09 13:26:06
  • java编程基础是什么专业2024-11-09 13:26:06
  • java语法基础双语2024-11-09 13:26:06
  • 0基础学java 知乎2024-11-09 13:26:06
  • 28岁0基础学java找工作2024-11-09 13:26:06
  • java基础视频马士兵2024-11-09 13:26:06
  • java基础案例多功能手机2024-11-09 13:26:06