Java编程语言
yuyiming1986
这个作者很懒,什么都没留下…
展开
-
Java基础知识一
(1).instanceof obj instanceof ClassName/Interface 用于判断一个对象否是属于某个类或者接口类型(2).子类赋值给直接父类或者间接父类类型,会自动进行类型转换;而从父类赋值给直接或者间接子类,需要进行强制类型转换.(3)."+"操作符中有一个操作元是String类型,则另一个操作元可以是任何类型(包括基本类型和自...原创 2011-11-10 14:02:49 · 95 阅读 · 0 评论 -
Java对象序列化
[b][size=large]Java对象序列化[/size][/b] 对于一个存在Java虚拟机中的对象来说,其内部的状态只是保存在内存中。JVM退出之后,内存资源也就被释放,Java对象的内部状态也就丢失了。而在很多情况下,对象内部状态是需要被持久化的,将运行中的对象状态保存下来(最直接的方式就是保存到文件系统中),在需要的时候可以还原,即使是在Java虚拟机退出的情况下。...原创 2011-11-24 19:21:06 · 149 阅读 · 0 评论 -
Java中的内部类
[b][size=large]内部类(inner class)[/size][/b]内部类(inner class)是定义在另一个类中的类。代码结构形式如下[code="java"]class ClassType{ //注意这并不是声明一个成员属性,而是定义一个内部类 private class InnerClassType{ }}[/co...原创 2011-11-24 15:28:41 · 111 阅读 · 0 评论 -
float f = 3.4语句正确吗?
[b][size=x-large]float f = 3.4语句正确吗[/size]]?[/b]回答这个问题,得首先知道[u]Java类型转换[/u]和[u]Java数值常量默认类型[/u]相关知识。1.[size=large][b]Java类型转换[/b][/size] Java中不同类型之间的变量赋值时,需要先进行类型转换,才能进行赋值。Java类型转换分为自动转换和...原创 2011-11-23 14:56:19 · 1147 阅读 · 0 评论 -
serialVersionUID
[b]serialVersionUID[/b] Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应类的serialVersionUID进行比较,如果两个类的serialVersionUID相同就认为是两个类的版本是一致的,可以进行反序列化,否则就认为两个类不...原创 2011-11-22 20:31:11 · 95 阅读 · 0 评论 -
如何编写一个自定义的Exception类
[b]如何编写一个自定义的Exception类[/b]1.编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。 [u]至少要继承Throwable或Throwable的子类(Exception),然后编写两个构造函数,一个无参构造函数,另一个提供描述异常信息字符串参数的构造函数。[/u] 在继承任何异常时,将自动继承Throw...原创 2011-11-22 20:11:47 · 635 阅读 · 0 评论 -
Java线程新同步机制
Java线程新的同步机制1.[b]可重入锁ReentrantLock[/b],相当于synchronized块,为临界区提供互斥访问机制. (1).[b]相关的接口[/b] 创建一个可重入锁 Lock lock = new ReentrantLock(); 请求锁,如果锁被当前另一个线程持有,则阻塞。 void lock() 释放锁...原创 2011-11-22 16:52:05 · 91 阅读 · 0 评论 -
Java线程wait-notify+sleep+synchronized
1.[b]sleep-wait-yield区别[/b] [b]sleep[/b]是Thread类中的一个静态方法,其定义如下, public static void sleep(long millis)throws InterruptedException 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响,如果指定睡眠的时间到...原创 2011-11-21 20:40:53 · 112 阅读 · 0 评论 -
Math.round方法
Math.round()java.lang.Math类有两个round()方法,定义如下:public static int round(float);public static long round(double);它们都返回整数,且采用四舍五入进行运算,运算规则如下:(1).如果参数为正数,小数点后采用四四舍五入,如果小数点后面>=0.5则整数部分加1,否则舍弃...原创 2011-11-19 21:59:49 · 243 阅读 · 0 评论 -
final&finally&finalize
1.final关键字可以用来修饰类,成员方法,方法的参数,成员变量(静态和非静态的) (1).final修饰类表示类为终类,不能被继承,String就是这样的一个类. (2).final修饰一个成员方法时,此方法在子类中不能被覆盖. (3).final修饰成员变量,如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,即是个常量;如果final修饰的...原创 2011-11-19 18:03:32 · 119 阅读 · 0 评论 -
String str = new String("abc")创建几个对象?
1.在JVM中存在着一个字符串池,其中保存着很多的String对象,并且可以被共享,因此能提升性能。由于String类是final的,它的值创建后就不可改变,所以不需要担心共享会导致程序混乱. 2.String var = "king"的执行过程:首先在字符串池中查找是否已经有"king"这样的一个对象,通过String类的equals()来判断;如果有,则不再创建新的对象,直接返回...原创 2011-11-19 14:46:06 · 136 阅读 · 0 评论 -
类的初始化顺序
类的初始化顺序1.对于同一个类中的静态变量,静态初始化块,变量,构造块,构造函数,它们的初始化顺序依次是(静态变量,静态块),(变量,构造块),构造函数。 测试代码:[code="java"]class Test{ private static String staticVar = "静态变量"; private String memberVar = "成员...原创 2011-11-19 14:05:46 · 81 阅读 · 0 评论 -
Java代码块
Java代码块一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种:1.普通代码块:就是类中方法的方法体 public void xxx(){ //code }2.构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象 时都会被调用,并且优先于类构造函数执行。 { ...原创 2011-11-15 22:19:32 · 386 阅读 · 0 评论 -
Java内存管理
Java内存管理一.Java内存中的堆和栈 1.使用new关键字创建的对象,数组,内存空间都在堆(heap)上分配,而释放则是由Java中的垃圾回收机制决定和执行,GC为了能够正确的释放对象内存空间,需要监控每一个对象的运行状态,包括对象的申请,引用,被引用,赋值。 2.在代码块或者函数中的局部变量(基于类型变量和对象引用变量)的内存空间则都在栈上分配,当前的代码块...原创 2011-11-15 18:00:43 · 77 阅读 · 0 评论 -
hashCode()和equals方法
1.==是比较地址,equals()是比较对象的内容 equals()方法在Object类中的定义: public boolean equals(Object obj){ return (this == obj); } 可知也是比较地址,但是其它的类比如说String类,覆盖了equals()方法,使得equals用来比较对象内容。2.h...原创 2011-11-13 16:56:53 · 83 阅读 · 0 评论 -
Java基础知识四
1.关于equals(),所有的类都继承了Object类,继承的hashcode(),toString(),equals()方法 在Object类的源码中: public boolean equals(Object obj){ return (this == obj); } 也就是说如果没有override掉对象的equals()方法,就调用对象的equal...原创 2011-11-10 23:48:01 · 74 阅读 · 0 评论 -
Java基础知识三---static关键字
static变量,static函数,static块1.static变量:Java是纯面向对象的语言,也就是说,所有的方法和属性都是属于类的,不存在全局变量或者全局函数,而static变量却是一类特殊的全局变量,因为在整个应用程序中只有一份,所有类对象共享,并且生命周期是整个应用程序的生命周期。它在main()开始执行以前进行初始化,这里也包括static块. 2.sta...原创 2011-11-10 14:06:03 · 118 阅读 · 0 评论 -
Java基础知识二
1.在Java中A a只是定义一个A类型的变量a,没有分配内存a = new A();这才调用构造函数进行内存分配,初始化。(与C++不同的) 在Java中基本类型如(byte, int,short, long, float)都是在栈中分配内存,而对于自定义类型-类,则通过new在堆上分配内存。而通过new在堆上分配的内存却不可以通过GC自动释放内存,不需要像C/C++中那样“谁申请谁释放”....原创 2011-11-10 14:04:23 · 85 阅读 · 0 评论 -
Java中的"for each"循环
[b]1."for each"循环[/b] JDK5.0增加了一种功能很强的循环结构,可以用来遍历数组(其他类型的元素集合也可以)中的每个元素,而不必需要下标值。 这种for循环语句的格式为: for(variable:collection)statement variable用于暂存集合中的每一个元素,并执行相应的语句statement. 集合collection...原创 2011-11-27 16:59:44 · 132 阅读 · 0 评论