Java 类、接口的API
本章节收集的类/接口API有:
Object类,枚举,包装类,接口Comparable,类Arrays,Thread类,System类,Math,BigInteger,Random,日期时间,异常
Object类
非静态方法需对象调用
public String toString(): 【把一个对象的信息用一个字符串表示,尽量要能够简单易懂,建议子类重写】
public Class<?> getClass(): 【获取对象的“运行时”类型】
public void finalize(): 【当一个对象被确定为垃圾时,由GC垃圾回收器来进行调用,每一个对象的finalize()方法只会被调用一次】
public int hashCode(): 【返回一个对象的hashCode值】
常规协定:
(1)如果一个对象的参与计算hashCode值的成员变量没有修改,那么在程序运行期间,每次获取的hashCode值不变。
(2)如果两个对象hashCode不同,那么这两个一定不“相等”
(3)如果两个的hashCode值相同,那么这两个对象不一定“相等”
(4)如果两个相等,那么他们的hashCode值一定要相同。
public boolean equals(Object obj): 【用于判断当前对象与指定对象是否相等】
默认的实现,等价于“==”,比较对象的内存地址。
子类可以选择重写,重写有一些要求及原则:重写equals时,一定要重写hashCode方法。一致性、对称性、自反性、传递性、非空对象与null的equals一定是false
protected Object clone()throws CloneNotSupportedException : 【获取一个对象的克隆体对象】
所有类型都可以重写这个方法,它是获取一个对象的克隆体对象用的,就是造一个和当前对象各种属性值一模一样的对象。当然地址肯定不同。
调用此方法必须实现java.lang.Cloneable接口。
枚举
1.toString(): 【默认返回的是常量名(对象名),可以继续手动重写该方法】
2.name(): 【返回的是常量名(对象名)】
3.ordinal(): 【返回常量的次序号,默认从0开始】
4.values(): 【返回该枚举类的所有的常量对象,返回类型是当前枚举的数组类型,是一个静态方法】
5.valueOf(String name): 【根据枚举常量对象名称获取枚举对象】
包装类
大部分方法为静态方法,可用类名调用
1、基本数据类型和字符串之间的转换
1)String str = String.valueOf(xxx); 【把基本数据类型转为字符串】
2)除了Character类之外,其他所有包装类都具有parseXxx静态方法
int a = Integer.parseInt("整数的字符串"); 【String转换成对应的基本类型 】
3)把字符串转为包装类,然后可以自动拆箱为基本数据类型,(返回值类型是包装类)
int a = Integer.valueOf("整数的字符串"); 【把字符串转为包装类】
2、数据类型的最大最小值
Integer.MAX_VALUE和Integer.MIN_VALUE 【返回对应类型的最大/小常量值】
3、字符转大小写
Character.toUpperCase('x'); 【字符转大写】
Character.toLowerCase('X'); 【字符转小写】4、整数转进制
Integer.toBinaryString(int i) 【整数转二进制】
Integer.toHexString(int i) 【整数转十六进制】
Integer.toOctalString(int i) 【整数转八进制】compareTo(String)和compareToIgnoreCase(String)方法 【对两个字符串进行比较】
接口Comparable,Comparator
int compareTo(Object obj); 【根据对象属性的值按自然排序】
第一步:哪个类的对象要比较大小,哪个类就实现java.lang. Comparable接口,并重写方法
第二步:对象比较大小时,通过对象调用compareTo方法,根据方法的返回值决定谁大谁小。
接口规定:返回值大于0调用对象大于指定对象,小于0就小于指定对象,等于0就两个对象值相等
(java.util.Arrays数组工具类的public static void sort(Object[] a)就是这么实现的)
int compare(Object o1,Object o2); 【根据对象属性的值按定制排序】
第一步:编写一个类,我们称之为比较器类型,实现java.util. Comparator接口,并重写方法
第二步:比较大小时,通过比较器类型的对象调用compare()方法,将要比较大小的两个对象作为compare方法的实参传入,根据方法的返回值决定谁大谁小。
o1对象大于o2返回正整数
o1对象小于o2返回负整数
o1对象等于o2返回零
(java.util.Arrays数组工具类的public static <T> void sort(T[] a, Comparator<? super T> c)就是这做的)
java.lang.Cloneable接口,和Object类配合使用 【用于复制对象】
类 Arrays
全部为静态方法
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。而且如下每一个方法都有各种重载形式,以下只
列出int[]类型的,其他类型的数组类推。其可按照参数类型按升序排序,还可指定范围按升序进行排序。
static int binarySearch(int[] a, int key) 【要求数组有序,在数组中查找key是否存在,如果存在返回第一次找到的下标,不存在返回负数】
static int[] copyOf(int[] original, int newLength) 【根据original原数组复制一个长度为newLength的新数组,并返回新数组】
static int[] copyOfRange(int[] original, int from, int to) 【复制original原数组的[from,to)构成新数组,并返回新数组】
static boolean equals(int[] a, int[] a2) 【比较两个数组的长度、元素是否完全相同】
static void fill(int[] a, int val) 【用val填充整个a数组】
static void fill(int[] a, int fromIndex, int toIndex, int val) 【将a数组[fromIndex,toIndex)部分填充为val】
static void sort(int[] a) 【将a数组按照从小到大进行排序】
static void sort(int[] a, int fromIndex, int toIndex) 【将a数组的[fromIndex, toIndex)部分按照升序排列】
static String toString(int[] a) 【把a数组的元素,拼接为一个字符串,形式为:[元素1,元素2,元素3。。。]】
Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER); 【忽略大小写排序】
Arrays.sort(strArray, Collections.reverseOrder()); 【反向排序】
Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER); 【忽略大小写反向排序】
sort(T[] a, Comparator<? super T> c)
【根据指定比较器产生的顺序对指定对象数组进行排序。(同上面接口配合使用)】
Thread类
public String getName() 【获取当前线程名称】
public final int getPriority() 【返回线程优先级】
public final void setPriority(int newPriority) 【改变线程的优先级,最高10级,最低1级,默认5级】
public static void sleep(long millis) : 【使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),期间会一直持有锁对象】。
public static void yield(): 【只是让当前线程暂停一下,随后继续和其他线程竞争】
public static Thread currentThread() 【返回对当前正在执行的线程对象的引用。】
Thread.State getState() 【返回该线程的状态。】
void interrupt() 【中断线程。】
public final boolean isAlive(): 【测试线程是否处于活动状态。如果线程已经启动且尚未终止,则为活动状态。】
void join() : 【等待该线程终止】
boolean isInterrupted() 【测试线程是否已经中断】
void join(long millis) : 【等待该线程终止的时间最长为
millis
毫秒】setDaemon(true) 【方法可将指定线程设置为守护线程。必须在线程启动之前设置】
isDaemon() 【可以判断线程是否是守护线程】
static boolean holdsLock(Object obj) 【当且仅当当前线程在指定的对象上保持监视器锁时,才返回 true】
java.lang.System类
全部为静态方法
static long currentTimeMillis() : 【返回当前系统时间距离1970-1-1 0:0:0的毫秒值】
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) (
srcPos
- 源数组中的起始位置。destPos
- 目标数据中的起始位置,length
-要复制的数组元素的数量)从指定源数组中复制一个数组,复制到指定的数组。常用于数组的插入和删除,可以是同一数组static void exit(int status) : 【退出当前系统,参数0表示正常退出,非零整数异常退出】
static String getProperty(String key): 【获取某个系统属性值,System.getProperties()配合使用,获取系统属性】
static void gc() : 【运行垃圾回收器】
java.lang.Runtime
类它的对象代表当前程序运行的JVM环境。
(1)public long totalMemory(): 【总内存】
(2)public long freeMemory(): 【空闲内存】
(3)public static Runtime getRuntime() 【返回与当前 Java 应用程序相关的运行时对象。】
(4)gc();
Math
全部为静态方法
用于数学运算,其所有方法均为静态方法,并且不会创建对象
public static double abs(double a)
【返回 double 值的绝对值】
public static double ceil(double a)
【返回大于等于参数的最小的整数】
public static double floor(double a) 【返回小于等于参数最大的整数】
public static long round(double a)
: 【返回最接近参数的 long。(相当于四舍五入方法)】public static double pow(double a,double b): 【返回a的b幂次方】
public static double sqrt(double a): 【返回a的平方根】
public static double random(): 【返回[0,1)的随机值】
public static final double PI: 【返回圆周率】
public static double max(double x, double y): 【返回x,y中的最大值】
public static double min(double x, double y): 【返回x,y中的最小值】
BigInteger
java.math包,不可变的任意精度的整数。
BigInteger(String val)
BigInteger add(BigInteger val) 【加】
BigInteger subtract(BigInteger val) 【减】
BigInteger multiply(BigInteger val) 【乘】
BigInteger divide(BigInteger val) 【除】
BigInteger remainder(BigInteger val) 【余】
BigDecimal
不可变的、任意精度的有符号十进制小数。
不可直接用运算符计算,要new对象来表示数据,要通过add,subtract,multiply,divide等方法来进行算术运算,参见API,其中除法运算需要指定类型和精度
RoundingMode枚举类
CEILING :向正无限大方向舍入的舍入模式。
DOWN :向零方向舍入的舍入模式。
FLOOR:向负无限大方向舍入的舍入模式。
HALF_DOWN :向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
HALF_EVEN:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
HALF_UP:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
UNNECESSARY:用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
UP:远离零方向舍入的舍入模式。
Random
非静态方法,需对象调用
java.util.Random,用于产生随机数
boolean nextBoolean(): 【返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。】
void nextBytes(byte[] bytes): 【生成随机字节并将其置于用户提供的 byte 数组中。】
double nextDouble(): 【返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。】
float nextFloat(): 【返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。】
double nextGaussian(): 【返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。】
int nextInt(): 【返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。】
int nextInt(int n): 【返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。】
long nextLong(): 【返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。】
日期时间
java.util.Date
new Date(): 【当前系统时间】
long getTime(): 【返回该日期时间对象距离1970-1-1 0.0.0 0毫秒之间的毫秒值】
new Date(long 毫秒): 【把该毫秒值换算成日期时间对象】
java.util.Calendar
它是抽象类,无法直接创建对象,直接创建子类对象:GregorianCalendar
通过指定时区和语言环境来创建对象,Calendar.getInstance(时区,语言环境),如果没有指定,就根据操作系统默认的时区和语言环境
int get(int field) 【返回给定日历字段的值】
java.util.TimeZone:时区
java.util.Locale:语言环境java.text.DateFormat
抽象类,无法直接创建对象,直接创建它子类的对象:SimpleDateFormat,只支持对Date类型 对象进行格式化
public StringBuffer format(Date date,StringBuffer toAppendTo,FieldPosition pos) 【把日期转为字符串:format(日期)】
将给定的
Date
格式化为日期/时间字符串,并将结果添加到给定的StringBuffer
。public Date parse(String text,ParsePosition pos) 【把字符串转为日期】
SimpleDateFormat用于日期时间的格式化。
java.time包 JDK1.8新增
java.time – 包含值对象的基础包
java.time.chrono – 提供对不同的日历系统的访问。
java.time.format – 格式化和解析时间和日期
java.time.temporal – 包括底层框架和扩展特性
java.time.zone – 包含时区支持的类
本地日期时间:LocalDate、LocalTime、LocalDateTime
static LocalDate now() 【从默认时区的系统时钟获取当前日期】
static LocalDate of(int year, int month, int dayOfMonth) 【从一年,一个月和一天获得一个 LocalDate的实例】
int getMonthValue() 【将月份字段从1到12返回】
Month getMonth() 【使用 Month枚举获取月份字段】
LocalDate withYear(int year) 【返回此日期的副本,并修改年份,同下面2个需重新接收】
LocalDate plusYears(long yearsToAdd) 【返回这个 LocalDate的副本,其中指定的时间段以添加的年数表示】
LocalDate minusYears(long yearsToSubtract) 【返回此 LocalDate的副本,以减去的年份为单位】
boolean isLeapYear() 【根据ISO培训日历系统规则,检查年份是否是闰年】
static LocalDate parse(CharSequence text) 【从一个文本字符串(如 2007-12-03获取一个 LocalDate的实例】
boolean isAfter(ChronoLocalDate other) 【检查此日期是否在指定日期之后】
boolean isBefore(ChronoLocalDate other) 【检查此日期是否在指定日期之前】
boolean isEqual(ChronoLocalDate other) 【检查此日期是否等于指定的日期】
boolean equals(Object obj) 【检查这个日期是否等于另一个日期】
int compareTo(ChronoLocalDate other) 【将此日期与另一个日期进行比较】
Temporal adjustInto(Temporal temporal) 【调整指定的时间对象与此对象的日期相同】
指定时区日期时间:ZonedDateTime
持续日期/时间:Period:用于计算两个“日期”间隔 、和Duration:用于计算两个持续时间
static Duration between(Temporal startInclusive, Temporal endExclusive) 【获取一个 Duration表示两个时间对象之间的持续时间】
static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive) 【获得一个 Period ,由两个日期之间的年数,月份和日期组】
DateTimeFormatter:日期时间格式化,其用法格式与上图SimpleDateFormat标准相同
异常
e.toString(): 【获得异常种类和错误信息】
e.getMessage(): 【获得错误信息】
printStackTrace()
: 【打印异常的跟踪栈信息并输出到控制台。】
Java 类、接口的API的更多相关文章
- Java类/接口的API
本章节收集的类/接口API有: Object类,枚举,包装类,接口Comparable,类Arrays,异常, Object类 public String toString(): [把一个对象的信息用 ...
- 规则引擎集成接口(九)Java类对象
Java类对象 右键点击“对象库” —“添加java类对象”,如下图: 弹出窗体,在文本框中输入类的全名“com.flagleader.test.Test”,选择该类型后确定,如下: 显示如下,勾选上 ...
- 规则引擎集成接口(七)规则引擎调用Java类
规则引擎调用Java类 通过myEclipse编写一个简单工程,其中方法是两数相加等到结果,既结果1=输入值1+输入值2.实现规则调用外部接口的方法有三种. 1:接口实例:在myEclipse中制作一 ...
- java类中定义接口
今天看到一个java类中定义了接口,写个备忘录,记录一下 package com.gxf.test; public class Test_interface { public interface sh ...
- 使用java API查询java类
一.java API的下载地址 前面列举了常用的java类,但只是介绍了功能,具体详细的用法(比如要知道该类的属性和方法)要需要调用java的API(Application Program Inter ...
- Atitit. 衡量项目规模 ----包含的类的数量 .net java类库包含多少类 多少个api方法??
Atitit. 衡量项目规模 ----包含的类的数量 .net java类库包含多少类 多少个api方法?? 1 framework 4.5 (10万个api)1 2 Jdk8 57M1 3 Gi ...
- 要创建一个EJB,必须要至少编写哪些Java类和接口?
要创建一个EJB,必须要至少编写哪些Java类和接口? A. 定义远程(或业务)接口 B. 定义本地接口 C. 定义Bean接口 D. 编写Bean的实现 解答:ABC
- 项目中一个普通的Java类如何获取service接口(一)
在普通的Java类中获取service接口目的是调用接口中的方法,实现数据的持久化等操作: Java类中的获取service接口方法: IfaceDetectService faceDetectSer ...
- 组件接口(API)设计指南[2]-类接口(class interface)
*返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 类接口(class interface) 你能够參考MGTi ...
随机推荐
- oc基本控件
(一)添加UIWindow UIWindow *window1=[[UIWindow alloc] init]; //window.frame=CGRectMake(10, 470, 100, 30) ...
- R语言:绘制知识图谱
知识图谱主要是通过将应用数学,图形学,信息可视化技术,信息科学等学科的理论与方法与计量学引文分析.共现分析等方法结合,利用可视化的图谱形象地展示学科的核心结构.发展历史.前沿领域以及整体知识架构达到多 ...
- 【python3基础】命令行参数及 argparse
目录 命令行参数及 argparse 包 argparse 传递 bool 参数错误做法 argparse 传递 bool 参数正确做法 1 argparse 传递 bool 参数正确做法 2 Ref ...
- Java 数据类型和初始值
Java 基本数据类型 byte.short.int.long.float.double.boolean.char byte 数据类型是8位.有符号的,以二进制补码表示的整数 short 数据类型是 ...
- 暑期集训20190727 水(water)
[题目描述] 有一块矩形土地被划分成n×m个正方形小块.这些小块高低不平,每一小 块都有自己的高度.水流可以由任意一块地流向周围四个方向的四块地中,但 是不能直接流入对角相连的小块中. 一场大雨后,由 ...
- 八、springboot 简单优雅的通过docker-compose 构建
前言 这个项目有一段时间没有更新了,不过我可没有偷懒哟,是偷偷准备了一个大招,现在是时候展示啦哈哈. 我们今天要做的,就是将我们的项目通过docker-compose 构建成镜像运行.为什么要这样做呢 ...
- python之装饰器的概念
装饰器对于程序来说虽然不是必要的,但有时候却可以提高效率,也可以保证程序的安全. 说装饰器之前需要掌握闭包,前面一篇文章已经介绍过,这里不再重复. 那么,装饰器到底是什么东西呢?看下面这个例子 首先定 ...
- 使用FinalShell 安装jdk和tomcat流程(Linux系统是centOS7.5)
本文是作者原创,版权归作者所有.若要转载,请注明出处 我今天刚刚买了一个一年的百度云服务器,85元,还是很便宜的,正好用来练练linux,至于为什么使用FinalShell 而不是xshell,因为F ...
- P2115 [USACO14MAR]破坏(二分答案)
给定一串数,问删除中间一段,剩下的平均数最小是多少: 不容易想到这是个二分. $solution:$ 来手玩一点式子: 首先很容易想到一个前缀和$sum_i $表示i到1的前缀和,这样就能很容易地O( ...
- C语言中的可变参数-printf的实现原理
C语言中的可变参数-printf的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出 ...