Java复习总结
文章平均质量分 84
本人从事两年多的Web应用开发,先准备跳槽找工作,这段时间准备把Java的知识点都复习总结一遍过来,也会包括一些面试题。
漫长学习路
为了完善自己的代码,我会尽自己最大的努力
展开
-
java强引用,软引用,弱引用,虚引用
用了Java怎么长时间一直不知道原来Java还有四种引用类型,这个引用类型和我们平常说的可不一样。这里的引用类型不是指数据类型的一种,而是指Java中的引用所分的四种类型。强引用: Java中的引用,有点像C++的指针。通过引用,可以对堆中的对象进行操作。在某函数中,当创建了一个对象,该对象被分配在堆中,通过这个对象的引用才能对这个对象进行操作。StringBuffer str=new Strin原创 2016-08-21 17:22:32 · 4663 阅读 · 3 评论 -
Java字符串优化处理
字符串是软件开发中最为重要的对象之一。而且它在内存中占据了很大的空间块。因此如何高效的处理字符串,必将是提高系统整体性能的关键。字符串对象及其特点String对象是Java语言中重要的数据类型,但它并不是Java的基本数据类型,在Java语言中,String对象可以认为是char数组的延伸和进一步封装。它主要有3部分组成:char数组,偏移量和string的长度。char数组表示Strin原创 2016-08-02 19:53:30 · 2631 阅读 · 0 评论 -
HashMap源码深入解析
HashMap是Java Colletion Framework的重要成员,HashMap是Map接口的常用实现类,在我们平常开发时会经常使用到Map,在我们面试的时候也会问到map的存储原理,今天特地来总结一下;创建HashMapHashMap map = new HashMap(); 使用HashMap那么首先你得去创建一个HashMap,在创建的时候会发生什么事情啦?让我们跟着源码去原创 2016-07-25 20:13:32 · 2086 阅读 · 0 评论 -
Java高级特性之解析XML
XML与Java的渊源:我们来看XML是网络传输的一种数据规范,或者也叫可扩展的标记语言。可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML原创 2016-06-14 20:12:18 · 4308 阅读 · 3 评论 -
java对象流与序列化
对象序列化Java语言有一种非常通用的对象序列化机制,它可以将任何对象写出到流中,并在之后将其读回。序列化:把Java对象转换为字节序列的过程。反序列化:把字节序列恢复为Java对象的过程。具体实例:我们先创建一个学生对象:/*/ * 学生对象 */public class Student implements Serializable{ private Stri原创 2016-06-12 19:40:56 · 1699 阅读 · 0 评论 -
Java String 对 null 对象的容错处理
前言最近在读《Thinking in Java》,看到这样一段话:Primitives that are fields in a class are automatically initialized to zero, as noted in the Everything Is an Object chapter. But the object references are initi转载 2016-06-02 10:28:17 · 1726 阅读 · 0 评论 -
Java synchronized的实现原理与应用
在多线程中synchronized应该是我们运用的最多的,很多人会称呼它为重量级锁。java中的每一个对象都可以作为锁。具体表现为以下三种形式。对于普通同步方法,锁是当前实例对象。//图书class Books { private int id;// 图书ID private String name; // 图书名称 private int number; // 图书数量 //原创 2016-04-04 21:22:36 · 3009 阅读 · 0 评论 -
深入理解Java内存模型——volatile
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L转载 2016-04-04 20:07:14 · 1070 阅读 · 0 评论 -
Java并发机制之Volatile关键字
在多线程并发编程中synchronized和volatile都是很重要的关键字,简单来说,synchronized保持和代码块中代码的同步下,valatile保证了共享变量的可见性。volatile的定义与实现原理:Java语言允许线程访问共享变量,为了确保共享变量能被准备和一致的更新,线程应该确保通过排它锁单独获得这个变量。java语言提供了volatile,我们可以把它当成一个轻量级的原创 2016-04-03 22:27:54 · 1431 阅读 · 0 评论 -
Java对List集合的排序
由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一。ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在添加和移除元素的时候进行动态的扩展和缩减。使用Collections工具类进行排序:使用Collections排序非常简单,我们只需要把实现了Comparable接口的类传入里面调用一下C原创 2016-01-24 17:07:47 · 22998 阅读 · 0 评论 -
线程的生命周期及状态的管理
线程的生命周期:线程是一个动态执行的过程,它也有一个从产生到死亡的过程。(1)生命周期的五种状态新建(new Thread)当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。例如:Thread t1=new Thread();就绪(runnable)线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资原创 2015-06-02 16:20:02 · 3209 阅读 · 0 评论 -
并发编程概念篇
什么是并发编程啦,这貌似是一个很深奥的话题,其实并发离我们的生活很近,我们经常会并发的去做一件事情。我觉得要学好一件事情首先是要学会它的思想Learn its ideas;了解并发之前,先分清楚进程和线程。进程就是指我们的程序所运行的一个个任务,原创 2015-05-23 08:41:59 · 1178 阅读 · 0 评论 -
java io流之拷贝文件
今天写了一个小程序,对比了一下拷贝文件的三种方式。然后再比较一下所用的时间.首先是第一种方式,也是最简单的一种,那就是用File流;//先判断一下有没有此文件,如果没有则返回提示信息//先判断一下有没有此文件,如果没有则返回提示信息if(!src.exists()){System.out.println("很抱歉没有此目录");return;}//要拷贝的源文件原创 2015-03-31 10:40:15 · 998 阅读 · 0 评论 -
java IO流
java 输入输出流是一个比较特别的部分,因为我们无时无刻不在用到输入输出,但是我们却看不到明显的运行效果。接下来就了解一下输入和输出的概念。输入:使用输入机制来接收外部输入过来的数据,比如键盘上的打印的数据,磁盘,文件上输入过来的数据;输出:顾名思义,就是我们把我们运行程序中的数据给输出到页面,或者输出到移动设备上。如果要把一个移动设备上的东西,输出到用户界面,就得先使用输入后使用输出。原创 2015-05-26 08:29:00 · 1257 阅读 · 0 评论 -
Java集合框架
Java集合是Java非常重要的一个概念,也是我们经常用到的。在没有Java集合框架的时候,我们一般都使用数组,但数组的长度是不可变的,一旦在初始化数组的时候声明了长度,那么就有了固定的大小,在面对实际场景时,我们往往需要对数组进行扩展;而且数组无法表示一种映射关系,例如个人信息:姓名-张三。这个时候就需要引入我们的集合框架了。很难给一个集合框架下一个定义,不过我们可以这样理解,集合就是把具有原创 2015-05-23 09:01:21 · 1102 阅读 · 0 评论 -
关于Java性能的9个谬论
Java的性能有某种黑魔法之称。部分原因在于Java平台非常复杂,很多情况下问题难以定位。然而在历史上还有一种趋势,人们靠智慧和经验来研究Java性能,而不是靠应用统计和实证推理。在这篇文章中,我希望拆穿一些最荒谬的技术神话。1.Java很慢关于Java的性能有很多谬论,这一条是最过时的,可能也是最为明显的。确实,在上世纪90年代和本世纪初处,Java有时是很慢。然而从转载 2015-05-21 14:23:29 · 1328 阅读 · 0 评论 -
Java垃圾回收
网上看了很多关于垃圾回收的资料,总觉得说的很隐晦,不是同俗易懂,现在自己也来探讨下Java的垃圾回收机制;网上说的都太复杂了,我决定把Gc垃圾回收尽量说的简单一点;首先是要明白垃圾回收的意义,说简单一点,我们应该都玩过电脑吧,大家都知道,电脑的可用内存是越大运行速度就越快,玩起游戏来也会很爽,但是我们的电脑内存不是无限的,所以我们的时常清理一下垃圾,或者卸载一些我们不想用的软件,从而来达到翻译 2015-05-21 10:46:44 · 1027 阅读 · 0 评论 -
Java变量,修辞符,关键字
Java的变量主要分为两类,一类是成员变量,一类是局部变量,在我们的Java里面没有全局变量这个说法;原创 2015-05-19 22:03:40 · 1446 阅读 · 0 评论 -
流程控制
就像任何有感知的生物一样,在Java这个编程世界里面,我们也可以控制自己的程序,让他判断和选择。正如诗中所说鱼我所欲也 熊掌亦我所欲也 舍鱼而取熊掌者也 生我所欲也 义亦我所欲也 舍生而取义者也。如果一段JAVA代码中没有任何的流程控制语句,那么这段代码就会从上而下执行,那么我们说这段代码就是顺序结构。在Java里面我们执行控制的语句有分支结构,其中分支结构最常见的就是if-else和sw翻译 2015-05-20 10:08:53 · 871 阅读 · 0 评论 -
JAVA的内存管理
网上总是有很多五花八门的面试题,可是回答的都不是很深入,因为自己将要面临着找工作,所以专门来整理一下自己的思路,和面试题。首先第一个问题,也是问的比较普遍的就是你了解java内存吗?java内存分为哪几种?解释内存中的栈(stack)、堆(heap)和静态存储区的用法。我们先来看一看深入理解Java虚拟机的第2章内容概述: 对于从事C和C++程序开发的开发人员来说,在内存翻译 2015-05-09 10:08:29 · 1031 阅读 · 1 评论 -
数据类型与运算符
我们都知道Java是强类型语言,意思是每个变量和表达式在编译期间就确定了的语言。Java语言主要分为两种一种是基本数据类型,一种是引用类型。每种类型必须先声明后使用,类型限制了他所赋予的值的不同,程序在编译时会进行语法检查,这样会使我们的程序更加严谨,安全。数值型:1)整型:byte 1个字节;short 2个字节;int 4个字节;long 8个字节。 2)浮点型:原创 2015-05-19 09:36:38 · 1073 阅读 · 0 评论 -
万物皆对象
这里引用Java编程思想的一句话叫所有语言的最终目的都是为了提供一种抽象方法。为什么会怎么说啦,因为我们的Java语言就是抽象了JVM这个虚拟机,从而在一个虚拟空间里面可以解决我们现实生活中的问题。在我们的的生活中每个人都是独一无二的,每个人的生活价值观也都会有所不同,所理解的对象也会有所不同。按照生物书上所说对象,分为两种,一种是能动的自然,一种是非动的自然。按照历史来归类,我们可以理解为,原创 2015-05-18 14:33:54 · 1846 阅读 · 0 评论 -
java核心JVM
我认为再学习JAVA语言之前最重要的是先了解一下JVM,和java实现跨平台的原理,只有懂得的其原理,才能更好的去学习JAVA。我们都知道Java语言是一种面向对象的语言,同时他也是一种半解释半编译性语言。这都是java在编程语言中所占有的角色。为什么称java为半编译半解释性语言啦,这就和Java的虚拟计算机jvm有关,他负责把我们的Java语言编译成一种.class的文件,这种文件在jvm原创 2015-05-18 13:26:20 · 964 阅读 · 0 评论