Java.lang 包装类
Java.lang 包装类
原始数据类型
包装类
byte(字节)
Byte
char(字符)
character
int(整型)
Integer
long(长整型)
Long
float(浮点型)
Float
double(双精度)
Double
boolean(布尔型)
Boolean
short(短整型)
Short
在这八个类名中,除了Integer和Character类以后,其他六个类的类名和基本数据类型一致,只是类名的第一个字母大写
Integerjava.lang 包中的 Integer 类、Long类和Short类都是Number类的子类,他们的区别在于不同子类里面封装着不同的数据类型,比如Integer类包装了一个基本类型int。其包含的方法基本相同。
我们以 Integer 类为例。 Integer 构造方法有两种:
Integer(int value) ,以 int 型变量作为参数创建 Integer 对象。例如 Integer a = new Integer(10);
Integer(String s) , ...
Java 日期和随机数
Java 日期和随机数
这一章节 我们主要学习 java.util 中的 Date 类、Calendar 类,Random 类以及 java.time 包中的 LocalTime 类。
java.util 和 java.time 包ava.util 包提供了一些实用的方法和数据结构。比如日期类 Date,日历类 Calendar 以及随机数类 Random,同时包里还提供了 collection 框架,像堆栈 Stack、向量 Vector、位集合 Bitset 以及哈希表 Hashtable 等表示数据结构的类。而 java.time 包是 java8 新提供的包,里面对时间和日期提供了新的 api,弥补了 java.util 包对日期和时间操作的不足。
DateDate 类表示时间和日期,里面封装了操作日期和时间的方法. Date类经常用来获取系统当前时间。
Date中当前未过时的构造方法:
构造方法
说明
Date()
构造一个Date对象并对其进行初始化以反映当前时间
Date(long date)
构造一个Date对象,并根据相对于GMT1 ...
java 集合框架
java 集合框架集合框架的介绍我们在超市买东西的时候,如果没有购物车是不是会很麻烦呢?Java 中集合类是一种工具类,就是像购物车一样的容器,存储任意数量的具有共同属性的对象。
我们为什么要用集合呢?一个类的内部有许多相同类型的属性,并且他们的作用与意义是一样的,我们最好用一个类似容器的东西去盛放他们,在类的内部就变得井然有序。所以集合便是在类的内部,对数据进行组织的作用。这样我们便可以简单而快速地搜索大量的条目。有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速地插入或者删除有关元素。还有一些集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。
集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大内容:对外的接口、接口的实现和对集合运算的算法。
Collection 接口因为集合框架中的很多类功能是相似的,所以我们用接口来规范类。
Collection接口是java集合框架里的一个根接口。他也是List、Set和Queue 接口的父接口。Collection接口中定义了可 ...
java.io 数据流
Java 数据流接口 DataInput 和 DataOutput,设计了一种较为高级的数据输入输出方式:除了可处理字节和字节数组外,还可以处理 int、float、boolean 等基本数据类型,这些数据在文件中的表示方式和它们在内存中的一样,无须转换,如 read(), readInt(), readByte()…; write(), writeChar(), writeBoolean()… 此外,还可以用 readLine() 方法读取一行信息。
常用方法
方法
返回值
说明
readBoolean()
boolean
readByte()
byte
readShort()
short
readChar()
char
readInt()
int
readLong()
long
readDouble()
double
readFloat()
float
readUnsignedByte()
int
readUnsignedShort()
int
readFully(byte[] b)
void
从输入流中读取一些 ...
java.io 字符流
java.io 字符流字符串基类java.io 包中专门用于字符流处理的类,是以Reader和Writer为基础派生的一系列类
字符串以字符为单位,根据码表映射字符,一次可能读多个字节,只能处理字符类型的数据。
同类InputStream 和 OutputStream一样,Reader 和 Writer 也是抽象类,只提供了一系列用于字符流处理的接口。他们的方法与类InputStream 和 OutputStream类似,只不过其中的参数换成字符或字符数组
Reader 是所有的输入字符流的父类,他是一个抽象类
我们先来看一看基类 Reader 的方法,其用法与作用都与InputStream 和 OutputStream 类似,就不做过多的说明了
方法
返回值
close()
void
mark(int readAheadLimit)
void
markSupported()
boolean
read()
int
rerad(char[] cbuf,int off,int len)
int
ready()
boolean
rese ...
java.io 字节流
java.io 字节流基类 InputStream 和 OutputStream字节流主要操作 byte 类型数据,以 byte 数组为准,java 中每一种字节流的基本功能依赖于基本类 InputStream 和 Outputstream,他们是抽象类,不能直接使用。字节流能处理所有类型的数据(如图片、avi 等)。
InputStreamInputStream 是所有表示字节输入流的基类,继承它的子类要重新定义其中所有定义的抽象方法.InputStream是从装置来源地读取数据的抽象表示,例如System中的标准输入流in对象就是一个InputStream类型的实例。
我们先来看看InputStream类的方法:
方法
说明
read()throws IOException
从输入流中读取数据的下一个字节(抽象方法)
skip(long n) throws IOException
跳过和丢弃此输入流中数据的n个字节
available() throws IOException
返回流中可用字节数
mark(int readlimit) throw ...
Java 文件操作(文件流)
java 文件 (Java io)文件操作java.io 定义的大多数类都是流式操作,但 File 类不是。它直接处理文件和文件系统。File 类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File 对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File 还浏览子目录层次结构。Java 中的目录当成 File 对待,它具有附加的属性——一个可以被 list( ) 方法检测的文件名列表。
先看一看 File 的构造方法:
1234567891011//根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。File(File parent, String child)//通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例File(String pathname)// 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例File(String parent, String child)//通过将给定的 file: URI 转换为一个抽象路径名来创建一个 ...
函数式接口、默认方法和Optional类
函数式接口、默认方法和Optional类函数式接口函数式接口通过一个单一的功能来表现。例如,带有**单个compareTo**方法的比较接口,被用于比较的场合。Java 8 开始定义了大量的函数式接口来广泛地用于lambda表达式。
Java 8 引入的一个核心概念是函数式接口(Functional Interfaces)。通过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行。如果一个接口定义唯一一个抽象方法,那么这个接口就成为函数式接口。同时,引入了一个新的注解:@FunctionalInterface。可以把他它放在一个接口前,表示这个接口是一个函数式接口。这个注解是非必须的,只要接口只包含一个方法的接口,虚拟机会自动判断,不过最好在接口上使用注解 @FunctionalInterface 进行声明。在接口中添加了 @FunctionalInterface 的接口,只允许有一个抽象方法,否则编译器也会报错。引用自IBM - Java 8 新特性概述
相关的接口及描述下面是部分函数式接口的列表
接口
描述
BitConsumer<T,U>
改接 ...
Lambad Streams (流)
Streams (流)Stream 是Java 8中的一个新的抽象层。通过使用Stream,你能以类似于SQL语句的声明式方式处理数据。
例如一个典型的SQL语句能够自动地返回某些信息,而不用在开发者这一端做任何的计算工作。同样,通过使用Java的集合框架,开发者能够利用循环做重复的检查。另外一个关注点是效率,就像多核处理器能够提升效率一样,开发者也可以通过并行化编程来改进工作流程,但是这样很容易出错。
因此,Stream的引入是为了解决上述痛点。开发者可以通行声明式数据处理,以及简单地利用多核处理体系而不用写特定的代码。
说了这么久,Stream究竟是什么呢?Stream代表了来自某个源的对象的序列,这些序列支持聚集操作。下面是Stream的一些特性:
元素序列:Stream以序列的形式提供了特定类型的元素的集合。根据需求,它可以获得和计算元素,但不会储存任何元素。
源:Stream可以将集合、数组和I/O资源作为输入源。
聚集操作:Stream支持诸如filter、map、limit、reduce等的聚集操作。
流水技术:许多Stream操作返回了流本身,故它们的 ...
Java IO 流
Java IO 流在大多数程序中,都需要对输入输出进行处理。例如我们中需要获取用户从键盘上的输入,需要在控制台输出结果等等。除此之外还有从文件中读取数据,向文件中写入数据等等。在 Java 中,我们把这些不同类型的输入输出源抽象地称为 流,也就是 Stream;在里面输入输出的数据则称为数据流(Data Stream),它们通常具有统一的接口。
于是我们得到了数据流的定义:
一个 Java I/O 对象叫做数据流。读取数据到内存的对象叫做输入流,内存写出数据的对象叫做输出流。
针对其面向的不同角度,我们大致可以将流分为下面几种类型:
按照数据流的方向不同分为 输入流 和 _输出流_。这种分类不是绝对的,例如在向一个文件写入数据时,它就是输出流;而在读取数据时,它就是输入流。
按照处理数据的单位不同分为 字节流 和 字符流。
按照功能的不同分为 节点流 和 _处理流_。
需要特别说明,节点流是从特定的数据节点(文件、数据库、内存等)读写数据;处理流是连接在已有的流上,通过对数据的处理为程序提供更多功能。
在 Java 环境中,java.io 包提供了大多数的类和接口来实现输入输出 ...
关于java Calendar Date Math 类的使用
java Calendar、Date、Math 的使用
记录 Calendar 的使用方法
Calendar
这是时间类
在早期的jdk版本中,Date类附有两大功能:
允许用年、月、日、时、分、秒来解释日期
允许对表示日期的字符串进行格式化和句法分析
在JDK1.1中提供了类Calendar来完成第一种功能,类DateFormat来完成第二项功能。DateFormat是java.text包中的一个
类。与Date类中有所不同的是,DateFormat类可以接受用各种语言和不同习惯表示的日期字符串。
但是Calendar 类是一个抽象类,他完成Date类与普通日期表示法之间的转换,而我们更多地是使用Calendar类的子类
GregorianCalendar类。它实现了世界上普遍使用的公历系统。当然我们也可以继承Calendar类,然后自己定义实现日历
方法。
先来看一看GregorianCalendar类的构造函数:
构造方法
说明
GregorianCalendar()
创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行所处的时区、地点的当前时 ...
关于java Collections 类的使用
Java Collections
java.util.Collections 是一个工具类,他包含了大量对集合进行操作的静态方法.
方法名
描述
void sort(List list)
按自然升序排序
void sort(List list,Comparator c)
自定义排序规则排序
void shuffle(List list)
随机排序,用于打乱顺序
void reverse(List list)
反转,将列表元素顺序反转
void swap(List list,int i,int j)
交换处于索引 i 和 j 位置的元素
int binarySearch(List list,Object key)
二分查找,列表必须有序,返回找到的元素索引位置
int max(Collection coll)
查找最大值
int min(Collection coll)
查找最小值
void fill(List list,Object obj)
使用obj填充list所有元素
boolean replaceAll(List list,Ob ...
Lambad 表达式的含义及使用方法、引用
Lambad 表达式的含义及使用方法、引用什么是函数式编程函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程典范,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。
Lambad 表达式Lambad 表达式是在Java 8 中引入的。并且成为了Java 8最大的特点。它使得功能性编程变得非常便利,极大地简化了开发工作。
语法一个Lambad表达式具有下面这样的语法特征。它由三个部分组成;第一部分为一个括号内用都好分割的参数列表,参数即函数式接口里面方法的参数;第二部分为一个箭头符号:->; 第三部分为方法体,可以使表达式和代码块。语法如下
1parameter -> expression body
下面列举了Lambad表达式的几个最重要的特征;
可选的类型声明:你不用去声明参数的类型。编译器可以从参数的值来推断它是什么类型。
可选的参数周围的括号:你 ...
java 正则表达式 (regular)
Java 的 正则表达式使用
正则表达式,又称规则表达式.(英语:Regular Expression ,在代码中常简写 regex 、 regexp 或 RE), 计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
Java 通过 java.util.regex 包提供正则表达式的功能
示例Java 使用正则表达式匹配非常简单,我们以邮箱地址为例
12345678910111213141516import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexDemo { public static void main(String[] args) {// Pattern类 正则表达式的编译表示。 Pattern pattern = Pattern.compile("^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-] ...
java-反射
Java 反射Java 反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用,我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
什么是反射?反射是Java 编程语言的一个腾讯,它提供了在运行时检查和动态调用类、方法、属性的能力。
反射能做什么?反射可以在运行时检查类,接口,方法和变量。还可以实例化对象、调用方法、获取和设置变量值。比如当我们不知道一个类中是否拥有某个方法时,我们就可以使用反射来检查是否拥有这个方法。
反射常用类常用类
Class:Class 类标识正在运行的Java程序中的类和接口
Field: 提供有关类或接口的单个域的信息和动态访问。如数据类型,访问修饰符,域的名称和值
Method :提供有关类或接口上的单个构造函数的信息和访问权限。如访问修饰符,返回类型,名称,参数类型和方法的异常类型。
Constructor :提供有关类的单个构造函数的信息和访问权限。例如构造函数的访问修饰符,名称和参数类型。
Modifier:提供了有关访问修饰符的信息。 ...