String字符串类总结
object类
int hashCode()
Object定义的hashCode方法能为不同对象返回不同的整数。实际上是把JVM给对象分配的地址转化为整数,确保了逻辑上的唯一性。而转化的散列算法,可能会把两个地址算出同一个值来(低概率),所以,hash值一样的对象不一定是同一个对象,但是地址相同的对象,肯定是同一个对象。
boolean equals(Object obj)
==和equals的区别
==对于基本类型来说,比较的是数值,对于引用类型来说比较的是引用的地址。
equals不能用来比较基本类型,比较引用类型默认比较的都是地址
在String中的equals比较过程,先比较地址、然后比较数据类型、再将字符串拆成字符数组,进行循环对比。只要有一个环节比较不匹配就直接输出false,结束比较。
String toString()
在输出的语句中,直接输出一个对象,默认输出方法就是toString方法。如果没有此方法,输出的只是对象的地址。父类Object的toString方法,并不满足所有子类。所以需要重写。当然基本的封装类,JDK里面都写好了。所以我们输出的时候不用写这个方法,系统默认自带toString。
protected Object clone()
克隆对象,克隆出来的对象是独立存在的,有自己的内存空间。
protected void finalize()
垃圾回收机制的调用,但是具体什么时候回收,就不确定了。随机回收。
String
String是一个final修饰的类,不可继承。并且“xyz”这样的字符串面值常量也是String对象,也可以使用String类的成员方法。String类创建好了,就是确定好了内存,不可再次修改,只能重新开辟内存空间重新引用。频繁的操作字符串,会在常量池累积大量的字符串,这样就使用字符串缓冲区。
字符串缓冲区【StringBuffer/StringBuilder】支持对字符的动态、可变操作。
String的构造方法
public String()
public String(String)
public String(char[] value)
public String(char[] value, int offset, int count)
public String(byte[] bytes)
public String(byte[] bytes,int offset,int length)
String类的成员方法
char charAt(int index) 将指定索引的字符,返回char类型
int indexOf(int ch) int indexOf(String str)
int indexOf(int ch, int fromIndex) int indexOf(String str, int fromIndex)
从开头、或者指定索引位置检索整型数值或字符串,并把索引值以int型返回,如果没有检索到,就会返回-1
int lastIndexOf() 用法,重载同上,不同的是检索顺序是逆序检索。
String substring(int start) String substring(int start,int end) 从指定索引位置或者指定索引区域开始截取字符串,返回一个String类型(就是截取的部分),注意截取区域是左闭右开原则。
int length() 返回一个int类型的字符串长度。
boolean isEmpty() 判断字符串是否为空
boolean equals(Object obj) 将指定字符串内容与指定对象比较,区分大小写。
boolean equalsIgnoreCase(String str) 将此字符串与另一个字符串str比较,忽略大小写。
boolean contains(String str) 判断字符串中是否包含方法传入的字符串。
boolean startsWith(String str) 判断字符串是否以某个指定的字符串开头
boolean endsWith(String str) 判断字符串是否以某个指定的字符串结尾
byte[] getBytes() 将字符串转化为字节数组。
char[] toCharArray() 将字符串转换为字符数组
static String valueOf(char[] chs) static String valueOf(int i) 将字符数组类型和整数类型转型成字符串形式。用法String.valueOf(xxx)
String replace(char old,char new) 替换功能。
String replace(String old,String new) 替换功能。
String trim() 去除字符串两空格。
int compareTo(String str) 按字典顺序比较两个字符串。
int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,忽略大小写。
public String[] split(String regex) 分隔字符串成字符数组。
StringBuffer()
构造一个没有字符的字符串缓冲区,初始容量为16个字符。
StringBuffer(CharSequence seq)
构造一个包含与指定的相同字符的字符串缓冲区 CharSequence 。
StringBuffer(int capacity)
构造一个没有字符的字符串缓冲区和指定的初始容量。
StringBuffer(String str)
构造一个初始化为指定字符串内容的字符串缓冲区。
增 :
StringBuffer append(String str) 将字符串str拼接到末尾
StringBuffer insert(int offset, String str)将字符串str拼接到指定位置
删 :
StringBuffer deleteCharAt(int index) 删除指定位置的字符
StringBuffer delete(int start, int end) 删除指定区域的字符(左开右闭)
改:
public StringBuffer replace(int start,int end,String str)将指定区域的字符串替换成字符串str
其他:
public StringBuffer reverse() 颠倒字符串
public String substring(int start)从指定位置开始截取字符串
public String substring(int start,int end)截取指定区域的字符串
String,StringBuffer,StringBuilder三者的区别
三者本质都是字符序列,string字符序列不支持对字符直接修改,stringbuffer和stringbuilder是字符缓冲区,可变的字符序列。stringbuffer线程安全效率不高、stringbuilder线程不安全效率高。
String字符串类总结的更多相关文章
- C++自定义String字符串类,支持子串搜索
C++自定义String字符串类 实现了各种基本操作,包括重载+号实现String的拼接 findSubStr函数,也就是寻找目标串在String中的位置,用到了KMP字符串搜索算法. #includ ...
- 17.C++-string字符串类(详解)
C++字符串string类 在C语言里,字符串是用字符数组来表示的,而对于应用层而言,会经常用到字符串,而继续使用字符数组,就使得效率非常低. 所以在C++标准库里,通过类string从新自定义了字符 ...
- Java String 字符串类细节探秘
一. 字符串基本知识要点 字符串类型String是Java中最常用的引用类型.我们在使用Java字符串的时候,通常会采用两种初始化的方式:1. String str = "Hello Wor ...
- String字符串类的获取功能
StringDemo.java /* * String类的获取功能: * int length():获取字符串的长度,其实也就是字符个数 * char charAt(int index):获取指定索引 ...
- 漫话C++之string字符串类的使用(有汇编分析)
C++中并不提倡继续使用C风格的字符串,而是为字符串定义了专门的类,名为string. 使用前的准备工作 在使用string类型时,需要包含string头文件,且string位于std命名空间内: # ...
- String字符串类课后作业
String动手动脑和课后作业 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 结果: 总结:在Java中,内容相同的字串常量(&quo ...
- C++常用的string字符串截断函数
C++中经常会用到标准库函数库(STL)的string字符串类,跟其他语言的字符串类相比有所缺陷.这里就分享下我经常用到的两个字符串截断函数: #include <iostream> #i ...
- Java:字符串类String的功能介绍
在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...
- 设计一个字符串类String(C++练习题)
要求:设计一个字符串类String,可以求字符串长度,可以连接两个串(如,s1=“计算机”,s2=“软件”,s1与s2连接得到“计算机软件”),并且重载“=”运算符进行字符串赋值,编写主程序实现:s1 ...
随机推荐
- 洛谷 P2205 解题报告
P2205 画栅栏Painting the Fence 题目描述 \(Farmer\) \(John\) 想出了一个给牛棚旁的长围墙涂色的好方法.(为了简单起见,我们把围墙看做一维的数轴,每一个单位长 ...
- CDN的基本工作过程
CDN的基本工作过程 使用CDN会极大地简化网站的系统维护工作量,网站维护人员只需将网站内容注入CDN的系统,通过CDN部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商.跨地域的用户覆盖.由 ...
- linux常用的时间获取函数(time,gettimeofday,clock_gettime,_ftime,localtime,strftime )
time()提供了秒级的精确度 1.头文件 <time.h> 2.函数原型 time_t time(time_t * timer) 函数返回从TC1970-1-1 0:0:0开始到现在的秒 ...
- maven入门 (二)_私服安装与上传下载
本篇文章主要介绍maven的私服安装和 jar包的上传与下载.毕竟大家还是在公司需要上传jar包到自己公司私服的. 1.安装私服 下载链接: https://pan.baidu.com/s/17dbQ ...
- app后端设计(4)-- 通讯的安全性
在app的后台设计中,一个很重要的因素是考虑通讯的安全性. 因此,我们需要考虑的要点有: 1. 在app和后台,都不能保存任何用户密码的明文 2. 在app和后台通讯的过程中,怎么保证用户信息的安全性 ...
- 16.app后端如何保证通讯安全--url签名
app和后端的通讯过程中,api请求有可能被别人截取或不小心泄露.那么,怎么保证api请求的安全呢?在这篇文章中,介绍一种常见的保证api请求安全的做法--url签名. 1. url签名详解 在前一篇 ...
- fixed 和 absolute 定位的区别
fixed:固定定位 absolute:绝对定位 在没有滚动条的情况下两者其实没有差异.但是在有滚动条后,fixed始终会在定好的位置不动,而absolute会随参照对象元素的宽高 ...
- python selenium模拟滑动操作
selenium.webdriver提供了所有WebDriver的实现,目前支持FireFox.phantomjs.Chrome.Ie和Remote quit()方法会退出浏览器,而close()方法 ...
- [Python接口自动化]从零开始学习python自动化(1):环境搭建
第一步:安装python编译环境 安装python编译环境之前,必须保证已安装jdk哈,如果为安装,请参考https://jingyan.baidu.com/article/6dad5075d1dc4 ...
- Asp.Net WebAPI中Filter过滤器的使用以及执行顺序
转发自:http://www.cnblogs.com/UliiAn/p/5402146.html 在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行 ...