Java基础
文章平均质量分 71
完美世界xx
Happiness is more than pleasure without pain
展开
-
JVM如何理解Java泛型类(转)
一个很典型的泛型(generic)代码。T是类型变量,可以是任何引用类型:public class Pair{ private T first=null; private T second=null; public Pair(T fir,T sec){ this.first=fir;转载 2015-05-30 16:46:31 · 430 阅读 · 0 评论 -
类加载机制
类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为转载 2015-04-06 13:13:53 · 505 阅读 · 0 评论 -
Java程序员面试中的多线程问题
英文原文:Top 50 Java Thread Interview Questions Answers for Freshers, Experienced Programmers 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java 语言一个重要的特点就是内置了对并发的支持,让 Java 大受企业和程序员的欢迎。大多数待遇丰厚的 Java 开发职位都要求转载 2015-04-22 19:04:21 · 612 阅读 · 0 评论 -
JAVA内存相关
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。1.java是如何管理内存的java的内存管理就是对象的分配和释放问题。(其中包括两部分)分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间。释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化原创 2015-04-12 18:16:38 · 381 阅读 · 0 评论 -
Java垃圾回收机制
Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚原创 2015-04-06 20:48:08 · 346 阅读 · 0 评论 -
Java线程安全和非线程安全
ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuffer是线程安全的什么是线程安全?线程安全和非线程安全有什么区别?分别在什么情况下使用?非线程安全是指多线程操作同一个对象可能会出现问题。而线程安全则是多线程操作同一个对象不会有问题。线程安全必原创 2015-04-10 22:45:04 · 622 阅读 · 0 评论 -
Java并发编程:Thread类的使用
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中的方法转载 2015-04-10 22:18:35 · 324 阅读 · 0 评论 -
java中的throw和throws
异常在Java中式以一个对象来看待。所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。1.1 throw是语句抛出一个异常。语法:t原创 2015-04-10 21:52:25 · 352 阅读 · 0 评论 -
ACM中使用 JAVA v2. 1
ACM中使用JAVA v2.1 严明超 (Blog:mingchaoyan.blogbus.com转载 2014-09-26 23:01:18 · 469 阅读 · 0 评论 -
代码混装
一个很平常的路线,mvc-servcie-dao-hibernate的结构----------------------------------------------------------------------------------------int n=Integer.parseInt("123");String s=String.valueOf(int a);泛型 的作用原创 2015-04-11 09:01:08 · 1010 阅读 · 0 评论 -
Java集合类
除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap。Map map = Collections.synchronizedMap(new HashMap());在java编程语言中,最基本的原创 2015-04-10 22:26:28 · 331 阅读 · 0 评论 -
java基础篇---反射机制
一、JAVA是动态语言吗?一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言。但JAVA它却有着一个非常突出的动态相关机制:反射。通过反射,Java可以于运行时加载、探知和使用编译期间完全求和的类、生成其对象实体,调用其方法或者对属性设值。所以Java算是一个半动态的语言吧。反射的概念:在Java原创 2015-04-06 16:38:13 · 312 阅读 · 0 评论 -
代码混装5.30
1.强引用这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。2.软引用(SoftReference)如果一个对象只具有软引用,那就类似于可有可无的生活用品。如果内存空间足够,垃圾原创 2015-05-30 21:29:40 · 463 阅读 · 0 评论 -
JAVA和JVM运行原理揭秘
JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行转载 2015-05-30 18:32:32 · 453 阅读 · 0 评论 -
实验一中的OOP思想
子类继承父类 父类中声明了接口变量原创 2014-10-06 09:17:30 · 363 阅读 · 0 评论 -
Java中对Clone的理解
面试中经常遇到Clone的相关知识,Java中Clone的概念大家应该都很熟悉了,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的?1. Clone和Copy假设现在有一个User对象,User u1=new User(“U1001”,“Jason”,25),通常我们会有这样的赋值User u2=u1,这个时候只是简单了copy了一下原创 2015-04-10 22:06:31 · 278 阅读 · 0 评论 -
Java里的堆(heap)栈(stack)和方法区(method)
http://imiduo.iteye.com/blog/616310Java里的堆(heap)栈(stack)和方法区(method) 基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个转载 2015-05-17 16:25:50 · 838 阅读 · 0 评论 -
关于Java中方法调用时参数的传递
1.问题说明 在C++中,函数调用时有传值调用和传址调用两种方式,但在Java中只有传值调用一种方式。Java中的方法参数为那几种基本数据类型的情况跟C++中一样,传入的只是变量的拷贝。而当参数类型为类对象时,则有可能会误以为是传址调用。2.测试用例 现在此举出例子并加以说明 public class AClass {转载 2015-05-16 09:37:55 · 493 阅读 · 0 评论 -
Java的运行原理
在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class文件的内容),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是转载 2015-04-12 20:21:56 · 267 阅读 · 0 评论 -
抽象类来源
在我们所有乐器(Instrument)例子中,基础类Instrument 内的方法都肯定是“伪”方法。若去调用这些方法,就会出现错误。那是由于Instrument 的意图是为从它衍生出去的所有类都创建一个通用接口。之所以要建立这个通用接口,唯一的原因就是它能为不同的子类型作出不同的表示。它为我们建立了一种基本形式,使我们能定义在所有衍生类里“通用”的一些东西。为阐述这个观念,另一个方法原创 2014-09-07 07:08:31 · 485 阅读 · 0 评论 -
java 抽象类实现接口
1.抽象类肯定可以实现接口; 2.这不是有没有意义的事情,是一种思想,当你自己写的类想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象类先实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到你的目的了,如果你直接用类实现接口,那是所有方法都必须实现的; 3.这种思想在java.swing.event包中运用的非常多,里面一般以Adapter为后缀的转载 2014-10-03 21:26:01 · 467 阅读 · 0 评论 -
Java输入输出重定向代码
try { BufferedInputStream in = new BufferedInputStream(new FileInputStream("input.txt")); System.setIn(in); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Print转载 2014-09-10 08:12:59 · 669 阅读 · 0 评论 -
动态绑定的内幕
动态绑定的内幕: 1、编译器检查对象声明的类型和方法名,从而获取所有候选方法。试着把上例Base类的test注释掉,这时再编译就无法通过。 2、重载决策:编译器检查方法调用的参数类型,从上述候选方法选出唯一的那一个(其间会有隐含类型转化)。如果编译器找到多于一个或者没找到,此时编译器就会报错。试着把上例Base类的test(byte b)注释掉,这时运行结果是1转载 2014-09-06 22:18:08 · 429 阅读 · 0 评论 -
理解多态
package c07;class Instrument {public void play(Note n) {System.out.println("Instrument.play()");}}class Wind extends Instrument {public void play(Note n) {System.out.println("Wind.转载 2014-09-06 21:47:16 · 409 阅读 · 0 评论 -
关于Java中的toString()方法
package c07;class ewq{public String toString(){return "ppppppppp";}public static void main(String[] args){ ewq t= new ewq(); System.out.print(t);}}转载 2014-09-07 13:17:46 · 486 阅读 · 0 评论 -
接口
“interface”(接口)关键字使抽象的概念更深入了一层。我们可将其想象为一个“纯”抽象类。它允许创建者规定一个类的基本形式:方法名、自变量列表以及返回类型,但不规定方法主体。接口也包含了基本数据类型的数据成员,但它们都默认为static 和final。接口只提供一种形式,并不提供实施的细节。接口这样描述自己:“对于实现我的所有类,看起来都应该象我现在这个样子”。因此,采用了一个特转载 2014-09-07 07:10:25 · 532 阅读 · 0 评论 -
重载和重写
(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。 (3)转载 2014-09-06 22:16:25 · 293 阅读 · 0 评论 -
LinkedList
Java API 官方文档: voidadd(int index, E element) 在此列表中指定的位置插入指定的元素。booleanadd(E o)将指定元素追加到此列表的结尾。原创 2014-09-14 10:47:55 · 307 阅读 · 0 评论 -
java中参数传递的问题
public class Test { public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); operate(a,b); System.out.println(a + "," +b); }转载 2014-09-23 22:45:01 · 424 阅读 · 0 评论 -
try catch finally 用法
trycatchfinally1、将预见可能引发异常的代码包含在try语句块中。2、如果发生了异常,则转入catch的执行。catch有几种写法:catch这将捕获任何发生的异常。catch(Exception e)这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的信息。catch(Exception的派生类 e)这转载 2014-10-28 10:53:03 · 389 阅读 · 0 评论 -
面向接口编程详解(一)——思想基础
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对转载 2014-10-21 10:35:33 · 317 阅读 · 0 评论 -
【Java工程师之路】[1-2.2]Java10个面向对象设计原则
面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton、Decorator、Observer这样的设计模式,而不重视面向对象的分析和设计。甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程转载 2014-10-19 17:53:00 · 336 阅读 · 0 评论 -
Java中长度为0的数组与null的区别
有如下两个变量定义:1 int[] zero = new int[0];2 int[] nil = null; 这两种定义有什么区别呢? zero是一个长度为0的数组,我们称之为“空数组”,空数组也是一个对象,只是包含元素个数为0。 nil是一个数组类型的空引用。 假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对转载 2014-10-16 22:00:19 · 3521 阅读 · 0 评论 -
指针、引用和句柄
1.指针与引用(1)指针是对象在内存中的地址;(2)引用是对象的别名,其实质就是功能受限但是安全性更高的指针;(3)句柄是指针的指针,句柄实际上是一个数据,是一个Long (整长型)的数据。句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样。Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对转载 2014-10-16 22:23:22 · 622 阅读 · 0 评论 -
java基础:父类与子类之间变量和方法的调用
1)父类构造函数java中当调用某个类的构造方法的时候,系统总会调用父类的非静态初始化块进行初始化,这个调用是隐式的,而且父类的静态初始化代码块总是会被执行,接着调用父类的一个或者多个构造器执行初始化,这个调用也可以通过super进行显式调用。例如:父类代码如下:public class Creature {//父类{//非静态代码块Syst转载 2014-10-04 21:55:59 · 596 阅读 · 0 评论 -
Java关键字this
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的thi转载 2014-10-03 20:47:52 · 294 阅读 · 0 评论 -
C++和JAVA实例化对象的区别
JAVA:A a = new A();为A对象创建了一个实例,但在内存中开辟了两块空间:一块空间在堆区,存放new A()这个对象;另一块空间在堆栈,也就是栈,存放a,a的值为new A()这个对象的内存地址。因为java在JVM中运行,所以a 描述的内存地址不一定是这个对象真实内存的地址。Object o; // 这是声明一个引用,它的类型是Object,他的值为null,还转载 2014-10-28 11:22:39 · 369 阅读 · 1 评论 -
重写toString方法
当你要读取关于对象的一些有用细节时,可以在对象上调用toString()。如,当把一个对象引用传递给System.out.println();时,该对象的toString()方法被调用。Java中所有的类都继承自Object父类,所以,我们在类中只要重写一下toString()方法就可以显示出我们想要的信息了。看下面的例子:public class Ov转载 2014-10-05 12:58:59 · 419 阅读 · 0 评论 -
匿名内部类
匿名内部类适合创建那种只需要一次使用的类,例如命令模式时所需要的Command对象。匿名内部类的语法有点奇怪,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。 定义匿名内部类的格式如下:[java] view plaincopyprint?new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部转载 2014-05-03 13:14:07 · 373 阅读 · 0 评论