Java 基础
文章平均质量分 62
源码下载: https://github.com/nai-chen/JavaBlog
假装你是大灰狼
移动端工程师
展开
-
Java 反射
java反射主要从以下几个方面理解理解Class类理解Java的类加载机制学会使用ClassLoader进行类加载理解反射的机制掌握Constructor、Method、Field类的用法理解并掌握动态代理1、理解Class类Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类...转载 2020-01-09 18:06:13 · 149 阅读 · 0 评论 -
Java ClassLoader
一、什么是ClassLoader顾名思义,即是类加载器,具体作用就是将.class文件加载到JVM虚拟机中去,程序就可以正确运行了。二、认识.class文件Java是解释性语言,编写的代码都是.java文件,需要经过compile(编译)成.class文件才能运行。拿入门Hello World来讲:HelloWorld.javapublic class HelloWorld{ ...转载 2020-01-09 14:21:58 · 128233 阅读 · 0 评论 -
Java 静态导入
利用import static 可以不通过调用包名,直接使用包里的静态方法。打印代码一般如下public static void main(String[] args) { System.out.println("Hello World");}使用import static后import static java.lang.System.out;public static voi...原创 2018-12-13 14:19:30 · 243 阅读 · 1 评论 -
Java 自动资源管理
从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。原有拷贝文件代码一般都是在finally中关闭。public void copyFile(String fileInput, String fileOutput) {...原创 2018-12-13 13:47:28 · 922 阅读 · 1 评论 -
Java 可变参数
可变参数适用于参数个数不确定,类型确定的情况,一般把可变参数当做数组处理。可变参数以...的形式实现。public void print(int...args) { for (int value : args) { System.out.print(value + " "); } System.out.println();}调用print()方法...原创 2018-12-13 10:31:15 · 238 阅读 · 1 评论 -
Java DecimalFormat用法
在项目中遇到需要维护层级关系的数据,在parentid里遇到这样一个需求,需要在一个数的前面加0,使这个字符串保持固定的长度,这样就遇到了这个类——DecimalFormat,继承自NumberFormat。在这里记录一下它常用到的一些方法和使用方法:double ...转载 2018-12-12 17:06:06 · 2287 阅读 · 2 评论 -
Java Pattern和Matcher用法
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher。Pattern,一个Pattern是一个正则表达式经编译后的表现模式。Matcher,一个Matcher对象是一个状态机器,它依据Pattern对象...转载 2018-12-12 16:04:32 · 3112 阅读 · 1 评论 -
Java 原子类
Java提供的原子类是靠 sun 基于 CAS 实现的,CAS 是一种乐观锁。原子变量类相当于一种泛化的 volatile 变量,能够支持原子的和有条件的读-改-写操作。AtomicInteger 表示一个int类型的值,并提供了 get 和 set 方法,这些 Volatile 类型的i...转载 2018-12-11 17:47:25 · 732 阅读 · 1 评论 -
Java Annotation注解
一、认识注解注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注解是JDK1.5...转载 2018-12-05 09:03:04 · 248 阅读 · 1 评论 -
Java Thread.interrupt方法
Thread.interrupt()方法Thread.interrupt()方法不会终止一个正在运行的线程,只是发出一个阻塞状态,调用Thread.isInterrupted()方法可以判断。public class ThreadInterrupt extends Thread { public void run() { boolean pause = fal...原创 2018-12-03 15:01:37 · 755 阅读 · 1 评论 -
Java Thread.sleep方法
1. Thread.sleep方法sleep方法挂起当前线程,直到一段时间后再次进入等待状态。public class ThreadSleep extends Thread { @Override public void run() { System.out.println("ThreadSleep begin " + System.currentTimeMi原创 2018-12-03 14:40:10 · 2360 阅读 · 1 评论 -
Java Daemon线程
所谓后台线程,是指在程序运行的时候在后台提供一种通用服务的线程,并且这种线程不属于程序中不可或缺的一部分。当所有的非后台线程结束时,程序也将终止。public class SimpleDaemons extends Thread { public SimpleDaemo...转载 2018-12-03 09:46:34 · 338 阅读 · 1 评论 -
Java Lock对象
1. ReentrantLock类ReentrantLock可以实现线程之间同步互斥,类似于synchronized同样的效果。public class ThreadReentrantLock { public static void main(String[] args) { ThreadA threadA = new ThreadA(); for...原创 2018-12-03 09:26:08 · 3240 阅读 · 1 评论 -
Java synchronized关键字
1. synchronized关键字synchronized用于实现同步操作,防止出现脏读,常用于修饰方法和代码块。2. synchronized同步当synchronized用于修饰方法时,线程锁的对象是其自身,等同于synchronized(this){}代码块,也等同于synchronized(锁对象){}。public class ObjectLock { public ...原创 2018-12-03 09:05:54 · 169 阅读 · 1 评论 -
Java Thread.join方法
1. Thread.join方法join方法会等待指定线程结束,然后才会继续运行。public class ThreadJoin { public static void main(String[] args) { try { ThreadA threadA = new ThreadA(); threadA.start(...原创 2018-12-03 08:56:26 · 540 阅读 · 1 评论 -
Java Thread.wait和Thread.notify方法
1. wait和notify方法wait方法可以使当前执行代码的线程进行等待,notify方法用来通知哪些等待该对象锁的其它线程。wait和notify方法必须要获得该对象的锁,才能运行,否则会报IllegalMonitorStateException的异常。try { Object lock = new Object(); synchronized (lock) { ...原创 2018-12-03 08:45:54 · 2729 阅读 · 1 评论 -
Java 关键字strictfp、volatile和transient
1. strictfp浮点运算有两种运行模式:严格浮点模式和非严格浮点模式。当我们执行严格浮点运算时,在所有的Java虚拟机实现上运行结果都是精确相等的。strictfp可以用来修饰类、接口和方法。当声明一个方法是strictfp时,该方法中的所有代码都会遵循严格限制规则来执行。当使用是strictfp来修饰类或接口时,其中的所有代码都会在严格模式下执行。2. volatileJa...原创 2018-11-20 15:15:13 · 409 阅读 · 1 评论 -
Java enum枚举
用法一:常量在JDK1.5 之前,我们定义常量都是: public static final....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。public enum Color&nb...转载 2018-11-20 11:27:09 · 250 阅读 · 1 评论 -
Java 重载与覆盖
1. 重载与覆盖重载,提供多个具有相同名字的方法,但是它们具有可以彼此分开的不同签名。覆盖,将方法的超类实现替代为自己的实现,签名必须相同。如果返回的类型是引用类型,那么覆盖方法的返回类型可以申明为超类方法返回类型的值类型。子类可以改变超类方法的访问修饰符,但只能提供更多的访问权限。覆盖方法可以改变其他的方法修饰符,可以改变synchronized、native和strictfp修饰...原创 2018-11-20 10:35:39 · 950 阅读 · 1 评论 -
Java 引用类型
1. 强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。2. 软引用(S...转载 2018-11-19 14:24:15 · 224 阅读 · 1 评论 -
Java String的intern方法
1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. new String()和new String("&a转载 2018-11-19 10:58:36 · 690 阅读 · 1 评论 -
Java 内部类
前言Java拥有四种内部类:静态内部类,成员内部类,局部内部类和匿名内部类。1. 静态内部类静态内部类有static修饰,被声明为外部类的静态成员,它的行为和一般的类是一样的。在接口中的内部类都是静态内部类。静态内部类是外部类的成员,可以访问外部类的所有成员,包括私有成员。public class Super { private int iValue = 1; publi...原创 2018-11-19 10:46:42 · 199 阅读 · 1 评论 -
Java Formatter用法
1. Formatter类1.1 使用方法Formatter formatter = new Formatter([destination]);formatter.format(String format, Object…args);1.2 使用说明(1) F...转载 2018-11-13 14:53:15 · 8753 阅读 · 1 评论 -
Java SimpleDateFormat用法
1. SimpleDateFormat类SimpleDateFormat是一个日期格式化类,用来格式化日期。// 构造方法public SimpleDateFormat(String pattern)// 格式化public final String Format(Date date)// 转换public Date parse(String source)throws Pars...原创 2018-11-13 13:35:24 · 550 阅读 · 1 评论 -
Java Calendar用法
1. Calendar初始化Calendar calendar = Calendar.getInstance();默认是调用GregorianCalendar实例返回,在GregorianCalendar的构造函数中,设置为当前时间public GregorianCalendar(TimeZone zone, Locale aLocale) { super(zone, aLocal...原创 2018-11-12 17:36:54 · 3366 阅读 · 1 评论