随笔分类 - 基本概念
Java基本概念
摘要:Java反射API Java反射指的是在运行状态时,能够获取类的属性和方法或者修改类运行时行为的过程。 java.lang.Class类提供了很多方法用于获取元数据、检查和改变类运行时的行为。 Java的反射主要涉及java.lang和java.lang.reflect包下的类。 反射应用场景举例
阅读全文
摘要:前言 译文链接:http://www.journaldev.com/2366/core-java-interview-questions-and-answers Java 8有哪些重要的特性 Java 8发布于2014年3月,这块内容在Java面试中非常常见。如果你能清晰的回答这方面的问题,说明yo
阅读全文
摘要:先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义; Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输,一般当我们使用缓存cache(内存空
阅读全文
摘要:创建对象 构造方法创建对象 在Java中,创建对象常用的方法是通过公有构造方法创建; 举个例子:如下,是Boolean类的一个构造方法,以及通过该构造方法创建一个Boolean对象; 静态工厂方法创建对象 其实,创建对象还有另外一种方法,通过公有静态工厂方法来创建对象,不过这种方法往往容易被程序员忽
阅读全文
摘要:什么是基本数据类型 就是我们在编程的时候经常需要用到的数据类型,如整型,浮点型等,把这些数据类型专门拿出来特殊对待,并想象成所谓的“基本类型”。 Java中有哪些基本数据类型 JAVA基本类型特点 基本数据类型速度比其对应包装类快; //网上有篇文章做过测试,证明比包装类快,有兴趣可参考阅读 基本数
阅读全文
摘要:前言 翻译自programcreek; 典型的Java项目通常会依赖一些第三方库,本文总结了一些最受欢迎的Java库,这些类库在各种应用程序中被广泛使用; 当然,Java SDK是最广泛使用的Java库,这个不用多说,本文的关注点是第三方库; 这份清单可能不是很完美,如果你觉得有些类库也应该被列举出
阅读全文
摘要:前言 好久没翻译simple java了,睡前来一篇。 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在Java中,对象序列化指的是将对象用字节序列的形式表示,这些字节序列包含了对象的数据和信息,一个序列
阅读全文
摘要:什么是内部接口 内部接口也称为嵌套接口,即在一个接口内部定义另一个接口。举个例子,Entry接口定义在Map接口里面,如下代码: 为什么要使用内部接口 如下是一些强有力的理由: 一种对那些在同一个地方使用的接口进行逻辑上分组; 封装思想的体现; 嵌套接口可以增强代码的易读性和可维护性; 在Java标
阅读全文
摘要:这个列表总结了10个Java开发人员最常犯的错误。 Array转ArrayList 当需要把Array转成ArrayList的时候,开发人员经常这样做: Arrays.asList()会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类的静态内部类,并不是java.u
阅读全文
摘要:Java泛型是JDK 5引入的一个特性,它允许我们定义类和接口的时候使用参数类型,泛型在集合框架中被广泛使用。类型擦除是泛型中最让人困惑的部分,本篇文章将阐明什么是类型擦除,以及如何使用它。 一个常见错误 以上代码看起来是没问题的,因为String是Object的子类。然而,这并不会工作,编译不会通
阅读全文
摘要:以下是12个关于Java数组最常用的方法,它们是stackoverflow得票最高的问题。 声明一个数组 打印一个数组 根据数组创建ArrayList 判断数组内部是否包含某个值 连接两个数组 声明一个内联数组(array inline) 根据分隔符拼接数组元素(去掉最后一个分隔符) ArrayLi
阅读全文
摘要:在本篇文章,我将会使用一个例子展示什么是实例变量初始化块,实例初始化块和静态初始化块,然后说明在Java中实例初始化块是如何工作的。 执行顺序 查看下面的代码,你知道哪个先执行吗? 结果输出; 实例初始化块是如何工作的 上面的实例初始化块包含了一个打印语句。为了理解它是如何工作的,我们可以将它看成一
阅读全文
摘要:译文链接 http://www.programcreek.com/2014/01/java-varargs-examples/ 什么是Java可变参数 可变参数是Java 1.5引入的一个特性,它允许一个方法接受任意数量的参数。 可变参数是如何工作的 当使用可变参数的时候,会先创建一个数组,其数组长
阅读全文
摘要:前言 在Java中,字符串是一个不可变的类,一个不可变的类指的是它的实例对象不能被修改,所有关于这个对象的信息在这个对象被创建时已初始化且不能被改变。 不可变类有很多优势,这篇文章总结了字符串类之所以被设计成不可变类的原因,涉及内存模型,线程同步,数据结构等知识。 字符串常量池的需求 字符串常量池是
阅读全文
摘要:以下内容来自维基百科,关于静态类型检查和动态类型检查的解释: 静态类型检查:基于程序的源代码来验证类型安全的过程; 动态类型检查:在程序运行期间验证类型安全的过程; Java使用静态类型检查在编译期间分析程序,确保没有类型错误。基本的思想是不要让类型错误在运行期间发生。 以下代码是一个例子,理解了他
阅读全文
摘要:什么是Java别名(aliasing) 别名意味着有多个别名指向同一个位置,且这些别名有不同的类型。 在下面的代码例子中,a和b是两个不同的名字,有不同的类型A和B,B继承A 在内存中,它们指向了同一个位置,如下: 内存中的该位置同时被a和b指向,在运行期间,方法的调用由实际存储的对象来决定。 Ja
阅读全文
摘要:下面是Java中10个最常见的关于字符串的问题。 怎样比较字符串?使用==还是equals() 简单的说,“==”用于判断引用是否相等,equals()用于判断值是否相等。除非你要比较两个字符串是否是同一个对象,否则你应该使用equals()方法。如果你知道字符串驻留的概念会更好。 对于敏感信息优先
阅读全文
摘要:对于每个Java程序员来说,HelloWorld是一个再熟悉不过的程序。它很简单,但是这段简单的代码能指引我们去深入理解一些复杂的概念。这篇文章,我将探索我们能从这段简单的代码中学到什么。如果你对HelloWorld有独到的理解,请留下你的评论。 HelloWorld.java 为什么所有东西都是从
阅读全文
摘要:这是Java中一个很经典的问题,在stack-overflow上有很多类似的问题,然而很多回答都是错的或者回答不完整;如果你不深入思考的话,会认为这个问题很简单,但是当你深入下去,会发现这个问题很容易让人产生困惑。 一段有趣且让人困惑的代码 结果打印: C++版本如下: 打印结果: 常见有误的理解
阅读全文
摘要:下面是一个很简单的例子,关于Java中的多态:方法重载和方法覆盖; 多态指的是方法在不同的时刻表现出不同的形式;在编译期间,这被叫做方法重载;方法重载允许相关的方法被同一个方法名字调用,这有时候被叫做ad-hoc polymorphism; 那么对于编译器来说,如何生成方法代码以便能被正确调用呢?
阅读全文
