随笔分类 - Java入门
摘要:饿汉式(静态常量): /** * 饿汉式(静态常量) * * 1.构造器私有 * 2.定义一个静态常量保存一个唯一的实例对象(单例) * 3.提供一个静态方法返回单例对象 */ public class Singleton01 { public static final Singleton01 IN
阅读全文
摘要:垃圾回收算法: 标记-清除法:当发现需要回收的内容时,标记并直接清除。 缺点:需要遍历全堆,复杂度高,并且会带来内存碎片等问题 标记-整理法:将不需要回收的内容标记并整理到一起,然后清除剩下的部分 优缺点:没有内存碎片问题;但是如果存活的多,会产生多次搬运,降低效率。 复制法:将内存分两块,每次将存
阅读全文
摘要:运行时常量池: 例1:JDK1.8 例2:JDK1.8 例3:JDK1.6 例4:JDK1.6 StringTable 性能调优: 1.如果系统中常量的个数非常多,可以适当增加桶的个数,减少哈希冲突 2.如果系统中常量的个数非常多,且是重复度很高的,可以使用 intern 方法放入串池中 放入串池后
阅读全文
摘要:在Java面世之初,标准库就引入了两种用于处理日期和时间的类,它们是java.util.Date和java.util.Calendar,而前者堪称类糟糕设计的典范,浏览API可以发现,从Java1.1开始,Date类中的所有方法就已经被弃用,Java1.1推荐采用Calendar类处理日期和时间,但
阅读全文
摘要:注解: 概念:说明程序的。给计算机看的 注释:用文字描述程序的。给程序员看的 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字 段、方法、局部变量、方法参数等的前面,用来对这些元素进行
阅读全文
摘要:反射:框架设计的灵魂 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码 反射:将类的各个组成部分封装为其他对象,这就是反射机制 好处: 1. 可以在程序运行过程中,操作这些对象。 2. 可以解耦,提高程序的可扩展性。 获取Class对象的方式: 1. Class.forName("全类名"
阅读全文
摘要:Junit单元测试: 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 2. 白盒测试:需要写代码的。关注程序具体的执行流程。 Junit使用:白盒测试 步骤: 1. 定义一个测试类(测试用例) 建议: 测试类名:被测试的类名Test 例:CalculatorTest
阅读全文
摘要:package com.fgy.demo2; public interface Printable { void print(String s); } package com.fgy.demo2; public class Demo01Printable { public static void m
阅读全文
摘要:package com.fgy.demo; import java.util.ArrayList; import java.util.Arrays; import java.util.stream.Stream; /** * 使用stream流的方式,遍历集合,对集合中的数据进行过滤 */ publ
阅读全文
摘要:package com.fgy.demo3; import java.util.function.Supplier; /** * 函数式接口:Supplier * get方法返回和泛型相同类型的值 */ public class Demo01Supplier { public static void
阅读全文
摘要:函数式接口:有且只有一个抽象方法的接口,称为函数式接口 当然也可以包含有其他方法(默认,静态,私有) 函数式接口可以作为方法的参数,也可以作为方法的返回值 注解 @FunctionalInterface 可以检测一个接口是否是函数式接口 package com.fgy.demo; @Function
阅读全文
摘要:package com.fgy.demo; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.n
阅读全文
摘要:package com.fgy.demo2; import java.io.Serializable; /** * 想要实现序列化,必须实现Serializable接口 */ public class Person implements Serializable { private String n
阅读全文
摘要:将GBK编码的文本文件,转换成UTF-8编码的文本文件。 package com.fgy.demo; import java.io.*; public class Demo05Test { public static void main(String[] args) throws IOExcepti
阅读全文
摘要:JDK7新特性: 在try的后边可以增加一个( ),在括号中可以定义流对象 那么这个流对象的作用域就在try中有效,try中的代码执行完毕,会自动把流对象释放,不再需要写finally package com.fgy.demo; import java.io.FileInputStream; imp
阅读全文
摘要:package com.fgy.demo08; /** * 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法 * 使用Lambda必须具有上下文推断 * 也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例 * 有且仅有一个抽象方法的接口
阅读全文
摘要:线程池工作流程: 核心线程数(corePoolSize) :核心线程数的设计需要依据任务的处理时间和每秒产生的任务数量来确定,例如:执行一个任务需要0.1秒,系统百分之80的时间每秒都会产生100个任务,那么要想在1秒内处理完这100个任务,就需要10个线程,此时我们就可以设计核心线程数为10;当然
阅读全文
摘要:线程状态五种的说法: 线程状态六种的说法:(准确) 线程状态的转换: package com.fgy.demo05; /** * 等待唤醒案例:线程之间通信 * 注意: * 同步使用的锁对象必须唯一 * 只有锁对象才能调用wait和notify()/notifyAll()方法 */ public c
阅读全文
摘要:解决线程安全问题的第一种方案:使用同步代码块 格式: synchronized(锁对象) { 可能会出现线程安全问题的代码(访问了共享数据的代码) } 注意:代码块中的锁对象,可以是任意对象,但必须保证多个线程之间使用的是同一个 锁对象的作用是把同步代码块锁住,同一时间只能让一个线程在同步代码块中执
阅读全文
摘要:package com.fgy.demo01; public class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("run:"
阅读全文

浙公网安备 33010602011771号