常用类与基础API

一、字符串相关类之不可变字符序列String

1.类的声明:

public final class String implements java.io.Serializable,Comparable<String>,CharSequence
1.final:String是不可被继承的;
2.Serializable:可序列化的接口,凡是实现此接口类的对象可以通过网络或本地流进行数据的传输;
3.Comparable:凡是实现此接口的类其对象都可以比较大小

2.内部声明的属性:

JDK8以及之前:
private final char value[];//存储字符串数据的容器;
final:指明此value数据一旦初始化其地址就不可变;
JDK9开始:
private final byte value[];//存储字符串数据的容器;

Java语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持(toString()方法)

3.字符串常量的存储位置:

1.String s1 = "abc";
字符串常量存储在字符串常量池(StringTable)中,字符串常量池不允许存储两个相同的字符串常量;
字符串常量池在不同的JDK版本中位置不同,在JDK7之前字符串常量池存储在方法区,在JDK7及其之后存储在堆空间

4.String的不可变性:

(1).当对字符串变量重新赋值时,需要重新指定一个字符串常量的位置进行赋值,不能在原有的位置修改;

(2).当对现有的字符串进行拼按操作时,需要重新开辟空问保存拼接以后的字符串,不能在原有的位置修改;

(3).当调用字符串中的replace()替换现有的某个字符时,需要重新开辟空问保存拼接以后的字符串,不能在原有的位置修改;

String s1 = "hello";
String s2 = "hello";
s2 = "hi";
System.out.println(s1 == s2);//false
String s1 = "hello";
String s2 = "hello";
s2 += "hi";
System.out.println(s1 == s2);//false
String s1 = "hello";//hello
String s2 = "hello";//hello
String s3 = s2.replace('l','w');//hewwo

5.String实例化的两种方法:

1.String s1 = "abc";
2.String s2 = new String("abc");在内存空间中创建了两个对象,一个是在堆空间中new的对象,另一个是在字符串常量池中的字面量

6.String的连接操作:

1.变量+变量
2.变量+常量或常量+变量
3.常量+常量
有变量参与就会在堆空间中new一个新的对象,此时地址值会发生变化
只有常量参与字符串拼接运算,结果仍然存储在字符串常量池中,此时常量可能是字面量也可能是final修饰的常量
4.调用字符串的intern()方法
intern()方法返回字符串常量池中字面量的地址
5.调用字符串的concat()方法:
不管是常量还是变量调用此方法,同样不管参数是常量还是变量,该方法调用后会返回一个新new出来的对象
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
String s4 = "hello"+"world";
String s5 = s1 + "world";
String s6 = "hello" + s2;
String s7 = s1 + s2;
s3 == s4;
s3 != s5;
s3 != s6;
s3 != s7;

7.String的构造器和常用方法:

(1)构造器:

1.public String():初始化新创建的String对象,以使其表示空字符序列;
2.public String(String original):初始化一个新创建的String对象,使其表示一个与参数相同的字符序列,换句话说新创建的字符串是该参数字符串的副本;
3.public String(char[] value):通过当前参数中的字符数组来构造新的String;
4.public String(byte[] bytes):通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String;
5.public String(char[] value,int offset,int count):通过字符数组的一部分来构造新的String;
6.public String(byte[] bytes,String charsetName):通过使用指定的字符集解码当前参数中的字节数组来构造新的String;

(2)常用方法:

1.boolean isEmpty():字符串是否为空;
2.int length():返回字符串的长度;
3.String concat(xx):拼接;
4.boolean equals(Object obj):比较字符串是否相等,区分大小写;
5.boolean equalsIgnoreCase(Object obj):比较字符串是否相等,不区分大小写;
6.int compareTo(String other):比较字符串大小,区分大小写,按照Unicode编码值比较大小;
7.int compareToIgnoreCase(String other):比较字符串大小,不区分大小写;
8.String toLowerCase():将字符串中大写字母转为小写;
9.String toUpperCase():将字符串中小写字母转为大写;
10.Sting trim():去掉字符串前后空白符;
11.public String intern():结果在常量池中共享;
12.boolean contains(xx):是否包含xx
13.int indexOf(xx):从前往后找当前字符串中xx,即如果有返回第一次出现的下标,要是没有返回-1
14.int indexOf(String str,int fromIndex):返回指定子字符串在此字符串中第一次出现处的素引,从指定的索引开始;
15.int lastIndexOf(xx):从后往前找当前字符串中xx,即如果有返回最后一次出现的下标,要是没有返回-1;
16.int lastIndexOf(String str,int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索;
17.String subString(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串;
18.string subString(int beginIndex,int endIndex):返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串;
19.char charAt(index):返回[index]位置的字符;
20.char[] toCharArray():将此字符串转换为一个新的字符数组返回;
21.static String valueOf(char[] data):返回指定数组中表示该字符序列的String;
22.static String valueOf(char[] data,int offset,int count):返回指定数组中表示该字符序列的String;
23.static String copyValueOf(char[] data):返回指定数组中表示该字符序列的String;
24.static String copyValueOf(char[] data,int offset,int count):返回指定数组中表示该字符序列的String;
25.boolean startsWith(xx):测试此字符串是否以指定的前缀开始;
26.boolean startsWith(string prefix,int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始
27.boolean endsWith(xx):测试此字符串是否以指定的后缀结束;
28.String replace(char oldChar, char newChar):返回一个新的字符串,它是通过newChar替换此字符串中出现的所有oldChar得到的,不支持正则;
29.String replace(charSequence target,charSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串;
30.String replaceAll(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串;
31.String replaceFirst(String regex, String replacement):使用给定的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/10656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python自动化:账号密码获取计算题验证码

实现自动化登录和获取图片验证码功能 计算题验证码使用的OCR是ddddocr&#xff0c;经过实践比tesseract精度更高对于页面具体的find_element需要结合源网址进行一定的修改&#xff0c;请注意 # 自动添加用户名&#xff0c;密码&#xff0c;计算题验证码from selenium import …

react 组件表格固定底部

在React中&#xff0c;要实现一个组件表格并且固定底部&#xff0c;可以使用CSS的固定定位或绝对定位来实现。以下是一个简单的例子&#xff1a; import React from react; import ./App.css;function App() {return (<div className"App"><div className&…

【PHP【实战版】系统性学习】——登录注册页面的教程,让编写PHP注册变成一个简单的事情

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

无人机+通信中继:短波电台技术详解

随着无线通信技术的不断发展&#xff0c;无人机作为一种新型的信息传输平台&#xff0c;已经在多个领域得到了广泛应用。其中&#xff0c;无人机与短波电台的结合&#xff0c;为通信中继领域带来了全新的可能性。本文将详细解析无人机在通信中继中的应用&#xff0c;以及短波电…

sentinel搭建及使用

1.添加依赖&#xff08;版本可依赖于父pom&#xff09; SentinalResource注解&#xff1a; 添加依赖&#xff1a; blockhandler: fallback:

简易留言板

目录 前端实现 数据库的使用 创建数据表 创建项目 连接数据库 后端实现 接口定义 持久层 业务逻辑层 控制层 前端代码完善 留言板是一个常见的功能&#xff0c;在本篇文章中&#xff0c;将实现一个简易的留言板&#xff1a; 页面中能够显示所有留言内容&#xff0c…

《视觉十四讲》例程运行记录(6)——运行ch9后端优化CeresBA和g2o求解BA的实践例程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、运行ch9的例程代码1. MeshLab安装2. 编译例程代码前的修改3. 编译例程 一、运行ch9的例程代码 1. MeshLab安装 (1) 软件中心安装 搜索&#xff1a;MeshLab&am…

oracle 新_多种块大小的支持9i

oracle 新_多种块大小的支持 conn sys/sys as sysdba SHOW PARAMETER CACHE ALTER SYSTEM SET DB_CACHE_SIZE16M; ALTER SYSTEM SET DB_4K_CACHE_SIZE8M; CREATE TABLESPACE K4 DATAFILE F:\ORACLE\ORADATA\ZL9\K4.DBF SIZE 2M BLOCKSIZE 4K; CREATE TABLE SCOTT.A1 TABLESP…

LVDS 接口标准和规范

低压差分信号具有传输速率快、抗干扰性强的特点&#xff0c;是现在广泛应用的数据接口标准之一。Xilinx FPGA支持LVDS电平标准&#xff0c;并提供了动态相位调整解决方案&#xff0c;解决了基于LVDS源同步传输时存在的数据偏斜问题。 1 LVDS 技术规范简介 随着接口和背板信号…

乡村振兴与乡村振兴战略的深度融合:落实乡村振兴战略,推动乡村全面发展,打造富强民主文明和谐美丽的社会主义现代化新农村

一、引言 在全面建设社会主义现代化国家的新征程中&#xff0c;乡村振兴战略承载着推动乡村全面发展、实现农业农村现代化的重大使命。乡村振兴战略的实施&#xff0c;不仅关系到亿万农民的福祉&#xff0c;也关系到国家整体发展的质量和水平。因此&#xff0c;深化乡村振兴与…

网安面经之SSRF漏洞

一、ssrf漏洞 1、ssrf原理&#xff1f;危害&#xff1f;修复&#xff08;防御&#xff09;&#xff1f; 原理&#xff1a;SSRF就是服务器端请求伪造漏洞、它是一种由攻击者构造&#xff0c;由服务端发起请求的一个网络攻击&#xff0c;一般用来在外网探测或攻击内网服务&…

geoserver SQL注入、Think PHP5 SQL注入、spring命令注入

文章目录 一、geoserver SQL注入CVE-2023-25157二、Think PHP5 SQL注入三、Spring Cloud Function SpEL表达式命令注入&#xff08;CVE-2022-22963&#xff09; 一、geoserver SQL注入CVE-2023-25157 介绍&#xff1a;GeoServer是一个开源的地理信息系统&#xff08;GIS&#…

洛谷 P4148:简单题 ← KD-Tree模板题

【题目来源】https://www.luogu.com.cn/problem/P4148【题目描述】 你有一个 NN 的棋盘&#xff0c;每个格子内有一个整数&#xff0c;初始时的时候全部为 0&#xff0c;现在需要维护两种操作&#xff1a; ● 1 x y A → 1≤x,y≤N&#xff0c;A 是正整数。将格子 (x,y) 里的数…

C语言-STM32:介绍PWM,并使用PWM实现呼吸灯

1、什么是PWM PWM&#xff0c;全称为Pulse Width Modulation&#xff0c;中文名为脉冲宽度调制。这是一种模拟控制技术&#xff0c;通过改变脉冲信号的宽度来表征一个连续变量的平均值&#xff0c;通常用于对模拟信号的数字化控制&#xff0c;特别是在功率转换和信号处理中非常…

基于微信小程序的图书馆预约系统的设计与实现

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

HTML5为网页开发者提供了许多新的和增强的表单控件

H5&#xff0c;即HTML5&#xff0c;为网页开发者提供了许多新的和增强的表单控件&#xff0c;这些控件不仅提高了用户体验&#xff0c;还增强了表单的交互性和功能性。以下是HTML5中新增的一些主要表单控件及其详细介绍&#xff1a; <input type"date">&#x…

奥特曼倡导将AI计算能力作为货币免费发给老百姓

奥特曼表示&#xff0c;应该有通用基本计算&#xff0c;而不是通用基本收入UBI&#xff0c;每个人都能获得 GPT-7 计算的一部分。 OpenAI 首席执行官山姆-奥特曼&#xff08;Sam Altman&#xff09;提出了一种替代传统全民基本收入&#xff08;UBI&#xff09;的方案&#xff…

linux系统(ubuntu)调用科大讯飞SDK实现语音识别

1. 科大讯飞官网 登录注册实名制 2. 点击控制台&#xff0c;创建应用 点击左侧的语音听写&#xff0c;右边下滑选择Linux&#xff0c;点击下载 选择Linux平台&#xff0c;普通版本&#xff0c;语音听写&#xff0c;SDK下载 此时将得到一个压缩包&#xff0c;选择的功能不…

iOS 生成SSH Key

一. 参考文章 参考文章 二. SSH Key作用 SSH Key提供了一种和github通信的方式&#xff0c;通过这种方式&#xff0c;能够在不输入密码的情况下&#xff0c;将github作为自己的remote远程服务器&#xff0c;进行版本控制。 三. 使用SSH Key的步骤 ** 先设置git的用户名和密码 …

【socket】 linux C++ socket 优化参数

linux C socket 优化参数 在C的Linux Socket编程中&#xff0c;可以通过调整一些参数来优化Socket的性能和可靠性。以下是一些常用的参数和优化方法&#xff1a; TCP_NODELAY&#xff1a;这个选项可以禁用Nagle算法&#xff0c;从而减小延迟。Nagle算法是一种优化TCP网络传输…