当前位置: 首页 > java >正文

JAVA---字符串

 ctrl+N  搜索界面(idea)

API和API帮助文档

API

应用程序编程接口(换句话说,就是别人已经写好了,我们不需要再编写,直接使用即可)

Java API :就是JDK中提供的各种功能的JAVA类

我们已经学习过的API:

Scanner  键盘录入

Random  随机数

API 帮助文档

帮助开发人员更好的使用API和查询API的工具

API 帮助文档则是对 API 进行详细说明的文档,主要用于帮助开发者了解和使用 API

如何使用API帮助文档 ?

a. 打开API帮助文档

b. 点击显示,并找到索引下面的输入

c. 在输入框中输入类名并点击显示

d. 查看类所在的包

e. 查看类的描述

f. 查看构造方法

g. 查看成员方法

字符串

"abc" + true = "abctrue""123""chilling heart"

String 概述

java.lang.String 类代表字符串,Java 程序中的所有自妇产文字(如“abc”)都为此类的对象

String name = "chilling heart";

 注意:字符串的内容是不会发生改变的,它的对象在创建后不能被修改

创建String对象的两种方式

1. 直接赋值

String name = "chilling heart";

2.new 关键字  构造方法

String s1 = new String();String s2 = new String ("chilling heart");
//当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在
//不存在:创建新的
//存在:复用
//优点:简单同时节约空间byte[] bytes ={97,98,99,100};
String s4 = new String(bytes);char[] chars = {'a','b','c'};
String s3 = new String(chars);

JAVA 常用第方法(比较)

常见的:

但是我们想想以下情况:

恒等号(==)在基本数据类型比较中比较的是真实的数据值

                      在引用数据类型比较中比较的时地址值

字符串的比较

1. boolean equals 方法(要比较的字符串)    完全一样结果是true,否则为false

2. boolean equalsIgnoreCase(要比较的字符串)  忽略大小写比较

boolean result = s1.equals(s2);

String substring(int beginIndex,int endIndex)   //截取注意:包头不包尾,包左不包右String substring(int beginIndex)   //截取到末尾

 

可以吧StringBulider看成一个容器,创建之后里面的内容是可变的。

作用:提高字符串的操作效率

构造方法:

常用方法:

 

StringJoiner(JDK8)

如同StringBuilder,也可以看成一个容器,创建之后里面的内容是可变的;

作用:提高字符串的操作效率,而且使代码简洁(市场上少有人用)

构造方法:

StringJoiner sj = new StringJoiner(“---”);  // 1---2---3StringJoiner sj = new StringJoiner(“,”,“[”,“]”); [1,2,3]

成员方法:

字符串原理

1.字符串存储的内存原理

a. 直接赋值会复用字符串常量池中的

b. new出来不会复用,而是开辟一个新空间 

2.==号比较的到底是什么?

a. 在基本数据类型比较中比较的是真实的数据值

b. 在引用数据类型比较中比较的时地址值

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

如果很多字符串变量拼接,不要直接+。在底层会创建多个对象,浪费时间、性能。

a. 如果没有变量参与,都是字符串直接相加,编译之后是拼接后的结果,会复用串池中的字符串;

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

4.StringBuilder提高效率原理图

a. 所有要拼接的内容都会往StringBuilder中放,不会创造很多无用的空间,节约内存

 

5.StringBuilder源码分析

http://www.xdnf.cn/news/2212.html

相关文章:

  • 通过门店销售明细表用SQL得到每月每个门店的销冠和按月的同比环比数据
  • 可视化性能分析工具火焰图
  • function,bind,lambda的用法
  • Claude系列模型-20250426
  • Android12源码编译及刷机
  • JavaWeb——案例(14/x)- 文件上传-阿里云OSS-准备(阿里云 OSS 简介、使用阿里云 OSS 的流程、关键准备工作)
  • 【含文档+PPT+源码】基于Django框架的乡村绿色农产品交易平台的设计与实现
  • DeepSeek预训练追求极致的训练效率的做法
  • 【分布式系统中的“瑞士军刀”_ Zookeeper】二、Zookeeper 核心功能深度剖析与技术实现细节
  • 818协议知识笔记
  • ShaderToy学习笔记 03.多个形状和旋转
  • DHCP配置文件详解
  • 解决conda虚拟环境安装包却依旧安装到base环境下
  • AEB法规升级后的市场预测与分析:技术迭代、政策驱动与产业变革
  • 链接文件及功能安全:英飞凌官方文档摘录 - 基于Tasking与AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解
  • C++学习:六个月从基础到就业——STL:分配器与设计原理
  • 一种滑窗像素自差值的深度学习损失函数
  • MySQL主从数据库配置教程
  • 谈谈关于【枚举】类型变量的好处
  • ARM架构的微控制器总线矩阵优先级与配置
  • SpringMVC
  • OpenFeign 日志配置
  • 在应用运维过程中,业务数据修改的证据留存和数据留存
  • 62.不同路径
  • Android移动应用开发:创建计算器
  • 模型 隐含前提
  • 【后端】主从单体数据库故障自动切换,容灾与高可用
  • Jest 快照测试
  • 前端面试 HTML篇
  • vue中 vue.config.js反向代理