Java
失去的已不再来
问月晚安
午夜惊魂之我想做全栈
展开
-
Java虚拟机的内存分配
一原创 2018-12-05 18:48:03 · 147 阅读 · 0 评论 -
Java类加载过程简要介绍
这里就作者所学及其理解对《深入理解Java虚拟机》这本书的内容发表看法,如有错误欢迎指出。 在说类加载的时候我们先来看看一个类的生命周期,如图示:类加载在这里包括了加载、验证、准备、解析、初始化五个部分,当一个类要加载进内存时虚拟机会依次执行这五个过程(解析过程可能会发生在初始化以后)。 一、加载阶段这个过程需要完成三件事情:1.通过一个类的全限定名来获取定义此类的...原创 2018-12-06 16:22:44 · 389 阅读 · 2 评论 -
Java实用文件操作
文件过滤器接口FileFilter/** FileFilter只有一个抽象方法,* 是一个函数式接口,可以使用lambda表达式。* 该方法会过滤掉file目录中不包含we(不区分大小写)的文件和文件夹* */File[] files = file.listFiles(p->{ return p.getName().toUpperCase().contain...原创 2018-12-15 16:12:04 · 118 阅读 · 0 评论 -
Java克隆与对象序列化
Object类的clone()方法浅克隆//浅克隆/** 1.Object类中的clone()方法为protected的* 2.需要实现克隆功能的类必须实现Cloneable接口* */class Kid{ public int age = 10;}class Person implements Cloneable{ public int age = 10...原创 2018-12-15 14:06:46 · 230 阅读 · 0 评论 -
利用WatchService实现文件监视
Java.nio.file WatchService类图FileSystem:当前系统默认的文件系统。 WatchService:文件系统监视服务的接口类,它的具体实现由监视服务提供者负责加载(不同的操作系统实现不同的加载类,如windows的WindowsWatchService类)。 Watchable:实现了Watchable接口的对象才能注册监视服务WatchService,...原创 2018-12-13 22:27:08 · 440 阅读 · 0 评论 -
重新抛出异常与异常链
重新抛出异常如果我们直接重新抛出异常,那么当我们后续捕获此异常时并不会产生重新抛出地的信息。但是当我们需要重新抛出一个异常时我们显然希望能获得重新抛出点的信息,这时我们需要使用fillInStackTrace()方法,它通过把当前异常调用栈信息填入原来的异常对象而返回一个Throwable,所以我们需要将它强制转型为Exception再将其抛出。import java.io.*;c...原创 2018-12-11 17:17:13 · 275 阅读 · 0 评论 -
Java I/O流典型使用案例
管道流(多线程程序)/** 创建数据输出线程* */class ThreadOut extends Thread{ private PipedInputStream in; private PipedOutputStream out; public ThreadOut(PipedInputStream in,PipedOutputStream out){ ...原创 2018-12-14 19:00:00 · 299 阅读 · 0 评论 -
Java类型信息、反射与动态代理
类型信息一个类的类型信息(class信息,静态域、静态方法和各种字面量常量)在被类加载机制加载进Java虚拟机后存储在方法区中,平常我们通过类实例化的引用对类信息进行访问,这实际上是对方法区中类型信息的间接访问。Exampleone one = new Exampleone();这段代码会在栈中创建Exampleone对象的引用one并指向堆中的Exampleone对象实例信息...原创 2018-12-20 20:37:48 · 121 阅读 · 0 评论 -
Java网络编程
InetAddress类InetAddress类是IP地址封装类,该类并没有公共的构造方法,但是我们可以通过该类的一些静态方法来获取对象实例,然后再通过这些对象实例来对IP地址或主机名进行操作。//InetAddress.getByName(主机名):根据主机名创建InetAddress对象InetAddress address=InetAddress.getByName("www...原创 2019-01-06 18:52:58 · 247 阅读 · 2 评论 -
Java集合框架总结
《Java编程思想》集合框架简化图: Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类(实线表示),对接口的具体实现。 《Java编程思想》...原创 2018-12-16 19:42:14 · 109 阅读 · 0 评论 -
Java I/O流介绍
Java I/O流分为输入流输出流两大部分,任何自InputStream(字节输入流)和Reader(字符输入流)派生而来的类都含有read()基本方法,用来读取单个字节或一组字节数组。任何自OutputStream(字节输出流)和Writer(字符输出流)派生而来的类都含有writer()基本方法,用来写单个字节或一组字节数组。 字节输入输出流字节输入流系列:PipedInp...原创 2018-12-09 20:42:03 · 109 阅读 · 0 评论 -
Java异常处理机制
Java中的异常类都派生自Throwable类,所以发生异常时将产生一个异常对象并将其抛出。这与其他对象的创建一样,使用new在堆上创建异常对象。然后,当前的执行路径被迫终止,并且从当前执行环境弹出异常对象的引用,这时异常处理机制开始运作,他会寻找一个恰当的地方继续执行程序(当前环境或者上一层环境中定义了异常处理的语句,如果没有我们定义相应的异常处理语句,那么抛出的异常会直达main()方法,并...原创 2018-12-10 19:15:24 · 185 阅读 · 0 评论 -
JDBC连接数据库
在Windows操作系统中,Java语言利用JDBC连接数据库有两种办法。一种是直接通过JDBC和数据库官方提供的支持驱动JAR包进行连接;还有一种则是用JDBC桥连接被广泛使用的ODBC,然后在ODBC中配置数据库相关信息进行连接。 什么是JDBC和ODBC?JDBC(Java DataBase Connectivity Java数据库连接)是一种规范化的Java关系数据库API,是...原创 2018-12-09 14:42:16 · 186 阅读 · 0 评论 -
Java 1.8新特性(lambda表达式)
lambda表达式对于Java语言来说是一个重大的变化,对于面向对象编程的Java语言来说它提供了一种倾向于函数式编程的方式。lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。 lambda表达式的形式有参:(参数1,参数2,...,参数n) -> {表达式}无参:() -> {表达式}无参单句表达式:() -> 表达式 ;单参单句表达式...原创 2018-12-08 20:52:12 · 692 阅读 · 0 评论 -
Java中组合、继承与代理之间的关系。
在Java中如何将一个已经定义好的类尽可能多的重复使用是提高开发效率和质量的关键。而下面我们要讲述的三种方式便是涉及到怎样去复用类让代码更优雅。一、组合定义:在新的类中产生现有类的对象。组合的例子其实随处可见,比如说我们在类中定义一个String类型的变量时就使用了组合,因为String本身就是类。public class FuUse { /* * 添加一个S...原创 2018-12-08 19:11:42 · 441 阅读 · 0 评论 -
Java中的内部类
内部类可以将一个类的定义定义在另一个类的定义中,这个类就叫做内部类。让我们看下关于定义一个内部类的简单示例。public class TestOne { /* * 定义一个内部类 * */ public class InnerClass{}}上述代码我们在TestOne类中定义了一个InnerClass内部类。关于使用内部类的好处,我将...原创 2018-12-04 15:20:28 · 99 阅读 · 0 评论 -
Java中的回调函数简要介绍
/** 定义一个类A。* 类A中定义了回调函数callBack()。* */class A{ public void callBack(){ System.out.println("I am a callBack_function"); }}/** 定义一个类B。* 类A中定义了注册函数register(A a)。* */class B{ ...原创 2018-12-01 22:14:34 · 181 阅读 · 0 评论 -
Java中的静态绑定与动态绑定事例
在这个例子中使用Java面向对象中的多态来简单介绍静态绑定和动态绑定的区别。/** 创建一个Father类。* 为了方便获取,成员变量a设置为public的。* */class Father{ public int a = 10; public void saying(){ System.out.println("Father"); }}...原创 2018-12-01 18:21:59 · 1335 阅读 · 0 评论