Java高级系列
文章平均质量分 93
RonTech
执着、认真;喜欢技术,但更热爱技术+行业;热爱生活,但更喜欢与人交往;喜欢学习,但更注重与人分享。
展开
-
Java高级系列——如何使用、何时使用泛型(Generics)?
一、介绍泛型的概念代表了对类型的抽象(C++开发人员熟知的模板)。它是一个非常强大的概念,它允许开发抽象算法和数据结构,并提供实体类型以供后续操作。在早期的Java版本中并未出现泛型,泛型是在Java 5发布之后被添加到Java中的。从那以后,可以说泛型彻底改变了Java程序的编写方式,提供了更强大的类型保证,使代码更安全。本文我们将会从接口、类、和方法的开始去讨论有关泛型的用法。泛型提供原创 2018-01-10 18:32:15 · 6079 阅读 · 0 评论 -
Java高级系列——强引用、软引用、弱引用、虚引用
强引用只要引用存在,垃圾回收器永远不会回收Object obj = new Object();//可直接通过obj取得对应的对象 如obj.equels(new Object());而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。软引用非必须引用,内存溢出之前进行回收,可以通过以下...转载 2018-06-15 21:37:20 · 599 阅读 · 0 评论 -
Java多线程编程——线程创建方式
在Java中,创建线程有以下几种方式:通过实现 Runnable 接口;通过继承 Thread 类本身;通过 Callable 和 Future 创建线程。通过实现 Runnable 接口来创建线程创建线程最简单的方式就是直接实现Runnable接口,该接口定义了一个run()方法,在我们的实现类中通过对该方法的实现来定义我们自己的任务,这样使得我们在创建并启动线程之后能够执行...原创 2018-04-26 17:43:01 · 317 阅读 · 0 评论 -
Java多线程编程——为什么需要多线程编程
谈到为什么需要多线程编程,可能需要从并发这个概念的历史来说起。在很久以前,计算机并没有操作系统,同一个时刻他们只能执行一个单独的程序,而且这些程序直接访问所有的计算机资源。在计算机刚面世的那个年代,程序的这种处理方式其实并没有什么不对。但是随着计算机以及软件的快速发展,操作系统以及多核处理器的诞生,这使得同一时刻只处理一个任务让计算机的效率变得很低,并且不能充分发挥计算机的能力,达到充分利用计...原创 2018-04-26 17:37:38 · 1803 阅读 · 0 评论 -
Java高级系列——散列与散列码
使用散列的目的:想要使用一个对象查找另一个对象。散列的价值:散列的价值在于速度,散列使得查询得以快速进行。设计hashCode()时最重要的因素:无论何时,对同一个对象调用hashCode()都会产生同样的值。如果将一个对象用put()添加进HashMap时产生一个hashCode()值,而用get()取出时却产生了另外一个hashCode()值,那么就无法重新取得该对象了。想要使ha...原创 2018-04-04 13:35:31 · 2016 阅读 · 0 评论 -
Java高级系列——不得不说的对象序列化(serialize)
1、什么是Java对象序列化?Java的对象序列化是将那些实现了Serializable接口的对象转化成一个字节序列,并能够在以后将这些字节序列完全恢复成原来的对象。简单来说序列化就是将对象转化成字节流,反序列化就是将字节流转化成对象。对象必须在程序中显示的序列化(serialize)和反序列化(deserialize)。2、序列化的作用序列化的主要用途主要有两个,一个是对象持久化...原创 2018-04-09 16:18:12 · 10730 阅读 · 1 评论 -
Java高级系列——File类
在做应用开发的过程中,文件是我们经常需要接触到的东西。在Java中,File是一个相对重要的类,在很多文件处理上我们都会用到该类以及相关的API。但是,从名字上来看,我们可能会认为,File所代表的应该是一个文件,实则不然,在Java中,File代表一个具体的文件名称,也代表一个具体目录的名称。如果要对File所代表的文件进行操作,我们需要借助Java中的输入和输出流的操作,这里我们不谈输入流和输...原创 2018-04-07 16:48:36 · 425 阅读 · 0 评论 -
Java高级系列——通用编程指南
一、介绍本文我们将会继续讨论Java中一些优秀且强大的编程风格中的一些通用规则。我们将要讨论的这些规则中的一些我们在前面的文章中已经提及,然而为了提高Java开发者的相关技巧,有很多新的实战建议本文我们将会讨论。二、变量作用域(Variable scopes)在如何设计类和接口一文我们已经讨论过在设计类和接口时如何使用可见性规则和可访问性规则来限制他们的作用域。但是我们没有讨论过局部变原创 2018-01-19 16:14:52 · 1148 阅读 · 0 评论 -
Java高级系列——如何高效的编写方法(methods)
一、介绍本文我们将会花一些时间从不同的方面去讨论一下Java中方法的设计和实现方式。在本系列前面的文章中我们已经看到,在Java中编写一个方法非常的简单,但是在编写方法时掌握一些关键的要素可以让方法可读性更强而且更加高效。二、方法签名(Method signatures)我们已经知道,Java是面向对象语言。因此,Java中的每个方法属于类的实例(static方法属于类本身),每个方法原创 2018-01-17 13:44:23 · 4748 阅读 · 1 评论 -
Java高级系列——何时使用、如何使用异常(Exceptions)
一、介绍在Java中,异常是一个非常重要的工具,在程序流中异常可以发出一些反常的(异常的)情况并阻止程序进行更深入的执行。自然地,异常情况可能是致命的(程序不能执行任何操作并且会终止),也可能是可恢复的(程序可以继续执行,但是有些功能可能不可用)。本文我们将会阐述一些使用异常的经典场景,讨论Checked Exceptions和Unchecked Exceptions,并且接触一些不太常见原创 2018-01-23 10:56:14 · 7042 阅读 · 0 评论 -
Java高级系列——注解(Annotations)
本系列文章的这一部分我们将会介绍Java 5版本引入的除泛型和枚举之外的另外一个强大特性:注解,可以将注解看成一种特殊的接口。注解是一种特殊种类的元数据,它能够关联Java语言中不同元素和结构。有意思的是,在Java生态系统中大多数使用样板XML描述符的地方,注解在消除这些XML描述符上做出了很大的贡献。注解引入了新的,类型安全以及非常强健的配置和个性化技术。原创 2018-01-13 17:13:44 · 13441 阅读 · 0 评论 -
Java高级系列——枚举(Enums)
一、介绍本系列文章的这一部分我们将会介绍Java 5版本之后引入的除泛型之外的另外一个强大特性:枚举。可以将枚举看成一种特殊的类,并且可以将注解看成一种特殊的接口。枚举的思想很简单,也很方便:它代表了一组固定的常量值。实际上,枚举经常用来设计一些状态常量。比如,星期几就是枚举的一个最好例子,因为他们被限制在周一、周二、周三、周四、周五、 周六和周日。二、枚举作为特殊的类在枚举被引入原创 2018-01-12 15:56:51 · 21011 阅读 · 0 评论 -
Java高级系列——使用所有对象的通用方法
本文我们介绍equals,hashCode,toString和clone方法的使用,其他的方法我们将会在后续的多线程最佳实战的文章中细说。原创 2018-01-03 17:48:47 · 1929 阅读 · 0 评论 -
Java高级系列——如何创建和销毁对象
本系列文章我们我们将会覆盖一些高级的Java概念,我们假设你对Java语言已经有一些基础知识。本系列文章并不是一个完整的参考,而是一个将您的Java技能提升到下一个级别的详细指南。Java是面向对象的编程语言,所以新实例(objects)的创建可能是它最重要的概念之一。在新的类实例中构造器(Constructors)扮演了非常核心的角色,Java对于构造器(Constructors)的定义提供了很多方案。原创 2017-12-30 14:28:55 · 15535 阅读 · 1 评论 -
Java高级系列——如何设计类和接口
一、介绍无论你使用哪一种编程语言(在这里Java也不排除),遵循一种好的设计规则对于写出清晰、易于理解、可测试、长生命周期以及易于维护的代码来说非常关键。在本系列文章的这一部分我们将会讨论Java语言提供的基础构件和引进的一些设计规则来帮助大家在项目研发过程中做出最好的设计决策。确切的讲,我们将会讨论接口(interfaces)和接口默认方法(interfaces with default原创 2018-01-06 14:27:55 · 14627 阅读 · 1 评论 -
Java高级系列——异常(Exception)
在解释Java中的异常时,首先我们来看一张图 上图是我们Java中,异常类的一个继承关系图,从图中我们可以看到Java标准库内构建的这些通用的异常,他们都是以Throwable为顶层父类。Throwable又派生出Error类和Exception类。错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该...原创 2018-06-16 10:00:49 · 1429 阅读 · 0 评论