Java之常用API(上)

Java之常用API(上)

1 .JDK API
JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口) 就是一些已写好、可供直接调用的功能(在Java语言中,这些功能以类的形式封装)。
JDK API 包含的类库功能强大,经常使用的有:字符串操作、集合操作、文件操作、输入输出操作、网络操作、多线程等等。
JDK包结构:
1.1JDK中经常使用的包有:
java.lang包 Java程序的基础类,如字符串、多线程等。该包中的类使用的频率非常高,不需要import可以直接使用。
java.util 常用工具类,如集合、随机数产生器、日历、时钟等。
java.io 文件操作、输入/输出操作。
java.net 网络操作。
java.math 数学运算相关操作。
java.security 安全相关操作。
java.sql 数据库访问。
java.text 处理文字、日期、数字、信息的格式。
1.2 文档注释
格式: /** ** */ 通常加在类和方法的上方,用于说明作者,时间,版本,要实现功能的详细描述等信息;
用法: 1. 通过javadoc视图查看 2. 将整个项目的api文档导出。

详解String常用API

public final class String{}
String是不可变的对象,本质是字符数组,String对象一经创建,对象中的值是不可以改变的。
注意点:字符串对象是不可变对象,一经创建,内容值不可以改变。
String对象的创建 有2种方式 String str = new String(String str) ;
a) 在堆中创建一个String对象,此对象中的值为给定的参数值。
b) String = “abc”;
通过直接给出字符串字面量的方式创建出的对象,是保存于字符串常量池的。 字符串常量池是位于堆中的,字符串常量池是用于保存字符串字面量的,为了提高对象的使用率。在一个程序中,创建的字符串字面量对象保存于常量池中,如果在此之后,又要使用到此字面量, 那么直接到常量池找,看此对象是否存在,如果存在,让引用直接指向,而不重新创建对象,如果不存 在,才创建对象。
注意点:其实常量池中保存的并不是字面量对象,而是引用。
1.3 String常用方法:
length():int 获取字符串的长度(字符个数)
indexOf系列方法: indexOf(int ch):返回值类型int 获取指定字符在字符串中第一次出现的索引。
indexOf(int ch,int fromIndex):返回值类型int 从指定位置开始查找指定字符第一次出现的索引 。
indexOf(String subStr):返回值类型int 获取指定子字符串在本字符串中第一次出现的索引 。
indexOf(String subStr,int fromIndex):返回值类型int 从指定位置开始查找指定子字符串在当前字符串中第一次出现的索引。
注意点:通过indexof方法查找指定字符/字符串出现的索引,如果找不到,返回-1。
举个栗子:
统计”lo”出现的次数
String str = “helloxlomloyylo”;
String subStr = “lo”;
int count = 0,
index=0;
while((index=str.indexOf(subStr,index))!=-1){
//查找子串是否出现
count++;
//改变index的值
index += subStr.length();
}
System.out.println(count);

lastIndexOf系列: lastIndexOf(int ch):返回值类型int 获取指定字符在字符串中最后一次出现的下标 。
lastIndexOf(int ch,int fromIndex):返回值类型int 从指定位置开始反向查找指定字符最后一次出现的下标。
trim():返回值类型String 作用:去掉字符串开始和结尾的空格,得到一个新对象 。
注意点:字符串中间位置的空格不去,调用此方法得到了新对象 。
startsWith(String prefix):返回值类型boolean 。字符串以什么开始 。
endsWith(String suffix):返回值类型boolean 字符串以什么结尾。
toUpperCase():返回值类型String 将字符串转大写。
toLowerCase():返回值类型String 将字符串转小写。
注意点:方法的返回值如果为String,意味着调用此方法得到了一个新String对象。
charAt(int index):返回值类型char 其作用正好和indexOf方法相反 。
substring :substring(int beginIndex):返回值类型String。
substring(int beginIndex,int endIndex):返回值类型String ,包括开头的边界值,不包括结尾的边界值(包头不包尾)。
很多方法的参数都会涉及到两个边界值,通常是包头不包尾 。例如: Math.random() 范围是(0-1] 。
static valueOf(其他类型的数据):返回值类型String 得到其他数据类型的字符串表示。
2.0 StringBuilder
问题: 字符串的拼接: String str = s1+s2+s3+….+sn; 以上这种方式拼接字符串过程中会浪费大量内存,不推荐的。
StringBuilder提供了一个可变的字符数组,所有字符串内容的修改都是在这个数组中进行,而不会每次修改都创建一个新对象。
StringBuilder使用:

  1. 构造方法
    a) new StringBuilder()
    b) new StringBuilder(String)
    StringBuilder方法:
    a) append(String str):作用:字符串之间进行拼接 ,返回值类型StringBuilder 注意点:返回的是this 返回的是本身。
    b) insert(int destOffSet,String str) 从指定位置插入一段字符串。
    c) delete(int start,int end) 删除两个下标之间的字符串(包头不包尾)。
    d) replace(int strat,int end,String str) 将指定下标之间的数据替换成指定的数据。
    e) reverse() 字符串倒叙(反转)123 —> 321。
    f) toString() 以字符串的形式打印或输出。
    注意点: StringBuilder的很多方法的返回值均为StringBuilder类型。这些方法的返回语句均 为:return this。 2.java的字符串连接的过程是利用StringBuilder实现的,String s = s1+s2;在内存中底层就是采用StringBuilder完成。
    StringBuffer和StringBuilder的区别:
    StringBuffer先出现的,它的作用和StringBuilder 完全相同,api操作也是完全相同的。
    区别在于:StringBuffer是保证线程安全的,效率较低 。
    StringBuilder是非线程安全的,效率较高。

详解Java中的日期操作

Date
构造方法:
1)Date():创建日期对象指向分配的日期时间。
2)Date(long date):创建日期对象指向给定的毫秒表示的具体时刻。
方法:
getTime():返回值类型为long ,返回从历元时间开始,此Date对象表示的毫秒数,即返回当前Date对象表示的时间距离历元时间差的毫秒表示。
System.currentTimeMills():返回值类型为long 当前时间毫秒值。作用和Date中的getTime()相同。
setTime(long mills):返回值类型为void 作用:让Date对象指向指定毫秒表示的日期时刻
SimpleDateFormat:日期转换类
SimpleDateFormat可以完成String和Date类型间的相互转换:
SimpleDateFormat构造方法:SimpleDateFormat(String pattern) Pattern中:y表示年 M表示月 d表示日期 H表示小时 m表示分钟 s表示秒数 注意点:字母大写和小写表示的意义不同。 例如:SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
SimpleDateFormat 方法:
a) format(Date):返回值类型为String 。
b) parse(String):返回值类型为 Date 。

举个栗子:
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//利用此对象完成String和Date类型间的转换
//Date–>String的转换
String str = sdf.format(date);
System.out.println(str);
String dateStr = “2017-02-03 12:12:12”;
//String–>Date的转换
Date date = sdf.parse(dateStr);
System.out.println(date);
}
Calendar
Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历, 即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。
得到Calendar对象 :2种方式
1) 创建实现类对象 。
2) 调用静态方法getInstance() 。
a) getInstance() 会根据系统当前时区来创建子类对象(有可能会创建当地历法对象),但是一般创建的都是GregorianCalendar对象。
Calendar类中定义了一些日历字段(字段摘要)
使用Calendar提供的get方法及一些常量可以获取日期及时间分量
static int YEAR 指示年份的字段数字
static int MONTH 指示月份的字段数字
static int DATE 指示一个月份中的第几天
static int DAY_OF_WEEK 指示一个星期中的某天,1为星期日
static int HOUER,MINUTE,SECOND 时,分,秒

方法: GET方法:get(int Field):返回值类型 int 作用:获取指定日历字段表示的时间值。
注意点:

  1. 日期中的月份0-11表示 1-12(月)
  2. 日期中的星期几在java中的对应数值是这样的:
  3. a) 日 一 二 三 四 五 六
  4. b) 1 2 3 4 5 6 7
  5. getTime():返回值类型为Date :得到一个Date对象表示此Calendar对象表示的时间值 。
  6. 注意:和Date类中的getTime()要区分开 。
  7. getTimeInMills():返回值类型 long ,等同于Date类中的getTime()的作用 。
  8. getActualMaximum(int field):返回值类型int :获取指定日历字段的最大值,通常用于获取某个月中的最大日期值的
    Calendar calendar2 = Calendar.getInstance();
    int year = calendar2.get(Calendar.YEAR);
    int month = calendar2.get(Calendar.MONTH)+1;
    int date = calendar2.get(Calendar.DATE);
    获取以上clendar对象上的一些日历字段表示的时间值
    int date = calendar2.get(Calendar.DATE);
    int hour = calendar2.get(Calendar.HOUR);
    int minute = calendar2.get(Calendar.MINUTE);
    int second = calendar2.get(Calendar.SECOND);
    Date对象创建之后,可以通过setTime让date对象指向其他时刻时间
    set 方法: set(int Field,int value)
    setTime(Date date)
    Object类
    • 在Java类继承结构中,java.lang.Object类位于顶端; 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类默认为 java.lang.Object 类; Object类型的引用变量可以指向任何引用类型对象。
    String str = new String(“a”); System.out.println(str) //a String类重写了toString()方法
    User user = new User();
    System.out.println(user); // 输出 :类名@散列码
    原因:直接打印引用,会默认去调用toString()如果当前类中没有重写此方法,那么默认调用父类中的此方法。
    1. toString()方法:
    是Object类中的重要方法,用于返回对象值的字符串表示:如果不重写toString()方法,将使用Object的toString()方法 。
    因此:强烈建议为自定义的每一个类增加toString方法,toString方法是非常有用的调试工具;格式大多数遵循 “ 类的名字[ 值 ]“
    Java 提供的API几乎都重写了 toString() 包括: String, StringBuilder, Date ……等。
    2. hashCode()方法:
    返回值类型int (十进制的)作用:返回对象的哈希码值(即散列码)。
    根据地址值经过一个算法之后得到的一个整数表示。
    注意点: Java中创建的对象的地址一定是唯一的,但是不同对象对应的散列码值有可能是相同的。
    规定:两个对象如果equals方法的结果为true,那么这个两个对象的散列码值一定是相同的。
    但是如果是两个equals结果为false的对象,他们的散列码值也可能是相同的。

3. equals() 方法:
等同于(==)的作用 ,在Object类中,这个方法判断两个对象是否具有相同的引用,即是否为相同的对象;
在实际应用中,一般需要重写该方法,通过比较对象的成员属性,使该方法更有意义 :建议重写
String类中的equals()方法: String类中重写了此方法,用于实现比较两个字符串中的内容是否相等。
基本数据类型的包装类
JAVA 中8种基本数据类型都有一个与之对应的类,即包装类(wrapper)。
基本类型 包装类型 父类
1)int java.lang.Integer extends java.lang.Number
2)long java.lang.Long extends java.lang.Number
3)double java.lang.Double extends java.lang.Number
4)short java.lang.Short extends java.lang.Number
5)float java.lang.Float extends java.lang.Number
6)byte java.lang.Byte extends java.lang.Number
7)char java.lang.Character 默认extends java.lang.Object
8)boolean java.lang.Boolean 默认extends java.lang.Object
包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值; 包装类是final的,不能定义他们的子类。

Number类
public abstract class Number implements java.io.Serializable {}
抽象类 Number 是 Byte、Double、Float、Integer、Long 和 Short 类的父类;
Integer类的常用方法:

  1. static parseInt(String) : 返回值类型int 作用:String---->int
  2. toString() :返回值类型String
  3. static toString(int i) : 返回值类型String 作用:int---->String
  4. static valueOf(int i) :返回值类型 Integer 作用:int---->Integer
  5. static valueOf(String str):返回值类型Integer 作用:String---->Integer
  6. intValue() :返回值类型int
    自动装箱和拆箱
    从Java 5.0版本以后加入到了 autoboxing功能 自动“拆箱”和“装箱”是依靠编译器在编译期的“预处理”(优化)工作:
    本质:自动装箱 int---->Integer 调用valueOf()方法 而自动拆箱 Integer —>int优化时调用intValue()方法。
    Integer a=3,b=4; Integer i = a+b;

你可能感兴趣的:(Java之常用API,Java之常用API上)