Java学习笔记
文章平均质量分 89
流云易采
硕士
展开
-
java中间缓存机制
在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是前缀加(++i),就会“先自加1后赋值(给临时变量)”;如果是后缀加(i++),就会“先赋值(给临时变量)后自加1”。运算最终使用的,并不是变量本身,而是被赋了值的临时变量。 在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是前缀加(++i),就会“先自加1后赋值(给临时变量)”;如果是后缀加(i转载 2014-10-22 16:10:33 · 834 阅读 · 0 评论 -
Java中String为什么被设计成immutable(不可修改的)/final
原文链接:http://www.programcreek.com/2013/04/why-string-is-immutable-in-java/ String是Java中的一个immutable类。immutable类意味着该类的实例将无法被修改。该实例中的所有信息在其被创建时就已经被完全初始化,同时之后也无法再作修改。对于immutable类而言,其有很多优点。1)字符串常量池翻译 2015-12-16 22:24:45 · 1377 阅读 · 0 评论 -
Java内部类问题
一、内部类生成class文件情况:public class A { class C { class G{} } static class D {} void a () { // 注意:方法中的内部类的class文件格式与别的不同 class E{} } interface F {} abstract cla原创 2015-11-04 16:19:32 · 831 阅读 · 0 评论 -
Java进程的创建
Java线程创建有两种形式,一种是继承Thread,一种是实现Runnable接口。 private class NewThread extends Thread { @Override public void run(){ // do Something } } private class NewRunnab原创 2015-08-29 22:09:40 · 1839 阅读 · 0 评论 -
并发和并行,异步与多线程区别
1、并发和并行的区别可由上图形象指出两者的区别:1)定义:并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。来个比喻:并发和并行的区别就是一个人同时吃三个馒头和原创 2015-04-21 09:01:50 · 16325 阅读 · 10 评论 -
Runnable,Callable,Thread,Future,FutureTask关系
1、Runnable和Callable的区别是:(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得(3)call方法可以抛出异常,run方法不可以(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待原创 2015-04-17 10:11:45 · 998 阅读 · 0 评论 -
Java多线程-并发和并行
1、并发和并行的区别可由上图形象指出两者的区别:1)定义:并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。来个比喻:并发和并行的区别就是一个人同时吃三个馒原创 2015-04-17 10:09:22 · 1011 阅读 · 0 评论 -
Java方法重载与重写(静态分派与动态分派)
Java面向对象3个基本特征:继承、封装和多态;多态主要体现在重载和重写;1、静态分派静态分派与重载有关,虚拟机在重载时是通过参数的静态类型,而不是运行时的实际类型作为判定依据的;静态类型在编译期是可知的;1)基本类型以char为例,按照char>int>long>double>float>double>Character>Serializable>Object>...(变原创 2015-04-12 10:40:33 · 2131 阅读 · 0 评论 -
Java虚拟机类加载机制
1、定义虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。2、概述1)在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的;Java天生具有的动态扩展的特性就是依赖运行期动态加载和动态连接这个特点实现的。2)类的生命周期:加载(Loading)->验证(Veri原创 2015-04-09 21:37:21 · 755 阅读 · 0 评论 -
设计模式之Builder模式(建造者模式)
部分转载:http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/19/2599980.html一个人活到70岁以上,都会经历这样的几个阶段:婴儿,少年,青年,中年,老年。并且每个人在各个阶段肯定是不一样的呀,我觉得可以说世界上不存在两个人在人生的这5个阶段的生活完全一样,但是活到70岁以上的人,都经历了这几个阶段是肯定的。实际上这是一原创 2015-04-15 16:02:59 · 1725 阅读 · 0 评论 -
设计模式之OCP原则
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统。 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。Softeware entities like classes,modules and functions should be open for extension but clos转载 2015-04-02 14:28:22 · 886 阅读 · 0 评论 -
Java设计模式面试
无论你是参与Java面试还是C#面试,设计模式和软件设计问题在程序员面试中是必不可少的一部分。编程和设计技两者相得益彰,一名出色的程序员也是一名出色的设计师,他们懂得如何利用代码来解决问题或者软件设计,但是这些技能需要不断提升。这就要求你不断的保持设计理念,无论编程项目的大小,从失败中总结经验。从面向对象的设计原则开始学习是个不错的起点。本文总结了在各种面试过程中经常被提及的一些设计问题。文中翻译 2014-11-05 16:58:17 · 2448 阅读 · 1 评论 -
Java String的hashCode实现
String类中的HashCode实现函数: /** * Returns a hash code for this string. The hash code for a * {@code String} object is computed as * * s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]原创 2015-09-16 09:44:17 · 2123 阅读 · 0 评论 -
Java交换值及中间缓存机制
实现交换int a,b的值的函数,C++可以采用引用或指针传递的方法,当Java不行;因为Java的参数传递机制与C++不同(http://blog.csdn.net/woliuyunyicai/article/details/44096043),如下方法均不能够实现:public void swap(int x, int y){ int temp = x;原创 2015-04-23 09:07:52 · 1017 阅读 · 0 评论 -
设计模式学习
一、设计原则 模式一:策略模式定义了算法族,分别封装起来,让他们之间可以相互替换。此模式让算法的变化独立于使用算法的客户。原则1:将会变化的部分取出并封装起来,使得让其他部分不会受到影响原则2:针对接口编程,而不是针对实现编程。2.1「针对接口编程」真正的意思是「针对超类型(supertype)编程」2.2 接口编程的实例:原创 2014-10-29 22:02:06 · 785 阅读 · 0 评论 -
Java反射机制
反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。这个能特定我们不常看到,但是在其他的比如C或者C++语言中很不就存在这个特性。一个常见的例子是在JavaBean中,一些组件可以通过一个构造器来操作。这个构造器就是用的反射在动态加载的时候来获取的java中类的属性的。转载 2014-11-05 10:52:36 · 679 阅读 · 0 评论 -
Java中abstract class 和interface的区别
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意。其实,两者转载 2015-03-15 20:23:50 · 797 阅读 · 0 评论 -
继承中父类子类有相同的变量与方法情况
/*父类和子类之间的关系*//*对于子类父类相同变量与相同方法的问题相同方法:由于多态及运行时类型的知识知,与其运行时类型有关相同变量:由编译时类型决定,可以从内存角度考虑,对于Child需要保存两个类型的str, 一个是Father的,一个是Child的。下面(1)句处由子类向父类隐式转型,会发生 内存截断,仅保留了Child继承的Father的public原创 2015-03-26 22:28:31 · 1587 阅读 · 0 评论 -
Java反射机制
0、Java反射机制的定义: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。1、反射机制的作用:1)在运行中分析类的能力2)在运行中查看对象3)实现通用的数组操作代码4)利用Method对象(这个对象很想C+原创 2015-04-03 15:58:17 · 894 阅读 · 0 评论 -
Java中子类父类变量访问问题
变量(实例变量、类变量、常量)及类方法均与编译时类型相关实例方法与运行时类型相关(故而产生多态)class A{ public static int h = 10; public int n = 10; public static final int m = 10; public static void put()原创 2015-04-07 20:58:03 · 1387 阅读 · 0 评论 -
Java变量初始化问题
class AMMM{ public final static int CHANG = 10;//注意并不是修饰符为final+static的域就是常量, //比如:final static int A = Random.nextInt();它并非编译期常量 publ原创 2015-04-07 15:32:11 · 740 阅读 · 0 评论 -
浅复制与深复制
浅复制与深复制1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 ⑵深复制(深克隆)被复制对象的所有变量都含有与转载 2015-04-12 10:35:16 · 771 阅读 · 0 评论 -
Java数组
1、注意:int[] array = newint[-1];这样定义仍可以编译通过,只是在运行时会抛出java.lang.NegativeArraySizeException异常,这是一个运行时异常,通俗讲就是代码不运行到这一行就不会出现问题。(注:int[] array = newint[0];是合法的)但类似的定义如int i[3][-1]则是会在编译期报错原创 2015-04-13 14:30:48 · 799 阅读 · 0 评论 -
Java异常
0、C++异常处理机制基于Ada,Java异常处理则是基于C++1、Java异常类层次结构所有异常类都继承自Throwable类,并有两个主要分支:Error和Exception;Error类描述Java运行时系统的内部资源和资源耗尽错误,表示编译时和系统错误;Exception类又包括两个主要分支:RuntimeException;和其他异常(如IOException原创 2015-04-13 14:30:00 · 834 阅读 · 0 评论 -
Java多线程——死锁
一、死锁 0、死锁的定义:(资源死锁) 如果一个进程集合中的每个进程都在等待只能有该进程集合中的其他进程才能引发的事件,那么该进程集合就是死锁的。1、产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争夺有限的资源而陷入死锁。其次,进程运行原创 2015-12-21 09:52:22 · 976 阅读 · 0 评论