-
Java基础之JDK的下载与安装
所属栏目:[Java] 日期:2020-12-14 热度:129
做Java开发已经很长一段时间了,最近在回顾Java的基础知识,感觉好多都是知道这个概念,能说个皮毛,但是往深了说又不知道怎么说,所以打算对Java从头做一个回顾,算是对自己所学知识的一个巩固和深入了解,希望也能给新人一点帮助 这篇文章就从Java最基础的[详细]
-
Java下载execl表格
所属栏目:[Java] 日期:2020-12-14 热度:100
Java用POI往execl表格中写数据,并下载下来有两种方式 1、用poil的API创建表格,并设计好表格格式,然后往里面写数据 (workbook== workbook= HSSFSheet sheet= sheet.setDefaultColumnWidth(( )13 HSSFRow row=sheet.createRow(0 HSSFCellStyle style= HSSFF[详细]
-
Java 注解
所属栏目:[Java] 日期:2020-12-14 热度:119
概述 注解时在Java5中开始引入的概念。可以将注解想象成标签,给指定的方法、类、变量、参数、包等贴上一个标签。 @Override 注解就是告诉编译器,这个方法是重写的父类方法。 还有@Test、@Deprecated等等 自定义注解 自己定义注解的语法也很简单: 然后就可[详细]
-
Java 控制类的引用类型,合理使用内存
所属栏目:[Java] 日期:2020-12-14 热度:99
Java提供了 java.lang.ref包,该包下的类均与垃圾回收机制相关 先介绍Java对象的集中引用类型 1.强引用 强引用是最常见的,创建对象就是强引用,如 String a = new String("1"); 无论系统内存是否紧张,只要该对象还存在强引用就不会被垃圾回收机制回收 2.软引用[详细]
-
Java 注解原理
所属栏目:[Java] 日期:2020-12-14 热度:123
下面来看看Java中注解是如何实现的 创建注解类Inter: 创建测试类Test: 在程序第二句设置断点,可以看到: 可以看到,注解的实例是一个动态代理类的对象. 要想查看这个动态代理类,可以在代码中加 System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFile[详细]
-
Java8 默认方法
所属栏目:[Java] 日期:2020-12-14 热度:52
概述 Java8新增了接口的默认方法。使用default关键字。 默认方法就是接口可以有实现方法,而且不需要实现类来实现其方法。相对于JDK1.8之前的接口来说,新增了可以接口中实现方法。 可以说在接口中实现方法一部分原因是为了lambda表达式服务的,因为lambda表[详细]
-
Java8 Lambda表达式
所属栏目:[Java] 日期:2020-12-14 热度:183
概述 lambda表达式, 是Java8中的一个新特性。可以理解为一个匿名函数。 lambda表达式可以理解为将一个函数浓缩为一行代码,使代码更加简洁紧凑。 lambda表达式语法: (parameters) -> statement; 或 (parameters) -> {statements;} 参数如下: parameters:[详细]
-
Java8 方法引用
所属栏目:[Java] 日期:2020-12-14 热度:150
概述 方法引用是用来直接访问类或实例阴茎存在的方法或者构造方法.它需要由兼容的函数式接口(lambda表达式中用到的接口)构成的目标类型上下文. 有时候,当我们想要实现一个函数式接口的方法,但是已经由类实现了我们想要的功能,这时可以使用方法引用来直接使用[详细]
-
Java8 Optional类
所属栏目:[Java] 日期:2020-12-14 热度:164
概述 到目前为止,著名的NullPointerException是导致Java应用程序失败的最常见原因。过去,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启[详细]
-
Java8 Stream
所属栏目:[Java] 日期:2020-12-14 热度:149
概述 Java8 API中添加了一个新的抽象成为流Stream,可以以一种声明的方式处理数据。 Stream与java.io包中的InputStream和OutputStream是完全不同的概念。Java8中的Stream是对集合对象功能的增强,专注与对集合对象进行各种非常便利、高效的聚合操作,或大批[详细]
-
Java 内部类及其原理
所属栏目:[Java] 日期:2020-12-14 热度:69
Java中实现内部类 内部类相信大家都用过很多次了,就不说它是怎么用的了。 内部类 1.成员内部类 需要注意的是, 当成员内部类拥有和外部类同名的成员变量或这方法时, 默认情况下访问的是内部类的成员, 如要访问外部类的同名成员, 需要使用以下形式: 外部[详细]
-
JVM 垃圾回收机制
所属栏目:[Java] 日期:2020-12-14 热度:143
首先JVM的内存结构包括五大区域: 程序计数器、虚拟机栈、本地方法栈、方法区、堆区。其中程序计数器、虚拟机栈和本地方法栈3个区域随线程启动与销毁, 因此这几个区域的内存分配和回收都具有确定性,不需要过多考虑回收的问题。而Java堆区和方法区则不一样,[详细]
-
Java中的深克隆和浅克隆
所属栏目:[Java] 日期:2020-12-14 热度:181
为什么要克隆 首先思考一个问题,为什么需要克隆对象? 直接new一个对象不行吗? 克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的"状态"时就要靠克隆了. 当然,把对象的属性一个一个[详细]
-
JVM内存结构
所属栏目:[Java] 日期:2020-12-14 热度:199
按照Java虚拟机规范的规定,JVM自动管理的内存将包括以下几个运行时的数据区域: 下面分别对几个数据区域进行说明: 1.程序计数器 程序计数器是JVM中一块较小的内存区域,保存着当前线程执行的虚拟机字节码指令的内存地址. Java多线程的实现,其实是通过线程间的[详细]
-
Java集合之LinkedList源码分析
所属栏目:[Java] 日期:2020-12-14 热度:109
概述 LinkedLIst和ArrayLIst一样,都实现了List接口,但其内部的数据结构不同,LinkedList是基于链表实现的(从名字也能看出来),随机访问效率要比ArrayList差. 它的插入和删除操作比ArrayList更加高效,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有[详细]
-
Java集合之Vector源码分析
所属栏目:[Java] 日期:2020-12-14 热度:101
概述 Vector与ArrayLIst类似,内部同样维护一个数组,Vector是线程安全的. 方法与ArrayList大体一致,只是加上 synchronized 关键字,保证线程安全,下面就不具体分析源码了,具体可以查看ArrayList中的源码分析. Vector源码分析 1.主要字段 2.构造函数 3.增删改查[详细]
-
Java集合之LinkedHashSet源码分析
所属栏目:[Java] 日期:2020-12-14 热度:197
概述 LinkedHashSet与HashSet类似,不同的是LinkedHashSet底层使用LinkedHashMap维护元素插入的顺序. LinkedHashSet继承自HashSet,只是重写了HashSet的构造方法,初始化一个LinkedHashMap,其他均与HashSet相同. LinkedHashSet构造方法 HashSet的构造方法: 以上[详细]
-
Java集合之ArrayList源码分析
所属栏目:[Java] 日期:2020-12-14 热度:72
概述 ArrayList可以理解为动态数组,根据MSDN的说法,就是Array的复杂版本. 与数组相比,它的容量能动态增长. ArrayList是List接口的可变数组的实现. 实现了所有可选列表操作,允许包括null在内的所有元素. 数组的特点,查询快增删慢. 每个ArrayList实例都有一个[详细]
-
Java集合之LinkedHashMap源码分析
所属栏目:[Java] 日期:2020-12-14 热度:185
概述 HashMap是无序的,即put的顺序与遍历顺序不保证一样. LinkedHashMap是HashMap的一个子类,它通过重写父类的相关方法,实现自己的功能. 它保留插入的顺序. 如果需要输出和输入顺序相同时,就选用此类. LinkedHashMap原理 LinkedHashMap是如何保证输入输出顺[详细]
-
Java集合之Hashtable源码分析
所属栏目:[Java] 日期:2020-12-14 热度:98
概述 Hashtable也是基于哈希表实现的,与map相似,不过Hashtable是线程安全的,Hashtable不允许 key或value为null. 成员变量 Hashtable的数据结构和HashMap一样,采用 数组加链表的方式实现. 几个成员变量与HashMap一样: 方法 Hashtable的方法与HashMap基本一样,[详细]
-
Java集合之HashMap源码分析
所属栏目:[Java] 日期:2020-12-14 热度:66
以下源码均为jdk1.7 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现. 提供所有可选的映射操作,并允许使用null值和null健. 此类不保证映射的顺序. 需要注意的是: HashMap不是同步的. 哈希表 哈希表定义: 哈希表是一种根据关键码去寻找值的数据映射结[详细]
-
Java集合的选择
所属栏目:[Java] 日期:2020-12-14 热度:161
我们在使用集合时应该使用哪个集合呢? 具体还是要看需求,当然,Java中不只是有这几个,还有一些没有给出,具体情况具体分析吧,仅给出一个小思路. 进行集合的选择: 是否是键值对象形式: 一、是:Map 1、键是否需要排序: (1)是:TreeMap (2)否:HashMap 2、不知道[详细]
-
Java集合之HashSet源码分析
所属栏目:[Java] 日期:2020-12-14 热度:175
概述 HashSet是基于HashMap来实现的,底层采用HashMap的key来保存数据,借此实现元素不重复,因此HashSet的实现比较简单,基本上的都是直接调用底层HashMap的相关方法来完成. HashSet的构造方法就是创建HashMap: 基本操作 1.添加操作 2.删除操作 3.迭代器 其他方[详细]
-
异常: The server time zone value 'ÖÐ
所属栏目:[Java] 日期:2020-12-14 热度:103
异常: The server time zone value '?D1ú±ê×?ê±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zon[详细]
-
异常:getHibernateFlushMode is not valid without active tran
所属栏目:[Java] 日期:2020-12-14 热度:82
场景: 在使用spring整合hibernate调用的HibernateTemplate时报错 解决: 在spring配置文件中添加事务的配置[详细]