java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的。
一、java.lang包下的API
Java常用基础包,在开发中会自动导入到代码环境中,不需要import。
1.基本数据类型/包装类
(1)基本数据类型:byte、short、int、long、float、double、char、boolean
(2)包装类:
- Byte:–提供了将字节数据转换为其他类型的方法,从Number抽象类继承过来.decode:将各种进制的数据内容的字符串,转换为十进制标识的字节类型,数字进制的标识符:无标识符:按十进制转换;ox、OX、#:按十六进制转换;o:按八进制转换.
- Short、Integer –将short、Integer装换为其数据类型的方法,从Number抽象类继承过来。decode与Byte类中的decode方法一样可进行不同进制的装换。parseShort、parseInt、parseByte一样,可以进行不同的进制装换值。
注意:Integer十进制转其他进制的方法:toBinaryString()、toHexString()、toOctalString()。
- Float、Double –isInfinite():用于判断数字是否有趋近无穷大,无法完整描述的情况。isNaN():判断浮点数据是否为有效数据(浮点类型参与运算后用于判断是否有效)
注:valueOf、parseXXX方法可以将字符串形式的值装换为数字。
(3)包装类与基本数据类型之间可以实现数据类型的自动转换,即装箱和拆箱。
装箱:自动将基本数据类型转换为其对应的包装类.
拆箱:自动将包装类型转换为基本数据类型.
2.数学运算类:Math;其重要方法有:
abs() :获取绝对值函数.
acos()、asin():反余弦、反正弦函数(以弧度为参数值PI结合运算).
cbrt():立方根函数.
cos()、sin():三角余弦、三角正弦函数(以弧度为参数值PI结合运算).
max()、min():获取两个数值中的最大值或最小值.
log()、log10():对数.
random():获取随机数.
round():四舍五入(获得整形值).
floor():得到小于该数的最小整数.
ceil():得到大于该数的最大整数.
sqrt():平方根.
方法:
startsWith():字符串是否由指定字符开头.
endsWith():字符串是否由指定字符结尾.
indexOf():返回子串在父串中第一次出现的下标(从左起).
lastIndexOf():返回子串在父串最后一次出现的下标(从右起).
split():按特殊字符拆分字符内容
replace():用新字符串内容,替换父串中原有的字符串内容.
matches():字符验证方法。
正则表达式:由一组通用的特殊字符所组成的一套字符串内容验证规则,String通过matchs()方法来使用正则表达式验证字符串内容是否合要求.
语法-边界匹配器:
^:行的开头,代表一个正则表达式的开始.
$:行的结尾,代表一个正则表达式的结束.
\b:标识某一个单词的开头或结尾.
字符:
[abc]:a或b或c的任意一个.
[^abc]:除a、b、c以外的任意字符.
[a-zA-Z]:所有字母(大小都包括).
[a-d[m-p]]:a到d或m到p([m-p]将该内容作为整体)
[a-z&&[def]]:a-z和def两个表达式都满足.
[a-z&&[^bc]]、[a-z&&[^m-p]]
[0-9]
预定义字符:
.:代表任意字符.
\d:字符内容只能是[0-9]的数字.
\s:空白字符.
\w:所有字符大小写、下划线、数字
反向字符:\D、\S、\W
数量词:?:一次或一次也没有.
*:零次或多次.
+:一次或多次.
{n}:n代表一定要出现的次数
{n,m}:n<=出现次数<=m.
拓展:
零宽断言\捕获-是使用正则表达式来获取字符串中对应内容的所在位置.(不能结合String的matchs方法),而应该结合String的replaceAll、replaceFirst方法使用,用来找到替换需要替换的内容)。语法:
(?=exp):若字符串中有内容的结尾与exp匹配,则满足该断言.
(?<=exp):若字符串中的内容的开头与exp匹配,则满足该断言.
(?!=exp):若字符中的内容的结尾与exp不匹配,则满足该断言.
(?<!exp):若字符串的内容的开头与exp不匹配,则满足该断言.
(2)StringBuffer:对于内容变动较大的字符串内容处理能力较好(线程安全)
常用方法:append()、delete()、insert()
与String的区别:String类,在有新内容追加时,是结合原有字符串内容创建新的字符串对象(性能较低)
(3)StringBuilder:对于内容变动较大的的字符串内容处理能力较好(线程不安全 JDK1.5)
常用方法:append()、delete()、insert()
注意:StringBuffer和StringBuilder为可变字符串类型:其字符内容可以灵活变动(追加、删除、插入)
(4) 其他程序的调用类:
Runtime:
作用:获取java虚拟机的运行信息(可使用的CPU数量、所分配的内存大小、空闲内存).
特点:一个虚拟机环境内有且仅有一个Runtime对象.
方法:
static getRuntime():获取虚拟机对应的运行时信息.
static exec(String):启动子进程.
Process:用于描述被JVM启动的一个子进程信息,可以通过Process让java代码与子进程通信.
二、java.util包下的API
1.日期或时间类型:
(1)Date:java平台用于描述时间信息(包括用于精确描述年、月、日、小时、分钟、毫秒信息)的基类;常用方法:
after\before:日期比较方法.
getTime():获取日期信息的long格式值.
setTime(long):根据日期的long值,重新设置日期的时间点.
(2)Calendar:基于通用日历规则,提供了日期运算方法:
set(int,int):向对应的日期级别设置(第一个参数用于日期级别).
get(int):通过日期级别常量,获取当前日期的相关信息.
getDisplayName(int,int,locale):按指定格式和区域语言习惯,来返回日期的描述内容(中文只对月份、星期有效).
getFirstDayOfWeek():返回当前日期对象一周的第一天是星期几(默认1==星期天).
static getInstance():构造日历对象实例.
getTime():将日历对象转换成Date类型.
setTime():将date类型转换为日历类型.
getTimeInMillis():将日历类型转换了long格式的数据.
setTimeInMillis(long):将long格式的日期类型转换成日历类型.
add(int,int):可以在指定的日期级别上,对日期信息进行向前或者向后滚动(第二个参数正数向后增长,负数向前增长)
数据结构的集合框架
集合对象:弥补传统的数组在批量数据存储中和访问上的不足,提供一组基于经典数据结构,并提供了对应操作方法的API来满足编程开发中对批量数据的操作要求.
(1)Iterable(接口):JDK1.5以后加入的API,为集合框架满足foreach语句提供类型的定义.
方法:iterator()– 基于集合内容,生成迭代器(可以提供方法依次访问集合中的对象).
(2)Collection(接口):JDK平台上,所有集合框架的根接口,是用于存储多个对象(数据)的集合类型,数据可以是任何合法类型,可以有各种存储验证(是否为空,是否重复,是否有序);方法:
add(Objectobj):向集合追加新的对象
addAll(Collection colletion):将另一个集合的内容,追加到当前集合内.
contains(Object c):判断对象是否为集合的成员.
containsAll(Collections c):判断两个集合是否存在包含情况.
Iterator():将集合内的数据转换为迭代器的格式来存储,迭代器便于按顺序访问集合内的元素.
retainAll(Collection c):留下两个集合都包含的元素.
size():集合中元素的个数.
toArray():将集合对象的内容装换为对象数组.
(3)List:有序的集合
特点:通常允许重复的元素,允许null元素,有序,对应元素都有下标来标识,没有长度限制,可以自动的根据需要改变长度.
. 方法:get(intindex):通过下标获取集合列表中的某一个元素.
set(int index,E element):向列表中的指定项中设置元素(若原下标位置有值,则会替换).
subList(int fromIndex,inttoIndex):截取集合列表中的一部分生成新的列表对象.
实现类:
- ArrayList
特点:底层基于数组来实现列表的功能,内部用于存储数据的结构是一个Object[](Object[]数组的默认大小为10)。
建议:其ArrayList的初始化大小,尽可能根据实际操作数据的大小来设定(避免因数组增长导致效率低下的问题).不善于对内容变动较大的集合数据提供存储。
- LinkedList
特点:底层基于链表的结构来实现存储功能.(链表是非常灵活的顺序存储结构,基于指针,将数据相互串联起来)。
建议:在数据经常需要进行修改的情况下使用.若只需要对数据进行查询、获取等操作,则效率比不上ArrayList。
- Vector
特点:是线程安全的API(让多个同时执行线程有序的访问Vector中的数据,但会消耗相对应的内存)。
(4)Set:不包含重复元素的集合
特点:不允许有重复元素,最多包含一个null元素,不一定是有序存储。
方法:Collection接口上定义的方法、add()、addAll()、iterator()、remove()
实现类:
- HashSet – 实现基于Hash表来维护数据,不保证数据的顺序不变,但可以保证数据的唯一性。(保存数据:通过Hash表来保存数据,但不会保存重复的数据)
- TreeSet –按照二叉树的结果来存放数据,保证数据的顺序;采用红黑树(二叉树):小的值放在左节点,大的值放在右节点.获取数据时,采用中序访问节点,将数据内容按大小排列比大小:会使用对象的compareTo()方法比较两个对象的大小由TreeSet保存的对象,最好能提供对Compareble接口的实现,并给出compareTo方法的实现。
- LinkedHashSet
大数据量的集合操作上不建议使用。
(5)Iterator :将数据有序的组织在一起,并提供按序访问的方法:
hasNext():判断迭代器是否还有遍历到的元素
next():可以得到向下遍历的对象.
(6)Map :基于键-值映射的关系来搭建存储结构,在整个结构中使用key值来唯一标识对象.(在JDK1.2之后出现用于替换原有API中的Dictionary类的作用)。常用方法: put(key,value)
get(key)
remove()
values():将结构中存储的所有值都以对象的形式返回
keySet():将结构中的所有key值,以set结构返回.
实现类:
HashMap
TreeMap: –底层基于二叉树结构来存储数据,会根据key来作为二叉树的节点关键属性来进行排序操作,按key值的从小到大进行排列
(7)Dictionary –也是基于键-值结构,但已经过期。
实现类:
HashTable:基于哈希表实现键值对应,是一个线程安全的API。
Properties:提供一个属性信息的键值对存储结果,可以与*.properties文件使用(key:属性名;value:属性值).
(8)Collections:定义了多种操作集合对象的方法(查找、插入、排序等方法)
sort()、binarySearch()、copy()、max()、min()、reverse()
这个包下的api即java输入输出操作API,什么是
输入输出操作?即向程序输入信息,向程序外部输出信息,数据被输入或者是输出的基础单位是字节byte,输入输出流按流的功能分可分为:
低级流(节点流):自己具有流的写入或者读取能力的流.
高级流(功能流):基于低级流的功能,实现流操作功能的扩张.
1.字节流
(1)InputStream(输入流) :表示字节输入流的所有类的超类,常用方法有:
available() :获取总字节数,获取缓存区中的字节个数
close():负责释放IO资源,关闭流操作.
mark():在输入输出流的字节位置上设标记,为后面reset反复读取该段字节做准备.
reset():将流的操作重新定位
markSupported():用于判断mark方法或reset方法是否可用.
int read():用于读取一个字节信息:返回值是读取到的字节,若读到文件末尾,则返回-1.
int read(byte[] b):将字节读入到byte[]数组中:返回值是读取到的字节数,若读到文件末尾,则返回-1.(将字节读取到byte[]数组中第off位开始之后的位置,读取长度为len个字节)
(2)OutputStream:表示输出字节流的所有类的超类,常用方法有:
close():关闭流
flush():将缓存中的字节,清空输出.
write(byte[] b):将字节数组中的内容输出
write(int b):将单个字节输出.
write(byte[] b,intoff,int len):将字节数组中从off开始的信息输出,共输出len个字节.
(3)FileInputStream extends InputStream --(文件输入流)
(4)FileOutputStreamextends OutputStream --(文件输出流),构造方法:FileOutputStream(Stringname,boolean append),其中append为ture时:追加内容到文件尾部.
(5)FilterInputStream:输入过滤流,负责在其他流基础上扩展新的功能
(6)FilterOutputStream:输出过滤流,负责在其他基础上扩展新的功能.
(7)BufferedInputStream:为流操作提供字节缓存,减少直接申请的IO读取的次数;实现原理是在内存中创建了字节数组,缓存字节信息.
(8)BufferedOutputStream :为流操作提供字节缓存,减少直接申请IO写出的次数.
(9)DataInputStream:以java基本数据类型的格式读取信息.
(10)DataOutputStream :以java基本数据类型的格式输出信息.
(11)ObectInputStream:对象流输入,可以将对象信息整体读入.(注意:对象必须实现java.io.Serializable可序列化)
(12)ObjectOutputStream:对象流输出,可以将对象信息整体输出(注意:对象必须实现java.io.Serializable可序列化).
注意:对象流使用的场景是大型数据的缓存,缓存一般会放在内存中。把数据量较大,且交互次数较低的数据放到文件中保存,再从文件中将数据还原内存;或者放在分布式系统(通过网络通信);如:发送远程调用的请求信息,远程调用的处理结果.
ZipOutputStream:基于zip格式生成压缩文件,方法:putNextEntry(),closeEntry()
ZipInputStream:读取ZIP文件内容.可以理解wie解压缩.
ZipEntry:在压缩内容中代表一项压缩条目(压缩条目是一个独立的信息存储单元,一般用于将某一个文件的内容单独存储起来).
2.字符流
(1)Reader:表示字符输入流的所有类的超类,常用方法有:read()、close()。
(2)Writer:表示字符输出流的所有类的超类,常用方法有:write()、flush()、close()。
(3)BufferedReader/BufferedWriter:为流操作提供字符缓存,减少直接申请的IO读取/写入的次数。
拓展:File :系统上一个文件资源,包括文件(*.txt、*.exe、*.doc等)和文件夹(用于组织和存放其他文件信息);作用:
- 获取文件夹的子文件信息—listFile()
- 获取文件的属性,如getName() –获取文件的名字.
- 判断是否为文件目录—isDirectory()返回结果是ture为目录,false为其他内容.
- 判断是否为文件—isFile()返回结果是ture为文件,false为其他内容.还可以修改文件和删除文件.
拓展:设计模式,是指在编程的开发过程中,被反复论证所总结出来的编程经验.这些经验被认定为解决具体问题的最佳方案.
eg:装饰模式—面向对象的常用模式之一.符合开关原则:原有代码不发生任何改变,而对原有代码进行扩展,结构:
目标类(FileInputStream、FileOutputStream等)。
装饰类(BufferdInputStream、BufferedOutStream等),与目标类都有相同的父类或接口。
用途:改进原有API的功能—修改原有的方法,丰富原有API的实现—能实现的功能更多。
最纯的装饰模式:目标类和装饰类从结构上一模一样(BufferedInputStream\BufferedOutputStream)。
装饰的”另类”:对类的结构做出调整,如ObjectInputStream\ObjectOutputStream(readObject()\writeObject() )和DataInputStream\DataOutputStream( readXXX()\writeXXX() )。
java基础3.0:Java常用API的更多相关文章
- Java基础第四天--常用API
常用API 基本类型包装类概述 将基本数据类型封装成对象的好处可以在对象中定义更多的功能方法操作该数据 常用的操作之一:用于基本数据类型与字符串之间的转换 基本数据类型 包装类 byte Byte s ...
- java基础(6)常用API
1 Object类 `java.lang.Object`类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特 ...
- Java基础学习笔记十三 常用API之正则表达式、Date、DateFormat、Calendar
正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex).正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字符串.在 ...
- 7天学完Java基础之0/7
笔记-7天学完Java基础之0/7 1.常用命令提示符(cmd) 启动:Win+R,输入cmd
- JAVA基础(二)—— 常用的类与方法
JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...
- JAVA基础语法:java编程规范和常用数据类型(转载)
JAVA基础语法:java编程规范和常用数据类型 摘要 本文主要介绍了最基本的java程序规则,和常用数据类型,其中侧重说了数组的一些操作. 面向java编程 java是纯面向对象语言,所有的程序都要 ...
- 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...
- Java基础16:Java多线程基础最全总结
Java基础16:Java多线程基础最全总结 Java中的线程 Java之父对线程的定义是: 线程是一个独立执行的调用序列,同一个进程的线程在同一时刻共享一些系统资源(比如文件句柄等)也能访问同一个进 ...
- java基础学习总结——java环境变量配置(转)
只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...
- 060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序
060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ...
随机推荐
- 在虚拟机中安装CentOS7
在虚拟机中安装CentOS7 听语音 | 浏览:17352 | 更新:2014-10-31 12:14 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅最快的到家服务,最优质的电脑清灰! 百 ...
- SQL Server日期与字符串之间的转换
本文导读:在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.下面主要就介绍一下SQL Serv ...
- git push上传代码到gitlab上,报错401或403
之前部署的gitlab代码托管平台,采用ssh方式连接gitlab,在客户机上产生公钥上传到gitlab的SSH-Keys里,则git clone下载和git push上传都没问题,这种方式很安全. ...
- Fastlane为iOS带来持续部署
Fastlane是一组工具套件,旨在实现iOS应用发布流程的自动化,并且提供一个运行良好的持续部署流程,只需要运行一个简单的命令就可以触发这个流程. Fastlane是一个ruby脚本集合,其中囊括了 ...
- Java 日志性能优化
1. 选择合理的日志级别.合理控制日志内容 2. 控制日志的输出内容和格式 logger.debug("Entry number: " + i + " is " ...
- Java核心技术点之集合框架
1. 概述 Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容 ...
- XAMPP部署
1,直接从官网上下载,然后安装即可 2,出现的问题: a,启动Apache服务器的时候,出现打开端口失败,原因80号端口已被占用,解决方案,更改config文件,将端口设置为8090 b,给phpmy ...
- 64位MicrosoftOfficeWord加载EndnoteX7
来源:http://jingyan.baidu.com/article/fcb5aff7a08036edaa4a71d0.html Win10 64bit 安装 Office2016 64bit 加载 ...
- shenben语录
1.别让别人的一句话将你击垮! 2.任何人都不能替你做决定,除了你自己! 3.对于省选: 想去就去,文化课什么的都不是问题. 如果不去,二十年后的自己一定会后悔的.
- rpc框架之 thrift 学习 2 - 基本概念
thrift的基本构架: 上图源自:http://jnb.ociweb.com/jnb/jnbJun2009.html 底层Underlying I/O以上的部分,都是由thrift编译器生成的代码, ...