首页 > java

Java入门到精通


java零起点编程教程.精心挑选了java中含金量高的知识点.
Window安装JDK图文教程.windows搭建java开发环境,配置java环境变量图文教程.
java程序HelloWord起源,入口方法main方法介绍.java与javac命令介绍
代码注释也叫做注解,分为单行注释和多行注释.注释只需要人来读懂而计算机不执行.
java变量分为基础类型变量和引用类型变量,数字类型变量,布尔(boolean)变量,字符串类型变量及变量作用域
java常用文本编辑工具及Java集成开发环境Intelij IDEA的安装步骤.Intelij IDEA配置主题,导入java项目.
java算术运算符,复合运算符,关系运算符,条件运算符,逻辑运算符,自增/减运算符,运算符优先级
java方法的定义.方法修饰符,静态方法static,方法返回值类型,方法命名规则,方法参数,return关键字.
java分支语句if-else,跳转语句switch,循环语句for,while,do-while.continue,break关键字.死循环的介绍.
java对象概念,class,this, package,import关键字.java命名空间介绍.
java数组是同一种类型数据,固定长度的集合.数组初始化,数组默认值.for循环及增强for循环遍历数组.
java语言中static变量修饰的成员变量和成员方法称为静态变量和静态方法.静态变量与实例变量区别,静态变量应用场景.final关键字.
java面向对象编程的三大特点:封装,继承和多态.方法参数的值传递与引用传递.抽象方法与抽象类,接口.对象实例类型判断.this,super关键字.值传递与引用传递.
java包装类也翻译为外覆类或数据类型类.包装类对应表,包装类用法,自动装包/拆包.
java常用集合类接口:Collection,List,Set,Queue,Map介绍.HashMap,HashSet,LinkList,ArrayList,Vector等集合类的遍历.
Java异常机制及java异常框架介绍.抛出/捕获异常,自定义异常.throw,try,catch,finally关键字.
2进制与16进制,移位运算符,位运算是通过二进制计算的方式来改变数据.位运算符可以分为逻辑运算符(包括~,&,|和^)及移位运算符(包括>>,<<和>>>).位运算符的优先级.
java转义字符介绍.Unicode转义字符,转义字符表
java线程介绍,启动线程,线程的状态,线程阻塞与线程死锁.synchronized关键字用法.Lock对象实现线程同步.
java设计模式分为:工厂模式,抽象工厂模式,单例模式,建造者模式,原型模式,适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式,策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式.
java编码规范的目的是写出更优雅高效简介的代码.列举了一些示例来说明java如何写出优雅的代码.
jvm参数标准配置选项.jvm参数非标准配置选项.jvm参数性能优化示例.jvm参数建议配置.
在java中final关键字有第一无二的特性,就是只可以赋值一次,一旦赋值,就无法改变其值。利用好这个特性可以写出非常好的代码。
我在自己的项目中很少使用transient关键字。这个关键字的作用是和序列化相关的。JDK的源码中ArrayList类用到了transient关键字. 整理一下这个关键字相关的内容.

JDK8新特性


java JDK8新增语法特性:函数接口(Functional Interface),Lambda表达式,方法引用(Method Reference),default方法(defender方法),批量数据操作(bulk dataoperations).
JDK8提供了函数式接口(Functional Interface)是指只有一个抽象方法的接口.这种类型的接口也称为SAM(Single Abstract Method).
java拉姆达(Lambda)表达式由来.命令式编程与函数式编程.java为什么会引入拉姆达(Lambda)表达式.java Lambda表达式的优点.
java拉姆达(Lambda)表达式语法及示例.java拉姆达(Lambda)表达式对集合排序.Java拉姆达表达式在流(stream)式操作中的应用.
java从jdk8.0开始提供了default方法.java default方法应用.
java方法引用(method references)的概念.java方法引用的种类.静态方法引用,某个对象的方法引用,特定类的任意对象的方法引用.
java并行和串行处理数据介绍.java批量操作接口,java流式(stream)API.中间操作与终结操作.

附录


java中的@Override是伪代码,表示覆写父类方法.可用于代码检查,验证父类是否有该方法.
java编码规范制定原则.引为了写出高效,优雅的代码制定本规范.
java保留关键字(reserved word)指在系统已经定义过的英文单词.详细的java保留关键字列表及关键字意义.
linux安装jdk,搭建java开发环境详细步骤.linux,Ubuntu,CentOS配置java环境变量.
阿里巴巴java开发手册正式版下载.本手册纸质版书籍已经出版,感兴趣的同学可以买一个纸质书籍.

Intelij IDEA


Intelij IDEA在跑大内存的程序时.会出现java.lang.OutOfMemoryError异常,解决办法是设置-Xms和-Xmx参数.
Intelij IDEA格式化代码目录方法及格式化代码快捷键.WebStom,Android Studio,JetBrains PyCharm格式化代码目录.

Java中文手册


JDK6.0中文手册API在线文档.
JDK8中文手册API在线文档.
JDK9中文手册API在线文档.

FAQ


从JDK1.5开始加入了ConcurrentHashMap,在面试的过程中我问过很多程序员,HashpMap与ConcurrentHashMap的区别是什么呢。我得到的回答一般都是HashpMap不是线程安全的,ConcurrentHashMap是线程安全的。这个结论很笼统。下面我来详细的举例说明他们之间的区别。
HashMap集合类中有put()方法,还提供了一个putIfAbsent方法,在项目中一个同事用错putIfAbsent方法,从而导致了一个比较严重的bug。在本文中总结了一下这两个方法的区别与应用场景, 避免用错。
在实际项目中会用根据需求用到ArrayList和数组之间的转换。比如往MongoDB数据库中存入一个整型数组(int[]),读取的时候可以得到一个ArrayList<Integer>,无法直接得到一个整型数组(int[]).这个时候就会需要用到ArrayList转化为数组.
在我做的一个模块中,会用到遍历一个集合类,遍历的同时根据条件判断集合中的对象,如果不符合条件则将该对象从集合中移除。这种情况很容易产生ConcurrentModificationExceptionException,这个异常会导致程序停止继续运行,所以遇到这个异常必须要处理来保证程序正确运行。
随机数Random类是在做随机规则时需要用到的类。用途很广,比如随机抽奖,随机密码,随机验证码,随机奖励等,随机数,计算概率等。

程序优化专题


在编码中,我们像竞技运动员一样追求更快的速度。追求最优的算法,看到一些同学的编码质量停留着实现功能的层面,距离最优编码相差很远。所以一直想整理一下自己在实际项目遇到的问题和效率优化的文章和大家分享一下。本文是该系列文章的第一篇。for循环的效率优化。
Java语言中常用的数组拷贝方式有:for循环拷贝,通过Arrays.copyOf()方法,System.arraycopy和clone()方法拷贝。
部分程序员对应浮点数(float,double)做运算的时候,会有一个误区就是浮点数运算效率比整型运算效率低很多。产生这个认识的原因是因为以人的角度来考虑这个问题,做小数除法要比做整数除法麻烦一些而得出的。通过实际代码来比较一下这差异。
3目运算符也称条件运算符。根据条件true或者false,选择对应的值。在使用3目运算符的优势是代码简介,将一个if-else语句简化为了一行代码。效率略低于if-else语句。
在实际项目大部分采用linux系统作为生产环境的服务器操作系统。没有详细的数据,从自身角度看来,我们所经历的项目的生产环境超过90%采用linux系统。在生产环境中,不方便采用jprofile这样比较消耗效率的第三方法检测工具,这样会严重拖慢程序运行速度。我们可以采用以下的方式来找出效率瓶颈。
java项目部署到服务器上以后,我们有时需要远程查看java程序的运行情况。这个时候我们可以使用jdk里面自带的jConsole工具。
在高并发生产环境中,日志是个相当重要的记录。但也是效率消耗的'油老虎'。针对这个效率消耗,来优log4j配置。