Java语言之常用的API
API概述
(1)应用程序编程接口
(2)就是JDK提供给我们的一些提高编程的Java类
常用类
- Object类/Scanner类
- String类/StringBuffer类/StringBuilder类
- 数组高级和Arrays类
- 基本类型包装类(Integer,Character)
- 正则表达式(Pattern,Matchar)
- Math类/Random类/System类
- BigInteger类/BigDecimal类
- Date类/DateFormat类/Calender类
Object类
(1) object是类层次结构的根类,所有的类都直接或者间接的继承自object类。
(2) object类的构造方法只有一个,并且是无参构造
这其实就是理解当时我们说过。子类构造方法默认访间父类的构造是无参构造
(3)要掌握的方法:
- A: tostring ()
返回对象的字符串表示,默认是由类的全路径+‘@’ +哈希值的十六进制表示。
这个表示其实是没有意义的,一般子类都会重写该方法。
如何重写呢?过程我也讲解过了基本上就是要求信息简单明了
但是最終还是自动生成。 - B:equals ()
比较两个对象是否相同。默认情况下比较的是地址值是否相同。而比较地址值是没有意义的。
所以一般子类也会重写该方法重写过程我也详细的进解和分析了,但是最终还是自动生成。
(4)要了解的方法:
- A:hashCode() 返回对象的哈希值。不是实际地址值可以理解为地址值。
- B:getClass() 返回对象的字节码文件对象,反射中我们会详细进解
- C:finalize() 用于垃圾回收,在不确定的时间
- D:clone() 可以实现对象的克隆包括成员变量的数据复制。但是它和两个引用指向同一个对象是有区别的。
(5)两个注意问题:
- A:直接输出一个对象名称,其实默认调用了该对象的toString ()方法。
- B:面试题
==和eguals()的区别?- ==
基本类型:比较的是值是否相同
引用类型:比较的是地址值是否相同
- ==
- equals ()
只能比较引用类型。默认情况下比较的是地址值是否相同。
但是,我们可以根据自己的需要重写该方法。
Scanner类(了解)
- (1)在JDK5以后出现的用于键盘录入数据的类。
- (2)构造方法:
- A:讲解了system. in这个东西。
它其实是标准的输入流,对应于键盘录入 - B:构造方法
Inputstream is = System. in;
Scanner (InputStream is) - C:常用的格式
Scanner sc = new Scanner (System.in) ;
- A:讲解了system. in这个东西。
- (3)基本方法格式
- A:hasNextxxx()判断是否是某种类型的
- B:nextxxx()返回某种类型的元素
- (4)要掌握的两个方法
- A:public int nextInt()
- B:public String nextLine ()
- (5)需要注意的小问题
- A:同一个scanner对象,先获取数值,再获取字符串会出现一个小问题。
- B:解决方案:
a:重新定义一个Scanner对象
b:把所有的数据都用字符串获取,然后再进行相应的转换
String类
字符串:就是由多个字符组成的一串数据。也可以看成是一个字符数组。
通过查看API ,我们可以知道
A:字符串字面值" abc"也可以看成是一个字符串对象。
B:字符串是常量,一旦被赋值,就不能被改变。
- 构造方法:
public String() :空构造
public String(byte[] bytes) :把字节数组转成字符串
public String (byte[] bytes,int index, int, length) :把字节数组的一部分转成字符串
public String(char[] value) :把字符数组转成字符串
public String (char[] value, int index, int count) :把字符数组的一部分转成字符串
public String (String original) :把字符串常量值转成字符串
String s=“abc” ,也可以看成是一个字符串对象。
String中 == 和equals的区别:
==比较是地址值,equals比较的是内容。
String s = new String (“hello”) ;和String s = "hello"的区别?
前者先到方法区的字符串常量池中找,如果有就直接返回,没有,就创建并返回,然后在堆内存中创建对象,
字符串直接赋值的方式是在先到方法区的字符串常量池中找,如果有就直接返回,没有,就创建并返回
字符串的拼接:
字符串如果是变量相加,先开辟空间,然后拼接
字符串如果是常量相加,先相加,然后在常量池中找,如果有就直接返回,否则,就创建.
字符串的功能:
-
String类的判断功能:
boolean equals (object obj) :比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str) :比较字符串的内容是否相同,忽略大小写
boolean contains (String str) : 判断大字符串中是否包含小字符串
boolean startsWith (String str) :判断字符串是否以某个指定的字符串开头
boolean endsWith(String str) :判断字符串是否以某个指定的字符串结尾
boolean isEmpty() :判断字符串是否为空。注意:
字符串內容为空和字符串对象为空。
String s =“”;
String s=null; -
String类的获取功能:
int length() :获取字符串的长度。
char charAt (int index) :获取指定索引位置的字符
int indexof (int ch) :返回指定字符在此字符串中第一次出现处的索引。
为什么这里是int类型,而不是char类型? 原因是: 'a ‘和97其实都可以代表’a’
int indexOf (String str) :返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex) :返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex) :返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
String substring(int, start) :从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end) :从指定位置开始到指定位置结束截取字符串。 -
String类的转换功能:
byte[] getBytes () :把宇符串转换为宇节数组。
char[] toCharArray() :把字符串转换为字符数组。
String[] split(String regex):将字符串变成字符串数组 涉及到正则表达式
static String valueof (char[] chs) :把字符数组转成字符串。
static String valueof (int i) :把int类型的数据转成字符串。
注意: String类的valueOf方法可以把任意类型的数据转成字符串。
String toLowerCase () : 把字符串转成小写。
String toUpperCase () :把字符串转成大写。
String concat (String str) : 把字符串拼接。 -
String类的其他功能:
替换功能:
String replace (char old, char new)
String replace (String old,String new)去除字符串两空格
String trim()按字典顺序比较两个字符串
int compareTo(String str)
int compareToIgnoreCase (String str)
StringBuffer类
用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提 供了一个字符串缓冲区类。stringBuffer供我们使用。
StringBuffer构造方法
- public StringBuffer() 无参
- public StringBuffer(int capacity) 指定初始容量的字符串缓冲区
- public StringBuffer(String str) 指定字符串为其内容的字符串缓冲区
StringBuffer的添加功能
- public synchronized StringBuffer append(String str):可以把任意类型的数据添加到字符串缓冲区,并返回字符串缓冲区本身
- public synchronized StringBuffer insert(int offset, String str):在指定位置把任意类型的数据插入到字符串缓冲区,并返回字符串缓冲区本身
StringBuffer的删除功能
- public StringBuffer delete(start, end):删除从指定位置开始到指定位置结束的内容,并返回字符串缓冲区本身
- public StringBuffer deleteCharAt(index):删除指定位置的字符,并返回字符串缓冲区本身
StringBuffer的替换功能
- public StringBuffer replace(start, end, str):从start开始到end用str替换
StringBuffer的反转功能
- public StringBuffer reverse():将字符串缓冲区的内容反转,并返回字符串缓冲区本身
StringBuffer的截取功能
- public String substring(int start):从start开始到末尾截取 本身不变
- public String substring (int start, int end):从start开始到end截取 包左不包右
1:String、StringBuffer、StringBuilder的区别
- A:String是内容不可变的,而StringBuffer, StringBuilder都是内容可变的。
- B:StringBuffer是同步的,数据安全,效率低; StringBuilder是不同步的,数据不安全,效率高
2: StringBuffer和数组的区别?
二者都可以看出是一个容器,装其他的数据。
但是呢,StringBuffer的数据最终是一个字符串数据。
而数组可以放置多种数据,但必须是同种数据类型的。
3 :形式参数问题
String作为参数传递
StringBuffer作为参数传递
String作为形式参数传递,效果和基本类型作为参数传递是一样的
数组高级和Arrays类
-
冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 -
选择排序
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处 -
查找:
基本查找:元素数组无序(从头查到尾)
折半查找(二分法查找):元素数组有序
Arrays:针对数组操作的工具类。比如排序和查找
- public static String toString(int[] a): 把数组转换成字符串
- public static void sort(int[] a): 对数组进行排序
- public static int binarySearch(Object[] a, Object key):二分查找
基本类型包装类(Integer,Character)
- Character的构造方法
Character c=new Character(‘a’); - Character的常用方法
public static boolean isUpperCase (char ch) :判断给定的字符是否是大写字符
public static boolean isLowerCase (char ch) : 判断给定的字符是否是小写字符
public static boolean isDigit (char ch) :判断给定的字符是否是数字字符
public static char toUpperCase (char ch) :把给定的字符转换为大写字符
public static char toLowerCase (char ch) :把给定的字符转换为小写字符
正则表达式(Pattern,Matchar)
(1) 正则表达式:符合一定规则的字符串
(2)常见规则
A:字符
X 字符x 举例:'a'表示字符a
\\反斜线字符。
\n新行(.换行).符('\u000A')
\r 回车符 ('\u00D')
B:字符类
[abc] a、b、或c(简单类)
[^abc]任何字符,除了a、b或c(否定)
[a-zA-Z] a到z或A到Zx,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
C:预定义字符类
.任何字符。我的就是.字符本身,怎么表示呢? \.
\d数字[0-9]
\W单词字符:[a-zA-Z_ _0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
D:边界匹配器
^ 行的开头
$ 行的结属
\b 单词边界
就是不是单词字符的地方。
举例: hello world?haha;xixi
E:Greedy数量词
X? X一次或一次也没有
X* X零次或多次
X+ X一次或多次
X{n} X恰好n次
X{n,} X至少n次
X{n,m} X至少n次,但是不超过m次
(3)常见功能
判断功能
String类的public boolean matches(String regex)
分割功能
String类的public String[] split(String regex)
替换功能
String类的public String replaceAll(String regex, String replacement)
使用给定的replacement替换此字符串中匹配给定正则表达式的子字符串
获取功能
Pattern和Matcher
Pattern p = Pattern. compile ("a*b") ;
Matcher m = p.matcher ("aaaaab") ;
find() :查找存不存在
group () :获取刚才查找过的数据
Math类
Math :用于数学运算的类。
成员变量:
public static final double PI
public static final double E
成员方法:
public static int abs(int a) :绝对值
public static double ceil (double a) :向上取整
public static double floor (double a) :向下取整
public static int max(int a,int b) :最大值(min自学)
public static double pow(double a,double b) : a的b次幂
public static double random() :随机数[0.0,1.0)
public static int round(float a)四舍五入 (参数为double的自学)
public static double sqrt (double a) :正平方根
Random类
Random:产生随机数的类
构造方法:
public Random() :没有给种子,用的是默认种子,是当前时间的毫秒值
public Random (long seed) : 给出指定的种子
给定种子后每次得到的随机数是相同的
成员方法:
public int nextInt () :返回的是int范围内的随机数
public int nextInt (int n) :返回的是[0, n)范围的内随机数
System类
System类包含一些有用的类字段和方法。 它不能被实例化。
方法:
public static void gc() :运行垃圾回收器。
public static void exit(int status) :终止当前正在运行的Java虚拟机。参数用作状态码;根据惯例,非0的状态码表示异常终
public static long currentTimeMillis():返回以毫秒为单位的当前时间
public static void araycopy(object src,int srcPos,object dest,int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
BigInteger类/BigDecimal类
BigInteger :可以让超过Integer范围内的数据进行运算
构造方法:
BigInteger (String val)
成员方法:
public BigInteger add (BigInteger val) :加
public BigInteger subtract (BigInteger val) :减
public BigInteger multiply (BigInteger val) :乘
public BigInteger divide (BigInteger val) :除
public BigInteger[] divideAndRemainder (BigInteger val) :返回商和余数的数组
由于在运算的时候,float类型和double很容易丢失精度,演示案例。所以,
为了能精确的表示、计算浮点数,Java提供了BigDecimal
构造方法:
public BigDecimal (String val)
成员方法:
public BigDecimal add (BigDecimal augend):加
public BigDecimal subtract (BigDecimal subtrahend):减
public BigDecimal multiply (BigDecimal multiplicand):乘
public BigDecimal divide (BigDecimal divisor):除
public BigDecimal divide (BigDecimal divisor,int scale, int, roundingMode ):保留小数几位
Date类/DateFormat类
(1)Date是日期类,.可以精确到毫秒
A:构造方法
Date():根据当前的默认毫秒值创建日期对象
Date(long date):根据给定的毫秒值创建日期对象
B:成员方法
public long getTime () :获取时间,以毫秒为单位
public void setTime (long time) : 设置时间
(2) DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat
A:SimpleDateFormat (String pattern) 给定模式
YYYY -MM-dd HH :mm:ss
B:日期和字符患的转换
a:Date -- string
format ()
b:String -- Date
parse ()
Calender类
(1)日历类,封装了所有的日历字段值通过统一的方法根据传入不同的日历字段可以获取值
(2)如何得到个日历对象呢?
calendar rightNow = Calendar . getInstance() ;
本质返回的是子类对象
(3)成员方法
A:public int get(int field):根据日历字段得到对应的值
B:public void add(int field,int amount) :根据日历字段和一个正负数确定是添加还是诚去对应日历字段的值
C:public final void set(int year,int month, int date):设置日历对象的年月日