JAVA API 课程笔记
Unit 01
一、API文档
1. JDK API介绍
介绍: JDK中包含大量的API(application programming Interface)。API就是把一些已经写好的、可以直接调用的功能以类的形式封装。用户可以直接使用。常用的有字符串操作、集合操作、文件操作、输入输出操作、网络操作、多线程等等。 JDK类库按包结构划分
类库名 | 作用 |
---|---|
java.lang | 基础类,可以直接使用,不用import |
java.util | 常用工具集、集合、随机数产生器、日历、时钟等都在 |
java.io | 文件操作、输入输出等 |
java.net | 网络操作 |
java.math | 数学运算相关操作 |
java.security | 安全相关操作 |
java.sql | 数据库访问 |
java.txt | 处理文字、日期、数字、信息的格式 |
2. 文档注释
- /** 开头,*/结尾,通过javadoc工具将其转换为HTML文档说明。
- 文档注释写在类和方法的开头,用于说明时间、作者、版本,要实现的功能的详细描述等信息。
生成文档时报了:javadoc: 错误 - 无法读取Input length = 1
解决方法:生成文档的保存路径要是英文的,且我命名类的时候命名为中文了,要把他们都改成英文就行了。
二、字符串基本操作
1. String 是不可改变对象
- java.lang.String使用了final修饰,不能被继承和修改。
- 字符串对象一旦被被创建了就无法改变了。但是字符串可以重新指向。
- java字符串采用unicode编码,规定一个字符对应两个字节长度编码。
str = "Hello";
str = str +"!";
由下图可以看到,字符串的更改是重新创立了一个新的对象,str引用类型再重新指向新的对象。旧的字符串对象由于没有指向就会被回收。
2. String常量池
- 静态字符串:字面量(看见什么就是什么值)、常量、常量连接的结果。
- java中静态字符串会在常量池中创建,创建一个新的字符串对象时JVM首先会检查String常量池中有无相同的字符串,如果有的话会直接将引用类型指向String常量池中已有的字符串。这样可以节省内存。这也是为什么字符串不能修改只能重新创建的原因。
编译器的特性:当表达式两边都是字面量时,编译会将计算完后得出的结果直接替换到表达式原来的位置。
String str = "123" + "Hello"; //等价于 String str = "123Hello";
3. 一些工具
- 获取字符串长度str.length();
String s = "Hello!";
System.out.println(s.length());
//输出结果:6
- indexOf 检索
- int indexOf ( String str ) 在字符串中检索str,返回第一个字母所在的位置。若没有检索到则返回 -1。
- int indexOf ( String str, int fromIndex) 从字符串的fromIndex位置开始检索,返回第一个字符所在位置。没有检索到返回-1。
- int lastIndexOf ( Stringstr, int from) 从字符串的fromIndex位置开始检索,返回最后一个字符所在位置。没有检索到返回-1。
java中两个数字表示一个范围一般都是[a,b) 含头不含尾。
String str1 = "buhuhioiihhuhuhuhijih";
int location = str1.indexOf("io");
int location2 = str1.indexOf("h",3);
int location3 = str1.lastIndexOf("hi");
System.out.println(location);//5
System.out.println(location2);//4
System.out.println(location3);//16
- substring获取子串
- string sbustring ( int beginIndex , int endIndex ) 返回字符串从下标(包括)到上标(不包括)的子字符串。
- String substring ( int beginIndex ) 返回从beginIndex位置到字符串尾的字符串。
/**
* indexOf练习,获取域名www.oracle.com
* 思路:获取第一点位置
* 获取第二个点的位置
* 获取第一个点位置到第二个点位置中间的字符串并打印
*/
String str2 = " www.oracle.com ";
int start = str2.indexOf(".");
int end = str2.indexOf(".",start+1);
String str3 = str2.substring(start+1, end);
System.out.println(str3); //oracle
System.out.println(str2.substring(start+1)); //oracle.com
- trim() 去除字符串两边的空白(空格,tab等)。
/**
* trim()演示
*/
String str4 = str2.trim();
System.out.println(str4); //www.oracle.com
- char charAt(int index) 返回字符串指定位置的字符
/**
* char charAt(int index) 返回字符串指定位置的字符
* 判断字符串是否是回文
*/
String str5 = "上海自来水来自海上";
int len = str5.length()/2;
boolean flag = true;
for(int i=0;i<len;i++) {
if( str5.charAt(i)
!=
str5.charAt(str5.length()-i-1)) {
flag = false;
break;
}
}
if(flag == true) {
System.out.println("是回文");
}
else {
System.out.println("不是回文");
}
}
}
- 判断字符是否以给定字符开头或者结尾。
- boolean startsWith(string str);
- boolean endsWith(string str);
- 大小写变换
toUpperCase( ) ;
toLowerCase( ) ; - valueOf 将其他类型转换为字符串类型。
格式:String.valueOf();
valueOf有若干的重载方法。
/**
* valueOf 演示
*/
double pi = 3.14159;
int value = 123;
char[] charArr = {'a','b','c','d','e',};
String str6 = String.valueOf(pi);
String str7 = String.valueOf(value);
String str8 = String.valueOf(charArr);
System.out.println(str6+" "+str7+" "+str8); //3.14159 123 abcde
}
三、StringBuilder封装可变字符串
- StringBuilder是一种类型,用力啊封装可变的字符串,用过调用里面的方法来改变字符串,用于解决字符串频繁修改所带来的内存消耗。
- 构造方法
public StringBuilder()
public StringBuilder(String str)
- 五种常用的方法
方法名 | 作用 |
---|---|
appends(string str) | 追加字符串 |
insert(int dstOffset , String str) | 插入字符串 |
delete(int start, int end) | 删除字符串 |
replace(int start, int end , string str) | 替换字符串 |
reverse | 字符串反转 |
/**
* StringBuilder演示
*/
StringBuilder str9 = new StringBuilder("HI,my name is jin");
str9.append("How are you"); //HI,my name is jinHow are you
str9.insert(17 , ",!"); //HI,my name is jin,How are you
str9.delete(18, 19);//HI,my name is jin,How are you
str9.reverse(); //uoy era woH,nij si eman ym,IH
System.out.println(str9);
- 返回值:StringBuilde很多方法的返回值都是StringBuilder类。且为
return this;
- StringBuilder 与 StringBuffer
类型 | 特点 |
---|---|
StringBuilder | 非线程安全、并发处理、性能稍快 |
StringBuffer | 线程安全、同步处理、性能稍快 |