自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 【Java入门提高篇】Day21 容器类详解(四)ArrayList源码分析

     今天要介绍的是List接口中最常用的实现类——ArrayList,本篇的源码分析基于JDK8,如果有不一致的地方,可先切换到JDK8后再进行操作。  本篇的内容主要包括这几块:  1.源码结构介绍  2.源代码展示  3.要点说明  4.优缺点说明一、源码结构介绍  ArrayList的源码跟之前的接口源码比起来,那可就不能同日而语了,一千多行代码,如果直接看的话确实有些费劲,但仔细看看...

2018-06-03 19:13:33 241

原创 【Java入门提高篇】Day20 Java集合类详解(三)List接口

  今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collection接口的所有操作,它们自然也是有的。  List,Set,Queue,分别是列表,集合,队列的意思,代表着Collection家族下的三种不同的势力,它们各有所长,也各有所短,就像骑兵,步兵和水兵,各有各的优势,并没有谁一定比谁更好的说法,...

2018-05-31 17:01:32 186

原创 【Java入门提高篇】Day19 Java容器类详解(二)Map接口

  上一篇里介绍了容器家族里的大族长——Collection接口,今天来看看容器家族里的二族长——Map接口。  Map也是容器家族的一个大分支,但里面的元素都是以键值对(key-value)的形式存放的,就像字典一样,用相应的key就可以拿到相应的value。  先来看看Map接口的内容,下面是阉割版的Map接口(去掉了default method),去掉的部分涉及Stream操作,属于Map的...

2018-05-31 17:01:01 210

原创 【Java入门提高篇】Day18 Java容器类详解(一)Collection接口

  今天来看看Java里的一个大家伙,那就是容器。  所谓容器,就是专门用来装对象的东西,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体,但是集合类是容器类中的一个子集,为了区别表示,所以还是叫容器类,之后所说的集合类只是容器里的一个子集,之后会有详细介绍。  容器就是用来存放和管理其他类对象的地方,你可以把它理解为仓库管家,当你有东西需要存放和管理的时候,就要记得来找它。...

2018-05-31 17:00:39 253

原创 【Java 入门提高篇】Day17 Java 异常处理(下)

  今天继续讲解java中的异常处理机制,主要介绍Exception家族的主要成员,自定义异常,以及异常处理的正确姿势。Exception家族  一图胜千言,先来看一张图。   Exception这是一个父类,它有两个儿子,IOException和RuntimeException,每个儿子都很能生,所以它有着一堆的孙子,但其实,Exception家族还有一个大家伙,那就是Throwable,这是一...

2018-05-31 17:00:11 201

原创 【Java入门提高篇】Day16 Java异常处理(上)

  当当当当当当,各位看官,好久不见,甚是想念。  今天我们来聊聊Java里的一个小妖精,那就是异常。什么是异常?什么是异常处理?  异常嘛,顾名思义就是不正常,(逃),是Java程序运行时,发生的预料之外的事情,它阻止了程序按照程序员的预期正常执行。  异常处理,应该说异常处理机制,就是专门用来制服这个小妖精的法宝。Java中的异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,...

2018-05-31 16:59:27 154

原创 【Java入门提高篇】Day15 Java泛型再探——泛型通配符及上下边界

  上篇文章中介绍了泛型是什么,为什么要使用泛型以及如何使用泛型,相信大家对泛型有了一个基本的了解,本篇将继续讲解泛型的使用,让你对泛型有一个更好的掌握和更深入的认识。  上篇中介绍完泛型之后,是不是觉得泛型挺好用的?既消除了Object的不安全类型转化,又可以很方便的进行类型对象的存取,但是,等一下,有没有考虑到这样的情况。  我们先定义一个水果类:public class Fruit { ...

2018-05-14 19:32:05 277

原创 【Java入门提高篇】Day14 Java中的泛型初探

  泛型是一个很有意思也很重要的概念,本篇将简单介绍Java中的泛型特性,主要从以下角度讲解:  1.什么是泛型。  2.如何使用泛型。  3.泛型的好处。1.什么是泛型?泛型,字面意思便是参数化类型,平时所面对的类型一般都是具体的类型,如果String,Integer,Double,而泛型则是把所操作的数据类型当作一个参数。如,ArrayList<String>(),通过传入不同的类...

2018-05-14 19:31:46 153

原创 【Java入门提高篇】Day13 Java中的反射机制

  前一段时间一直忙,所以没什么时间写博客,拖了这么久,也该更新更新了。最近看到各种知识付费的推出,感觉是好事,也是坏事,好事是对知识沉淀的认可与推动,坏事是感觉很多人忙于把自己的知识变现,相对的在沉淀上做的实际还不够,我对此暂时还没有什么想法,总觉得,慢慢来,会更快一点,自己掌握好节奏就好。  好了,言归正传。  反射机制是Java中的一个很强大的特性,可以在运行时获取类的信息,比如说类的父类,...

2018-05-14 19:31:27 154

原创 【Java入门提高篇】Day12 Java代理——Cglib动态代理

  今天来介绍另一种更为强大的代理——Cglib动态代理。  什么是Cglib动态代理?  我们先回顾一下上一篇的jdk动态代理,jdk动态代理是通过接口来在运行时动态创建委托类的代理对象,但是跟静态代理一样有一个缺点,就是必须和委托类实现相同的接口,当接口数量增加时,便需要增加代理类的数量才能满足需求,而且如果委托类是别人写的,而且没有实现任何接口,那么jdk动态代理就有些力不从心了。  这时候...

2018-05-14 19:31:01 163

原创 【Java入门提高篇】Day11 Java代理——JDK动态代理

  今天来看看Java的另一种代理方式——JDK动态代理  我们之前所介绍的代理方式叫静态代理,也就是静态的生成代理对象,而动态代理则是在运行时创建代理对象。动态代理有更强大的拦截请求功能,因为可以获得类的运行时信息,可以根据运行时信息来获得更为强大的执(骚)行(操)力(作)。  我们还是以上一个例子为例,这里的IStars接口和Stars类都不需要修改,只需要修改代理类。  创建JDK动态代理需...

2018-05-14 19:30:43 145

原创 【Java入门提高篇】Day10 Java代理——静态代理

  今天要介绍的是一个Java中一个很重要的概念——代理。  什么是代理?联系生活想想看,代理似乎并不陌生,最形象的代表便是经纪人,明星一般都有经纪人,经纪人作为中间人,负责代理明星的相关事宜,比如说,有人要请明星去唱歌表演,一般不会直接跟明星联系,而是联系他的经纪人,他的经纪人来负责安排行程,而真正唱歌表演的还是明星本人,经纪人仅仅作为一个附加物存在。  在Java中,代理也是这样的概念,来看个...

2018-05-14 19:30:24 136

原创 【Java入门提高篇】Day9 Java内部类——静态内部类

  今天来说说Java中的最后一种内部类——静态内部类  所谓的静态内部类,自然就是用static修饰的内部类,那用static修饰过后的内部类,跟一般的内部类相比有什么特别的地方呢?  首先,它是静态的,这就意味着它的创建不依赖于外部类,创建内部类的实例不需要像普通内部类一样先创建外部类实例才能创建。  其次,有优势必然有劣势,它不能像普通内部类一样无限制的访问外部类的方法和成员变量,只能访问静...

2018-05-14 19:30:02 153

原创 【Java入门提高篇】Day8 Java内部类——匿名内部类

  今天来看看另一个更加神奇的类——匿名内部类。  就像它的名字表示的那样,这个类是匿名的,用完之后,深藏功与名,就像扫地僧那样默默潜藏于深山之中。匿名内部类不仅没有名字,连class关键字都省掉了,而且匿名内部类必须继承于某个类或者实现某个接口,长的就像这样:new 父类(参数列表)|实现接口() { //匿名内部类的内部定义 }   来看一个栗子:p...

2018-05-14 19:29:42 148

原创 【Java入门提高篇】Day7 Java内部类——局部内部类

  今天介绍第二种内部类——局部内部类。  局部内部类是什么?顾名思义,那就是定义在局部内部的类(逃)。开玩笑的,局部内部类就是定义在代码块、方法体内、作用域(使用花括号“{}”括起来的一段代码)内的类。局部内部类有以下特性:局部内部类只能在代码代码块、方法体内和作用域中使用。局部内部类同样可以无限制调用外部类的方法和属性。可以使用abstract修饰,声明为抽象类。  举个栗子:public c...

2018-05-14 19:29:22 158

原创 【Java入门提高篇】Day6 Java内部类——成员内部类

  内部类是什么,简单来说,就是定义在类内部的类(一本正经的说着废话)。  一个正经的内部类是长这样的:public class Outer { class Inner{ }}  这是为了演示而写的类,没有什么luan用,可以看到Inner类置于Outer类的内部。  那为什么要大费周章的在类内部定义一个类呢?不能在类外部定义类吗?内部类跟外部类有什么关系?  确实,很多时候,在...

2018-05-14 19:29:05 155

原创 【Java入门提高篇】Day5 Java中的回调(二)

  Java中有很多个Timer,常用的有两个Timer类,一个java.util包下的Timer,一个是javax.swing包下的Timer,两个Timer类都有用到回调机制。可以使用它在到达指定时间间隔后发出通知,例如程序中有一个时钟,就可以每秒请求发送一个通知,以便更新时间显示。那么怎样通知Timer去完成我们的任务呢?在其他语言中,可以提供一个函数名,然后定时器周期性的调用它,但Java...

2018-05-13 09:17:19 171

原创 【Java入门提高篇】Day4 Java中的回调

  又忙了一周,事情差不多解决了,终于有可以继续写我的博客了(各位看官久等了)。  这次我们来谈一谈Java里的一个很有意思的东西——回调。  什么叫回调,一本正经的来讲,在计算机程序设计中,回调函数是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。  别急别急,且听我慢慢道来。  举个栗子,设置这样一个情景,老板安排员工做事,然后让他做完后跟...

2018-05-13 09:16:57 177

原创 【Java入门提高篇】Day3 抽象类与接口的比较

    抽象类跟接口都讲完了,现在来做一个比较。  其实说实话,没有多大的可比较性,它们是完全不同的两个东西,它们的抽象不在同一个层级上。但是为了让大家更好的理解,还是做一个比较吧,毕竟它们都很抽象(233)。  首先是语法层面上的对比  1)抽象类跟接口都不能被实例化,因为它们都很虚嘛。但是在访问权限上,两者有一定的区别。  a、抽象类中的抽象方法(其前有abstract修饰)不能用privat...

2018-05-13 09:16:22 175

原创 【Java入门提高篇】Day2 接口

  上一篇讲完了抽象类,这一篇主要讲解比抽象类更加抽象的内容——接口。  什么是接口呢?先来看一个现实中的栗子,我们常用的插座,一般分为两孔和三孔,所以基本上不管是什么电器,只要插头插进去就可以正常使用,想想看,如果没有这样的规范,有十几种不同的插座孔,每个电器的插头都不一样,还不得崩溃掉。  先来看个栗子:/** * @author Frank * @create 2017/11/22 *...

2018-05-13 09:15:14 213

原创 【Java入门提高篇】Day1 抽象类

  基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我。  好了,没时间了,快上车!  本篇内容主要讲解Java中的抽象类。那什么是抽象类呢?顾名思义嘛,就是很“抽象”的类,抽象是具体的代名词,就像老板跟你说,大家加油干,努力干活就跟你涨工资,但很多时候都...

2018-05-13 09:14:44 261

原创 【JAVA零基础入门系列】Day15 对象的比较

  最近一直有事,博客也停笔了一段时间,十分抱歉。  这一篇主要讲讲对象的比较,什么是对象的比较,我们知道两个数值类型只需要用“==”符号即可进行相等判断,但如果是两个Goods对象呢?如何进行比较?这时候,我们的equals方法就派上用场了。equals方法是类的祖先Object类的另一个protected方法,既然是protected方法(能被同一个包里的所有类所访问, 能被该类的子类所访问,...

2018-05-13 09:13:09 238

原创 【JAVA零基础入门系列】Day14 Java对象的克隆

  今天要介绍一个概念,对象的克隆。本篇有一定难度,请先做好心理准备。看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和补充。  克隆,自然就是将对象重新复制一份,那为什么要用克隆呢?什么时候需要使用呢?先来看一个小栗子:  简单起见,我们这里用的是Goods类的简单版本。public class Goods { private String title; ...

2018-05-13 09:12:29 229

原创 【JAVA零基础入门系列】Day13 Java类的继承与多态

  继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽)  开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟方法,被继承的类被称为父类或者基类,继承的类称为子类或者导出类,在子类中可以调用父类的方法和变量。在java中,只允许单继承,也就是说 一个类最多只能显示地继承于一个父类。但是一个类却可以被多个...

2018-05-13 09:11:52 281

原创 【JAVA零基础入门系列】Day12 Java类的简单应用

  俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技。  今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务。  我们的商品类已经准备好了,代码重新罗列一次,这里增加了一个重载方法,关于重载这里不过多介绍,以后会专门文章介绍,这里把它当成一个普通方法就好了,主要用来比较两个商品是否相等,如果对代码不熟悉的话可以再返回去看一下上一篇文章。...

2018-05-13 09:11:21 238

原创 【JAVA零基础入门系列】Day11 Java中的类和对象

  今天要说的是Java中两个非常重要的概念——类和对象。  什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外在特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征,那么对象呢?我们口口声声说要面向对象编程,可是找了这么久也没找到对象,这还怎么编程(滑稽)。此对象非彼对象,Java中的对象是某个具体类的实例,就好比你和我都是人类这个大类的一个实例个体,也就...

2018-05-13 09:10:43 360 1

原创 【JAVA零基础入门系列】Day10 Java中的数组

  什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去。  那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做成绩统计,如求总分,平均分,方差等的时候,遍历成绩信息又成了一大难题,这个时候,你就需要用到数组了。  数组可以很好的解决这两个问题,数组名只有一个,只需要使用数组名加下标来访问各个元素的信息即...

2018-05-12 13:18:37 299

原创 【JAVA零基础入门系列】Day9 Java中的那个大数值

  什么是大数值?用脚趾头想也知道,当然是“大”的数值(233)。Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以表示任意长度,任意精度,想要多大,就能有多大。  为什么要用大数值?理由很简单,当整数跟浮点数的精度不能满足要求时,就需要用更大或者精度更高的类型,这时候大数值就应运而生了。  short的取值范围为-32768~3...

2018-05-12 13:18:11 243

原创 【JAVA零基础入门系列】Day8 Java的控制流程

  什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等。举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下外面是否下雨,下雨的话就得带伞,否则就直接出门,同时,外面可能有很多家水果店,那去哪家买呢?这里把价格放在第一要素,所以你会一家一家跑,直到找到最便宜的那家为止。  其实,上述买苹果的过程,已经用...

2018-05-12 13:17:43 362

原创 【JAVA零基础入门系列】Day7 Java输入与输出

  本篇主要介绍Java的输入与输出,当然,这里说的是控制台下的输入与输出,窗口程序的设计将会再后续篇章中有详细说明。    Java的输出很简单,调用System.out.println()即可打印输出你想要输出的内容。我们之前也已经看到过。调用println()方法时,会自动在后面加上换行符,如果不希望它加换行符的话,就要使用print()方法了,之后的打印输出会紧跟其后,而不是另起一行。另外...

2018-05-12 13:17:13 341

原创 【JAVA零基础入门系列】Day6 Java字符串

  字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串。Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组。至于什么叫做类,暂时不做过多介绍,在之后的篇章中会有关于类的详细介绍,在这里,只需要将类理解为一个模具,就像做月饼那样,想要什么外观的月饼,就选用相应的模具一压,再往烤箱里一放,便能得到我们想要的月饼。用同一个模具所做出来的月饼基本是一样的。当...

2018-05-12 13:16:41 430

原创 【JAVA零基础入门系列】Day5 Java中的运算符

  运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子:  已知长方形的长为3cm,高为4cm,求长方形的面积。  好,我们先新建一个项目,命名为Rectangle。  然后右键src文件夹,新建一个package,命名为pers.frank.rectangle。  这里补充说明一下包的命名规则,相信很多人都知道,包命名的时候用去www域名反...

2018-05-12 13:16:06 579 1

原创 【JAVA零基础入门系列】Day4 变量与常量

  这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量。  那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里。那么,我们为什么要使用盒子呢?主要用于存放程序运行过程中需要临时存取和操作的数据,打个比方,我们做一顿番茄炒蛋,需要先把番茄洗一洗,然后切好放碗里,鸡蛋打好后要先放另一个碗里,然后加上料酒,加水...

2018-05-12 13:15:34 448

原创 【JAVA零基础入门系列】Day3 Java基本数据类型

  前两篇已经将开发环境搭建完成,如果你已经按之前的教程按部就班的完成了部署,那么世界上最优秀的编程语言之一和世界上最优秀的IDE之一已经出现在你的电脑上(此处应有掌声),如果你还没入门,或者正在台阶上踱步,可能你还不能理解这个“最优秀”的含义,没有关系,这顿美味需要我们来细嚼慢咽才能品尝到它的独特之处。  接下来,就让我们一起来正式揭开Java的面纱。  Java是一门简单、面向对象、高性能、安...

2018-05-12 13:15:04 639

原创 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

  开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程。这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽)。  IDEA的下载地址:http://www.jetbrains.com/idea/   下载的时候,可以选ultimate版,也可以选community版,建议选择ultimate版,下载好以后安装,激活码地址:http://idea.lany...

2018-05-12 13:14:30 680

原创 【JAVA零基础入门系列】Day1 开发环境搭建

一、安装JDK    java的sdk简称JDK ,去其官方网站下载最近的JDK即可。    http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html二、配置环境变量JAVA_HOME     配置JDK安装路径PATH               配置JDK命令文件的位置CLASSPAT...

2018-05-12 13:11:07 1354

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除