Java基础
木木的小林子
这个作者很懒,什么都没留下…
展开
-
Java8新特性整理笔记
Java8新特性整理笔记Java8新特性包括:接口内允许添加默认实现的方法、Lambda表达式、函数式接口、Stream流操作等。在我看来,每一个新特性都是一件比较好的工具,但是当他们组合在一起使用的时候就发生质变,就好比一把瑞士军刀。下面我会利用四大核心函数式接口结合其他几种新特性达到优化代码的效果。如果读者完全没有接触过这些新特性可以先参考我的文章:Java lambda语法和函数式编程...原创 2019-12-29 15:55:28 · 336 阅读 · 0 评论 -
Java自定义注解以及通过反射获取注解信息
随着spring的流行,java注解的使用成为了java工程师必不可少的技能。注解基本知识元注解:@Retention、 @Target、 @Document、 @Inherited;Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口。参数成员只能用publi...原创 2019-11-05 22:10:22 · 802 阅读 · 0 评论 -
Java异常详解
throw new Exception()既代表 java 运行进入了一个新的分支,不再执行new Exception()后面的语句了,之后再来执行finally中的内容。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMawiyPr-1572962936244)(ExceptionStruct.png)]java将所有的错误封装为一个对象,其根本父类为 ...原创 2019-11-05 22:09:23 · 389 阅读 · 0 评论 -
Java面向对象详解
什么是面向对象?这大概是java中最重要的一部分了,写这篇文章主要是自己之前java基础不怎么样,然后今天看了一些关于面向对象和多态的文章,做下笔记。面向对象java中什么是对象java中万物皆对象,既所有的一切都可以是对象,动物可以是对象,人可以是对象,头也可以是对象… 总之,就是我们可以看到的事物基本上都可以是对象。什么是面向对象面向对象并不仅仅是这几个字而已,这是一种编程思想,它...原创 2019-11-05 22:08:39 · 212 阅读 · 0 评论 -
java枚举详解
JDK1.5之前的枚举在JDK1.5之前是没有enum这个关键字的,那么那个时代是怎么实现枚举的呢?主要是通过私有化构造器,然后在类里面创建静态final的对象,在类的外面通过 ** 类名.对象名 ** 来使用枚举的,如下:class Season{ String name; String description; private Season(String na...原创 2019-11-05 22:07:39 · 93 阅读 · 0 评论 -
Java传参机制详解
Java传参机制首先看下java中的参数传递机制:基本数据类型传值(未传递地址)方式:class Main{ public static void main(String[] args) { Main main = new Main(); int a = 20; System.out.println("test之前的a:" + a); main.test(...原创 2019-11-03 23:55:31 · 579 阅读 · 0 评论 -
java可变参数列表详解
java可变参数列表从java5开始,java支持一种参数写法:Java类型后面三个点(如String…),叫可变长度参数列表。向其中传入参数时,它支持传入数组,个数不一定的同类型(…前面的类型)参数。第一次看到别人的代码里写了它的时候是有点懵的,但是用过两次之后就发现这个东西其实很简单。public void printNames(String...names){ for(Strin...原创 2019-11-03 23:53:53 · 235 阅读 · 0 评论 -
java泛型详解
概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。泛型就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的...原创 2019-11-03 23:08:11 · 97 阅读 · 0 评论 -
java反射机制详解
在说反射之前,必须说一句,所谓java框架(比如大名鼎鼎的Spring)大多数都是动态代理+注解完成的,而动态代理(动态代理模式以及静态代理模式差异和使用可以在我的另一篇文章中看到)必须使用反射完成。反射可以获取本类、父类以及实现的接口中的所有方法以及所有属性。获取运行时类的实例获取运行时类得实例主要有四种方式:@Testpublic void test4() throws ClassN...原创 2019-11-03 23:04:25 · 128 阅读 · 0 评论 -
java Stream的基本语法详解(包括并发流的使用语法)
java Stream是什么首先,我们来看下java怎么描述Stream的:A sequence of elements supporting sequential and parallel aggregate operations.其实学习stream之前我以为stream式很难的,但是学完之后,发现其实还好,并不难,主要在于是否熟练。Stream是java8的新特性,它与 jav...原创 2019-11-03 22:55:07 · 919 阅读 · 0 评论 -
Java多线程编程
概念梳理并行多个线程在同一时间在CPU上运行。并发表示一会做这个事情,一会做另一个事情,存在着调度。单核 CPU 不可能存在并行(微观上)。临界区临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。阻塞与非阻塞阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界...原创 2019-10-23 20:50:21 · 2155 阅读 · 0 评论 -
Java lambda语法和函数式编程
lambda初识lambda表达式一个简单的方法,比较两个Integer:public void Test1() { Comparator<Integer> com = new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return In...原创 2019-10-23 20:47:31 · 204 阅读 · 0 评论 -
Java枚举
JDK1.5之前的枚举在JDK1.5之前是没有enum这个关键字的,那么那个时代是怎么实现枚举的呢?主要是通过私有化构造器,然后在类里面创建静态final的对象,在类的外面通过 ** 类名.对象名 ** 来使用枚举的,如下:class Season{ String name; String description; private Season(String na...原创 2019-10-23 20:31:20 · 131 阅读 · 1 评论 -
关于ArrayList的天坑
ArrayList里究竟存储的是什么?ArrayList中的每一个元素存储的实际上是对象引用(之前在公司写代码的时候,做过类似下面的事),假如按照下面的方式使用ArrayList,则最后list中存储的元素都相同且都是最后一个元素,原因是list中所有的元素都指向同一块内存。@Testpublic void test1(){ List<Person> list = new...原创 2019-10-23 00:02:06 · 165 阅读 · 0 评论 -
Java Map以及HashMap、TreeMap、HashTable
MapMap接口主要HashMap、LinkedHashMap、TreeMap、Hashtable、Properties实现类Map的遍历方式方式一,这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用:Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (Map.Ent...原创 2019-10-22 23:48:07 · 237 阅读 · 0 评论 -
Java中Set的使用
Set接口HashSet、LinkedHashSet、TreeSetHashSet是Set接口的典型实现,大多数时候Set集合都使用这个实现类。HashSet是按Hash算法来存储集合中的元素,因此具有很好的存取、查找、删除性能。底层就是HashMap;HashSet具有以下特点:不能保证元素的排列顺序;HashSet不是线程安全的;集合元素可以是null;HashSet集合判断两个元...原创 2019-10-22 23:43:37 · 300 阅读 · 0 评论 -
Java List踩坑记录
关于集合,先看下面这张框架图,可以清晰的看到,整个集合主要包含两大块: Collection和Map,其中Collection接口是一个单列集合,用来存储一个一个的对象,Map接口是一个双列集合,用来存储一对(key - value)一对的数据。接下集合部分主要就分析这两个部分(不会详细讲集合中公有的方法,主要介绍几个实现类的区别和接口的区别)。CollectionThe root in...原创 2019-10-22 23:37:17 · 441 阅读 · 0 评论 -
Java重载和重写
重载(Overload)重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。注意:在一个类里面,只有方法名字相同,而参数不同才算是重载,与返回类型无关。既无法以返回值类型作为重载函数的区分标准。public class NameConflict { public void show(){} public int show(...原创 2019-10-22 18:58:40 · 507 阅读 · 3 评论