
JavaSE
查缺补漏
基于jdk1.8
有机后浪
正在慢慢深入中。。。
展开
-
Java - 对象的内存布局(64位HotSpot)
因为JVM虚拟机为HotSpot,以下谈的都是在64位HotSpot虚拟机中对象内存布局对象的内存布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)注:数组对象中对象头部分多了数组长度Length,存储长度为4字节其内存结构:MarkWord:存储对象的hashCode、GC信息、锁信息三部分ClassPointer:指向对象对应的Class对象(类对象)的内存地址InstanceData:具体的数据大小,如对象含有一个.原创 2020-12-22 14:42:17 · 755 阅读 · 0 评论 -
JDK8的新特性总结
JDK8新版任你发,我用Java8身为使用最多的版本,我们还是需要好好了解JDK8的改动JDK的常用新特性总结:Lambda 表达式:Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)函数式接口方法引用和构造器调用:方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。接口支持静态方法和默认方法Stream API:新添加的Stream API原创 2020-11-14 14:49:36 · 4690 阅读 · 0 评论 -
JavaSE笔记(2.8)IO流与jdk1.8 Stream新特性
前言后续学习到网络编程、并发编程,发现JavaSE中还有个Stream流没有系统的复习流在jdk1.8之前是IO流,jdk1.8新添加了stream特性用于处理集合这两者是不同的目录IO流1.1. 分类新特性:StreamStream操作3.1. 创建流3.2. 中间操作3.3. 结束操作总结IO流jdk1.8之前就存在流,它属于IO包(java.io),用于数据...原创 2020-02-26 16:08:26 · 832 阅读 · 0 评论 -
JavaSE笔记(2.7)Java基础 - 复制
前言记录学习过程目录概念直接赋值复制浅拷贝深拷贝深、浅拷贝机制序列化实现深拷贝复制概念复制可以分为3种:直接赋值复制、浅拷贝、深拷贝它们大概的概念:直接赋值复制:对基本数据类型进行值传递,通过赋值将一个对象的引用复制给另一个对象浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一...原创 2020-02-11 19:03:31 · 165 阅读 · 0 评论 -
JavaSE笔记(2.6)Java基础 -序列化
前言记录学习过程学的越多越感觉渺小,序列化是一个深坑目录概念Java的序列化机制序列化与构造方法serialVersionUID的作用静态变量的序列化问题transient 关键字的使用序列化概念Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM 的生命周期...原创 2020-02-11 10:27:05 · 519 阅读 · 0 评论 -
JavaSE笔记(2.5)Java基础 - 泛型
前言记录学习过程泛型是一个很重要的知识点其实用过集合就都对泛型有一定的了解目录泛型泛型的特点泛型的使用继承泛型类通配符通配符相关类型擦除总结泛型泛型:把明确数据类型的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常相关术语:ArrayLis...原创 2020-02-10 14:50:20 · 417 阅读 · 0 评论 -
JavaSE笔记(2.4)Java基础 - 内部类、Lambda表达式
前言在编程过程中,总会不经意的使用内部类内部类是什么?内部类在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类public class InnerClass { private int id; public class inner{ }}就可以称inner类为内部类内部类大致可以分为四种:静态内部类,成员内部类,局部内部...原创 2020-02-09 18:19:54 · 774 阅读 · 1 评论 -
JavaSE笔记(2.3)Java基础 -注解
前言注解(Annotation)挺常见的,尤其是在spring框架中更是必须掌握的注解类似与一个标签,例如在类上注解就相当于把标签贴在类上,然后标签里的东西就可以修饰这个类这个讲的挺详细的,跟随着学习:聊聊Java中的注解注解...原创 2020-02-09 14:49:19 · 203 阅读 · 0 评论 -
JavaSE笔记(2.2)Java基础 - 反射
前言反射算是Java中很强很重要的技术,尤其是在spring中,它有两个重要的特点依赖注入、反转控制,就是运用反射反射的理解:通过class获得类对象,然后分解映射class对象中的各种元素(构造方法、成员变量等)为一个个对象反射动态语言动态语言(Dynamic programming Language -动态语言或动态编程语言),是指程序在运行时可以改变其结构:新的函数可以引进,已有的...原创 2020-02-08 17:25:06 · 181 阅读 · 0 评论 -
JavaSE笔记(2.1)Java基础-Java异常分析及处理
前言编程过程种会碰到各种bug,出现bug时会调用异常分析和处理方法显示在控制台或日志异常如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。(copy的图,出处看标记)Throwable 是 J...原创 2020-02-08 09:45:15 · 150 阅读 · 0 评论 -
需要了解的时间复杂度、空间复杂度
前言运用不同算法涉及效率都是用算法复杂度:(时间复杂度、空间复杂度)来表示,具体是什么?时间复杂度算法的时间复杂度是一个函数,它定性描述该算法的运行时间感觉时间复杂度就是执行算法所需的计算工作量,通常用O(f(n))表示算法运行时间在不同的机器上会不同,所以时间复杂度只是简化的比较常见的时间复杂度量级有:常数阶O(1)对数阶O(logn)线性阶O(n)线性对数阶O(nlo...原创 2020-02-07 16:07:19 · 1051 阅读 · 0 评论 -
JavaSE笔记(1.3)集合-Set
前言SetSet 注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素,值不能重 复。对象的相等性本质是对象hashCode 值(java 是依据对象的内存地址计算出的此序号)判断的,如果想要让两个不同的对象视为相等的,就必须覆盖 Object 的hashCode 方法和 equals 方法可以看到Set接口的方法:Set接口有3个实现类:HashSet(...原创 2020-02-06 17:17:49 · 178 阅读 · 0 评论 -
JavaSE 3种遍历方式效率
常见的3种遍历方式:for循环、foreach、Iteratorfor循环遍历ArrayList列表package com.company;import java.util.ArrayList;import java.util.List;public class Traversal { public static void main(String[] args) { ...原创 2020-02-06 11:43:34 · 424 阅读 · 1 评论 -
JavaSE笔记(1.2)集合-Map
前言在知乎上看到这样一段话:为什么需要CollectionJava是一门面向对象的语言,就免不了处理对象为了方便操作多个对象,那么我们就得把这多个对象存储起来想要存储多个对象(变量),很容易就能想到一个容器常用的容器我们知道有–>StringBuffered,数组(虽然有对象数组,但是数组的长度是不可变的!)所以,Java就为我们提供了集合(Collection)~前面学...原创 2020-02-05 16:27:22 · 189 阅读 · 0 评论 -
JavaSE笔记(1.1)Java集合-list
前言集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。Collection:Collection 是集合 List、Set、Queue 的最基本的接口。Iterator:迭代器,可以通过迭代器遍历集合中的数据Map:是映射表的基础接口...原创 2020-02-04 17:01:10 · 194 阅读 · 0 评论 -
JavaSE笔记(0)JavaSE学习路线
反思刚入门时学了一个学期的Java,零零碎碎的学了个大概,等到后面学习深入的东西时发现漏洞百出,特意深入学习一下JavaSE前言Java分为JavaME 、JavaSE、 JavaEE1.Java SE(Java Platform,Standard Edition)Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Ja...原创 2020-02-04 10:48:54 · 474 阅读 · 0 评论 -
Java基础 操作符中碰到的易混淆的点
++i与i++i++;++i;单独的一条语句++i,i++没有区别int i=1;System.out.println(i++);int i=1;System.out.println(++i);i++; 先取值,再运算++i; 先运算,再取值int i=1;int j=++i + i++ + ++i + ++i + i++; /*2+2+4+5+5*/Syste...原创 2020-02-03 17:21:59 · 135 阅读 · 0 评论