技术干货!贼好用的 Java 基础类库,半小时 Github 星标数已超 20K
今日分享开始啦,请大家多多指教~
一、Java 基础类库介绍
Java 提供了用于语言开发的类库,称为 Java 基础类库(JFC,Java Foundational Class) ,也称应用程序编程接口(API,Application Programming Interface),分别放在不同的包中。
Java 提供的包主要有:java.lang,java.io,java.math,java.util,java.applet,java.awt,java.awt.datatransfer,java.awt.event,java.awt.image,java.beans,java.net,java.rmi,java.security,java.sql 等。
二、语言包(java.lang)
语言包 java.lang 提供了 Java 语言最基础的类,包括
Object 类
数据类型包裹类(the Data Type Wrapper)
字符串类(String、StringBuffer)
数学类(Math)
系统和运行时类(System、Runtime)
类操作类(Class,ClassLoader)
(1)数据类型包裹类
对应 Java 的每一个基本数据类型(primitive data type)都有一个数据包裹类。每个包裹类都只有一个类型为对应的基本数据类型的属性域。
1.生成数据类型包裹类对象的方法
从基本数据类型的变量或常量生成包裹类对象
double x = 1.2;
Double a = new Double(x);
Double b = new Double(-5.25);
从字符串生成包裹类对象
Double c = new Double("-2.34");
Integer i = new Integer("1234");
已知字符串,可使用 valueOf 方法将其转换成包裹类对象:
Integer.valueOf("125"); Double.valueOf("5.15");
自动装箱
Integer i =3;
Double d = -5.25
2.得到基本数据类型数据的方法
每一个包裹类都提供相应的方法将包裹类对象转换回基本数据类型的数据
anIntegerObject.intValue() // 返回 int 类
aCharacterObject.charValue() // 返回 char 类型的数据
Integer、Float、Double、Long、Byte 及 Short 类提供了特殊的方法能够将字符串类型的对象直接转换成对应的 int、float、double、long、byte 或 short 类型的数据。
Integer.parseInt(“234”) // 返回 int 类型的数据
Float.parseFloat(“234.78”) // 返回 float 类型的数据
自动拆箱
Integer a = new Integer(3);
int i = a;
3.装箱与拆箱
装箱(boxing):把基本类型数据包装成对象,如:
Integer obj = new Integer(8);
拆箱(unboxing):把对象内部基本数据提取出来。要先装后拆,如:
Boolean objb = new Boolean(false); //装箱
boolean b = objb.booleanValue(); //拆箱
装箱的两种做法:
(1)调用数据封装类构造方法,如:
Integer obj = new Integer(i)//设 int i = 8
(2)(应优先采用)调用封装类数据转对象的静态方法,如:
Integer obj = Integer.valueOf(i)
数据封装类还提供一些静态常量字段,如:
Integer.MAX_VALUE:int 型最大值 2147483647。
Integer.MIN_VALUE:int 型最小值-2147483648。
数据封装类还提供与 String 类型转换的方法。如 Integer 类方法:
toString(int i);
parseInt(String s);
基本数据和对应封装类对象之间的自动转换。如:
Integer obj = 8; //自动装箱,
相当于
Integer obj = new Integer(8);
自动拆箱例:
int i = obj; //自动拆箱,拆箱后再赋值
int sum = obj + obj; //自动拆箱,拆箱后再进行加法运算
Integer obj2 = obj + obj; //自动拆箱后相加,再自动装箱为对象
相当于下面拆箱、装箱语句:
int i = obj.intValue();
int sum = obj.intValue() + obj.intValue();
Integer obj2 = Integer.valueOf(obj.intValue() + obj.intValue());
正是有了自动装箱操作,才能使默认元素类型为 Object 的 ArrayList 集可以直接添加 char、int 和 double 等基本类型数据。
注:自动装箱和拆箱会降低程序运行效率,要慎用。
(2)常量字符串类 String
该类字符串对象的值和长度都不变化,称为常量字符串
生成 String 类对象的方法
String aString;
aString = “This is a string”
调用构造方法生成字符串对象
new String();
new String(String value);
new String(char[] value);
new String(char[] value, int offset, int count);
new String(StringBuffer buffer);
String 类的常用方法:
(3)变量字符串类 StringBuffer
其对象是可以修改的字符串
字符的个数称为对象的长度(length)
分配的存储空间称为对象的容量(capacity)
与 String 类的对象相比,执行效率要低一些
该类的方法不能被用于 String 类的对象
生成 StringBuffer 类的对象:
生成容量为 16 的空字符串对象
new StringBuffer();
生成容量为 size 的空字符串对象
new StringBuffer(int size);
生成 aString 的一个备份,容量为其长度 +16
new StringBuffer(String aString);
StringBuffer 类的常用方法:
例:已知一个字符串,返回将字符串中的非字母字符都删除后的字符串。
运行结果
HelloMyNameisMarkIthinkyouaremyclassmate
(4)数学类(Math)
(Java 中三种计算随机数)
提供一组常量和数学函数,例如
E 和 PI 常数
求绝对值的 abs 方法
计算三角函数的 sin 方法和 cos 方法
求最小值、最大值的 min 方法和 max 方法
求随机数的 random 方法等
其中所有的变量和方法都是静态的(static)
是终结类(final),不能从中派生其他的新类
Java Math.random()函数
调用这个 Math.random()函数能够返回带正号的 double 值,该值大于等于 0.0 且小于 1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
java.util.Random 类
Random 类的两种构造方法:
Random():创建一个新的随机数生成器。
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
可以在构造 Random 对象的时候指定种子,如:
Random r1 = new Random(20);
或者默认当前系统时间的毫秒数作为种子数:
Random r1 = new Random();
需要说明的是:在创建一个 Random 对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。
获取系统时间 System.currentTimeMillis()
(5)系统和运行时类(System、Runtime)
System 类
访问系统资源
arraycopy() 复制一个数组
exit() 结束当前运行的程序
currentTimeMillis() 获得系统当前日期和时间等
访问标准输入输出流
System.in 标准输入,表示键盘
System.out 标准输出,表示显示器
Runtime 类
可直接访问运行时资源
totalMemory() 返回系统内存总量
freeMemory() 返回内存的剩余空间
(6)类操作类(Class、ClassLoader)
Class 类
提供运行时信息,如名字、类型以及父类
Object 类中的 getClass 方法返回当前对象所在的类,返回类型是 Class
它的 getName 方法返回一个类的名称,返回值是 String
它的 getSuperclass 方法可以获得当前对象的父类
ClassLoader 类
提供把类装入运行时环境的方法
Class 类应用举例
运行结果
class BankAccount
BankAccount
三、实用包(java.util)
实用包(java.util)——实现各种不同实用功能
日期类:描述日期和时间
Date
Calendar
GregorianCalendar
集合类
Collection(无序集合)、Set(不重复集合)、List(有序不重复集合)、Enumeration(枚举)、LinkedList(链表)、Vector(向量)、Stack(栈)、Hashtable(散列表)、TreeSet(树)
StringTokenizer 类
允许以某种分隔标准将字符串分隔成单独的子字符串
(1)Date 类
构造方法
Date() ;// 获得系统当前日期和时间值。
Date(long date);// 以 date 创建日期对象,date 表示从 GMT(格林威治)时间 1970-1-1 00:00:00 开始至某时刻的毫秒数
常用方法
getTime()
返回一个长整型表示时间,单位为毫秒(millisecond)
after(Date d)
返回接收者表示的日期是否在给定的日期之后
before(Date d)
(2)Calendar 类
一个抽象的基础类,支持将 Date 对象转换成一系列单个的日期整型数据集,如 YEAR、MONTH、DAY、HOUR 等常量。
它派生的 GregorianCalendar 类实现标准的 Gregorian 日历。
由于 Calendar 是抽象类,不能用 new 方法生成 Calendar 的实例对象,可以使用 getInstance()方法创建一个 GregorianCalendar 类的对象。
Calendar 类中声明的常量:
Calendar.SUNDAY
Calendar.MONDAY
Calendar.TUESDAY
Calendar.SATURDAY
Calendar.JANUARY
Calendar.FEBRUARY
Calendar.AM
…
Calendar 类中的方法
isLeapYear(int year) 返回给定的年份是否是闰年
get(int field) 取得特定 Calendar 对象的信息
set(int field, int value) 给日期域设定特定的值
aCalendar.set(Calendar.MONTH, Calendar.JANUARY);
aCalendar.set(1999, Calendar.AUGUST, 15);
(3)GregorianCalendar 类
用于查询及操作日期
构造方法
getTime()方法 返回 Date 对象,显示日历
(4)StringTokenizer 类
允许以某种分隔标准将字符串分隔成单独的子字符串,如可以将单词从语句中分离出来
术语分隔符(delimeter)是指用于分隔单词(也称为标记,tokens)的字符
常用方法
生成 StringTokenizer 类的对象的方法
new StringTokenizer(String aString);
指定了将被处理的字符串,没有指定分隔符(delimeter),这种情况下默认的分隔符,java 默认的分隔符是空格("")、制表符(\t)、换行符(\n)、回车符(\r)。
new StringTokenizer(String aString, String delimiters);
除了指定将被处理的字符串,还指定了分隔符字符串,如分隔符字符串可以为“,:;|_()”
new StringTokenizer(String aString, String delimiters, boolean returnDelimiters);
第三个参数如果为 true,则分隔符本身也作为标记返回
四、文本包(java.text)
文本包(java.text)提供各种文本或日期格式,包含:
Format 类(抽象类)
DateFormat 类(抽象类)
DateFormat df = DateFormat.getDatelnstance();
//得到 SimpleDateFormat 对象
SimpleDateFormat 类(是 DateFormat 的子类)
使用已定义的格式对日期对象进行格式化
构造方法 以一指定格式的字符串作为参数
new java.text.SimpleDateFormat(formatString);
format(Date d) 将此种格式应用于给定的日期
aSimpleDateFormat.format(aDate);
今日份分享已结束,请大家多多包涵和指点!
评论