随笔分类 -  Thinking In Java

jva学习心得
摘要:java中存储数据的几种区域1首先是Pcregister他存储的的线程运行的地址,每个线程会有一个2然后是栈他提供一个线程运行的场所,每一个线程都有一个栈,他存放局部变量,中间结果和返回值3堆他存放所有jvm的对象(其实不是所有,有时候对象也存放在栈上),每一个jvm只有一个堆4方法区他存放clss的相关信息,如常量池、字段和方法的数据、方法和构造器的代码你是否认为所有的基本类型都放在栈上,所有的对象都放在堆上?答案是否定的类是放在堆上的,而且类里面的基本类型还是放在堆上的,而基本类型的局部变量才是放在栈上的方法在执行的时候会有一个压栈的过程,每个压入的东西就做frame,他保存了方法执行时的 阅读全文
posted @ 2011-05-19 22:04 Evanlee 阅读(350) 评论(1) 推荐(0)
摘要:最近在看java的中finalizer终结方法,也就是用来释放内存的,但这绝对和C++中的析构函数不相同C++中的析构函数是用来回收对象所占用的资源的方法,而在java中,当一个对象不可到达时(也就是重堆栈和静态存储区开始,由引用开始,寻找实体对象),垃圾回收器会释放该对象所相关联的存储空间,并不需要程序员的编码对于finalizer方法的使用,就只有一条建议--------------尽量不要使用effective java中有这几个结论1 不应该依赖终结方法来更新重要的持久状态如用finalizer方法释放数据库上的永久锁,而且finalizer方法是不一定会被调用的,只有到了内存满了系统 阅读全文
posted @ 2011-05-16 19:54 Evanlee 阅读(3668) 评论(0) 推荐(0)
摘要:假如我们要创建一个对象,而对象有很多字段,一些是必须的,有一些是可选的,现在我们要根据不同的参数组合来写不同的构造函数。如我们要创建一个用户(user)类,他有必须的字段,id,userName,password还有可选的字段age,email,birthday我们要怎么创建这个类呢!首先我们想到得就是提供不同参数的构造函数! 1 import java.util.Date; 2 3 4 public class User { 5 private String id; 6 private String userName; 7 private String password; 8 private 阅读全文
posted @ 2011-05-12 19:28 Evanlee 阅读(437) 评论(0) 推荐(0)
摘要:package equals.tran;import java.util.HashSet;import java.util.Set;public class Example { public static void main(String[] args) { Point p = new Point(1, 2); Set<Point> set = new HashSet<Point>(); set.add(p); System.out.println(set.contains(new Point(1, 2))); p.setX(2); System.out.println 阅读全文
posted @ 2011-05-04 17:45 Evanlee 阅读(577) 评论(1) 推荐(0)