Day01:API文档 / 字符串基本操作
JDK API
什么是JDK API?
JDK中包含大量的API类库,所谓AP就是一些写好的,可提供直接调用的功能(在Java语言中,这些功能以类的形式封装)。
JDK API包含的类库功能强大,经常使用的有:字符串处理,集合操作,文件操作,输入输出操作,网络操作,多线程等。
JDK包结构
为了便于使用和维护,JDK类库按照包结构划分,不同功能的类划分在不同的包中;
经常使用的包如下图:
包 | 功能 |
java.lang | Java程序的基础类,如字符串、多线程等,该包中的类使用的频率非常高,不需要import,可以直接使用 |
java.util | 常用工具类,如集合、随机数产生器、日历、时钟等 |
java.io | 文件操作、输入/输出操作 |
java.net | 网络操作 |
java.math | 数学运算相关操作 |
java.security | 安全相关操作 |
java.sql | 数据库访问 |
java.text | 处理文字、日期、数字、信息的格式 |
JAVA文档注释
什么是文档注释?
java只有3种注释方式,前两种分别是//和/* */,第三种被称作为说明注释,它以/** 开始,以*/结尾。
怎么使用注释文档?
加在类和方法的开头,可以轻松的将此注释转换成HTML文档说明;学习者和程序员主要通过文档理解API的功能。
说明注释允许你在程序中嵌入关于程序的信息。你可以使用javadoc工具软件来生成信息,并输入到HTML文件中,说明注释,使你的更加方便的记录你的程序的信息。
javadoc 标签
javadoc工具软件识别以下标签:
标签 | 描述 | 示例 |
---|---|---|
@author | 标识一个类的作者 | @author description |
@deprecated | 指名一个过期的类或成员 | @deprecated description |
{@docRoot} | 指明当前文档根目录的路径 | Directory Path |
@exception | 标志一个类抛出的异常 | @exception exception-name explanation |
{@inheritDoc} | 从直接父类继承的注释 | Inherits a comment from the immediate surperclass. |
{@link} | 插入一个到另一个主题的链接 | {@link name text} |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | Inserts an in-line link to another topic. |
@param | 说明一个方法的参数 | @param parameter-name explanation |
@return | 说明返回值类型 | @return explanation |
@see | 指定一个到另一个主题的链接 | @see anchor |
@serial | 说明一个序列化属性 | @serial description |
@serialData | 说明通过writeObject( ) 和 writeExternal( )方法写的数据 | @serialData description |
@serialField | 说明一个ObjectStreamField组件 | @serialField name type description |
@since | 标记当引入一个特定的变化时 | @since release |
@throws | 和 @exception标签一样. | The @throws tag has the same meaning as the @exception tag. |
{@value} | 显示常量的值,该常量必须是static属性。 | Displays the value of a constant, which must be a static field. |
@version | 指定类的版本 | @version info |
文档注释:
在开始的/**之后,第一行或几行是关于类,变量和方法的主要描述。
之后,你可以包含一个或多个何种各样的@标签。每个@标签必须在一个新行的开始或者在一行的开始紧跟星号(*)。
多个相同类型的标签应该放在一组。
子符串处理
String及其常用API
什么是字符串处理?
一般程序需要处理大量文本数据,Java 语言的文本数据被保存为字符或字符串类型。关于字符及字符串的操作主要用到 String 类和 StringBuffer 类,如连接、修改、替换、比较和查找等。
字符串是 Java 程序中经常处理的对象之一,因此如果字符串运用得不好,将影晌到程序的运行效率。本章从如何定义字符串开始介绍字符串本身的特性,以及各种字符串操作的实现方法。
String类
在代码中遇到字符串常量时,这里的值是"Hello world!",编译器会使用该值创建一个String对象。
和其它对象一样,可以使用关键字和构造方法来创建String对象。
String类有11种构造方法,这些方法提供不同的参数来初始化字符串。
String是不可变对象
java.lang.String使用了final修饰,不能被继承。
字符串底层封装了字符数组及针对字符串数组的操作算法。
字符串一旦创建,对象永远无法改变,单字符串引用可以重新赋值。
Java字符串在内存中采用Unicode编码方式,任何一个字符对应两个字节的定长编码。
String 方法
下面是String类支持的方法,更多详细,参看Java API文档:
SN(序号) | 方法描述 |
---|---|
1 | char charAt(int index) 返回指定索引处的 char 值。 |
2 | int compareTo(Object o) 把这个字符串和另一个对象比较。 |
3 | int compareTo(String anotherString) 按字典顺序比较两个字符串。 |
4 | int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 |
5 | String concat(String str) 将指定字符串连接到此字符串的结尾。 |
6 | boolean contentEquals(StringBuffer sb) 当且仅当字符串与指定的StringButter有相同顺序的字符时候返回真。 |
7 | static String copyValueOf(char[] data) 返回指定数组中表示该字符序列的 String。 |
8 | static String copyValueOf(char[] data, int offset, int count) 返回指定数组中表示该字符序列的 String。 |
9 | boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 |
10 | boolean equals(Object anObject) 将此字符串与指定的对象比较。 |
11 | boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。 |
12 | byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
13 | byte[] getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此字符串复制到目标字符数组。 |
15 | int hashCode() 返回此字符串的哈希码。 |
16 | int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 |
17 | int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
18 | int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 |
19 | int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
20 | String intern() 返回字符串对象的规范化表示形式。 |
21 | int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 |
22 | int lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 |
23 | int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。 |
24 | int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 |
25 | int length() 返回此字符串的长度。 |
26 | boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。 |
27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
29 | String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
30 | String replaceAll(String regex, String replacement 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
31 | String replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
32 | String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。 |
33 | String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。 |
34 | boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 |
35 | boolean startsWith(String prefix, int toffset) 测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 |
36 | CharSequence subSequence(int beginIndex, int endIndex) 返回一个新的字符序列,它是此序列的一个子序列。 |
37 | String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 |
38 | String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。 |
39 | char[] toCharArray() 将此字符串转换为一个新的字符数组。 |
40 | String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
41 | String toLowerCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 |
42 | String toString() 返回此对象本身(它已经是一个字符串!)。 |
43 | String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
44 | String toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 |
45 | String trim() 返回字符串的副本,忽略前导空白和尾部空白。 |
46 | static String valueOf(primitive data type x) 返回给定data type类型x参数的字符串表示形式。 |
常用用到的字符串处理,操作
1.连接字符串
“+”运算符是最简单,最快捷,也是使用最多的字符串连接方式。
在使"+"运算符连接字符串和int型(或double型数)数据时,"+"将int(double)型数据自动转换成String类型。
使用concat()方法也可以。
语法:
字符1.concat(字符2);
连接不同类型数据时用"+"。
2.内存编码及长度
获取字符串长度
语法:
字符串名.length();
3.大小写变换(查阅API)
语法:
字符串名.toUpperCase();
String类的toUpperCase()方法可以将字符串的所有字符全部转换为大写,而非子母的字符不受影响。
语法:
字符串名.toLowerCase();
String类的toLowerCase()方法可以将字符串的所有字符全部转换成小写,而非子母的字符不受影响。
4.trim(查阅API)
去除空格
语句:
字符串名.trim();
5.使用substring获取子串
substring方法用于返回一个字符串的子字符串
substring常用重载方法定义:
String substring(int beginIndex,int endIndex) | 返回字符串中从下标beginIndex(包括)开始到endIndex(不包括)结束的子字符串 |
String substring(int beginIndex) | 返回字符串中从下标beginIndex(包括)开始到字符串结尾的子字符串 |
提取子字符
语句:
字符串名.subString();
6.分割字符串
语法:
字符串名.split(数据类型,变量名);
String类的split()方法可以按指定的分割对目标字符串进行分割,分割后的内容存放在字符串数组中。
7.字符串替换
String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll()
replace()
语法:
字符串.replace(替换数据名,要替换的数据名);
replace()方法用于将目标字符串的指定字符串替换成新的字符(全部含有这个元素)。
replaceFirst()
语法:
字符串.replaceFirst(替换数据名,要替换数据名);
字符串replaceFirst()方法用于将目标字符串中某匹配正则表达式的第一个子字符串替换。
replaceAll()
语法:
字符串.replaceAll(替换数据名,要替换数据名);
replaceAll()方法用于将目标字符串中匹配某正则表达式的所有子字符串替换。
8.字符串比较
语法:
字符串1.equals(字符串2);
equals方法相同逐个比较两个字符串的每个字符是否相同,对于字符大小写也要检查。
语法:
字符串1.equalslgnoreCace(字符串2);
与equals方法相同,但比较时不区分大小写。
语法:
字符串1.compareTo(字符串2);
compateTo()方法用于按字典顺序比较两个字符串大小,比较是基于字符串各个字符的Unicode值。
如果字符串1位于字符串2参数之前,比较结果为一个负整数;否则为整数;如果相等则为0。
9.使用indexOf实现检索
String提供几个重载的indexOf方法
int indexOf(String str) | 在字符串中检索str,返回其第一次出现的位置,如果找不到则返回-1 |
int indexOf(String str,int fromIndex) | 从字符串的fromIndex位置开始检索 |
String还定义有lastIndexOf方法:
int lastIndexOf(String str,int from) | str在字符串中多次出现时,将返回最后一个出现的位置 |
语法:
字符串.imdexOf(查找元素);
indexOf()方法用于返回字符串在指定字符串中首次出现的索引位置,如果能找到返回索值,否则返回-1.
语法:
字符串.lastindexOf(查找元素);
lastindexOf()方法用于返回字符串中指字符串最后一次出现的索引位置,如果找到返回索引,否则返回-1。
lastindexOf()方法是从右往左查找,如果不指定起始索引位置,默认从字符串末尾找。
10.charAt(查阅API)
语法:
字符串名.charAt(索引值);
String类的charAt()方法根据指定的索引值查找。
11. valueOf(查阅API)
valueOf方法用于将其他类型转换成字符串类型。
12.startsWith和endsWith(查阅API)
startsWith检测一个字符串是否以指定字符串开头。
endsWith检测一个字符串是否以值定字符串结尾。
StringBuffer和StringBuilder类
当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。
和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据)。
由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用StringBuffer类。
StringBuffer 方法
常用方法:
StringBuilder类的常用方法 | 功能描述 |
StringBuilder append(String str) | 追加字符串 |
StringBuilder insert(int dstOffset,String s) | 插入字符串 |
StringBuilder delete(int start,int end) | 删除字符串 |
StringBuilder replace(int start,int end,String str) | 替换字符串 |
StringBuilder reverse() | 字符串反转 |
下面的列表里的方法和String类的方法类似:
序号 | 方法描述 |
1 | int capacity() 返回当前容量。 |
2 | char charAt(int index) 返回此序列中指定索引处的 char 值。 |
3 | void ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。 |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst 。 |
5 | int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。 |
6 | int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 |
7 | int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。 |
8 | int lastIndexOf(String str, int fromIndex) 返回最后一次出现的指定子字符串在此字符串中的索引。 |
9 | int length() 返回长度(字符数)。 |
10 | void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch 。 |
11 | void setLength(int newLength) 设置字符序列的长度。 |
12 | CharSequence subSequence(int start, int end) 返回一个新的字符序列,该字符序列是此序列的子序列。 |
13 | String substring(int start) 返回一个新的 String ,它包含此字符序列当前所包含的字符子序列。 |
14 | String substring(int start, int end) 返回一个新的 String ,它包含此序列当前所包含的字符子序列。 |
15 | String toString() 返回此序列中数据的字符串表示形式。 |
追加字符串
语法:
StingBaffer 对象.append(字符串);
StringBaffer类的append()方法用于向原有StringBaffer对象中追加字符串,追加到StringBaffer对象的末尾。
替换字符串
语法:
StringBaffer 对象.deletecharAt();
deletecharAt()方法用于移除序列中指定位置的字符。
反转字符串
语法:
StringBuffer 对象.reverse();
reverse() 方法用于将字符串序列用其反转的形式取代。
删除字符串
1. deleteCharAt() 方法
deleteCharAt() 方法用于移除序列中指定位置的字符,
语法:
StringBuffer 对象.deleteCharAt(int index);
deleteCharAt() 方法的作用是删除指定位置的字符,然后将剩余的内容形成一个新的字符串。
2.delete方法():
语法:
StringBaffer 对象.delete(int start,int end);
delete()方法用于移除序列中子字符串的字符。
插入字符串
语法:
字符串.insert();
StringBuilder总结
· StringBuilder是可变字符串。字符串的内容计算,建议采用StringBuilder实现,这样性能会好一些;
· java的字符串连接的过程是利用StringBuilder实现的
StringBuffer和StringBuilder
- StringBuffer是线程安全的,同步处理的,性能稍慢
- StringBuilder是非线程安全的,并发处理的,性能稍快
Day01:API文档 / 字符串基本操作的更多相关文章
- JAVASE02-Unit01: API文档 、 字符串基本操作
API文档 . 字符串基本操作 文档注释 package day01; /** * 文档注释只能定义在三个地方: * 类,方法,常量 * * 文档注释是功能注释,用来说明功能作用 * 在类上使用的目的 ...
- jQuery MiniUI开发系列之:使用API文档
jQuery MiniUI在组件设计上,是简约.独立的,没有复杂的继承体系. 比如使用DataGrid,可以在api文档的datagrid部分,查找到datagrid的所有属性.方法.事件,而无需关注 ...
- ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现
from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...
- HighCharts 详细使用及API文档说明
一.HighCharts开发说明: HighCharts开发实际上配置HighCharts每个部分,比如配置标题(title),副标题(subtitle)等,其中每个部分又有更细的参数配置,比如标题下 ...
- GhostDoc:生成.NET API文档的工具 (帮忙文档)
在 Sandcastle:生成.NET API文档的工具 (帮忙文档) 后提供另一个生成API文档的工具. 1) 准备工作 安装GhostDoc Proc. 收费的哦.... 这个工具的优势是不像 ...
- 使用jsdoc-toolkit来自动生成js api文档
近来前端组小盆友开发的类库越来越多,很多情况下彼此不知道写了些什么方法,为了更好的合作提高工作效率,找了个比较好的api文档生成方法.使用jsdoc-toolkit来自动生成js api文档. 一. ...
- HighCharts 具体使用及API文档说明
一.HighCharts开发说明: HighCharts开发实际上配置HighCharts每一个部分,比方配置标题(title),副标题(subtitle)等,当中每一个部分又有更细的參数配置,比方标 ...
- grunt api 文档
Grunt docs Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. 安装 grunt-cli npm install grunt-cli -g 注 ...
- FastDFS接口API文档说明
FastDFS接口API文档说明 时间:2012-03-17 来源:R9IT 作者:R9传奇 一.命令行的上传: 上传命令1. /usr/local/bin/fdfs_upload_file conf ...
随机推荐
- eclipse编码格式(中文乱码)
https://jingyan.baidu.com/article/2009576193ee38cb0721b416.html 修改工作空间默认编码 1 进入Eclipse,导入一个项目工程,如果项目 ...
- python继承小demo
# -*- coding: utf-8 -*- """ 继承的意义:实现代码重用,数据函数都可以重用 子类覆盖,子类与父类同名 选择性继承 super().__init_ ...
- 一例基于thinkphp,jquery和bootstrap渲染的查询数据分页器
对于某些查询记录很多的结果,web页面不得不采用分页器,现在奉上一例代码,其主要逻辑是:由页面的dom 节点发起ajax请求,返回的查询结果根据页面布局需要进行切片:并根据总记录数和页面展现的条数算出 ...
- mysql常用查询命令
转引自:https://www.cnblogs.com/widows/p/7137184.html 常用mysql命令 show variables like 'character_set_clien ...
- 基于TCP的客户端、服务器端socket编程
一.实验目的 理解tcp传输客户端服务器端通信流程 二.实验平台 MAC OS 三.实验内容 编写TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址.端口号,并 ...
- JAVA笔记2-面向对象与内存解析
1.java中的变量先声明.再赋值.再使用.(局部变量必须初始化,成员变量默认初始化) 2.基本类型之外的所有类型都是引用类型.基本类型占一块内存,引用类型占两块(所有new出来的东西装在堆内存,因为 ...
- OpenCV笔记(1)(图片读取与现实、色彩空间、基础运算、均值方差、逻辑运算、泛洪填充、均值中值及自定义平滑)
一.图片读取和显示 import cv2 as cv # 图片读取cv.imread(img_path) car_img = cv.imread("car1.png") # 图片显 ...
- 51 Nod 最大子矩阵和
1051 最大子矩阵和 基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的 ...
- Codeforces Round #325 (Div. 2) B. Laurenty and Shop 有规律的图 暴力枚举
B. Laurenty and Shoptime limit per test1 secondmemory limit per test256 megabytesinputstandard input ...
- .net core 在服务器端获取api传递的参数
在 ActionFilterAttribute 的OnActionExecutionAsync 中使用如下代码从流中读取用户参数 //从文件流中读取传递测参数 using (var ms = new ...