随笔分类 -  Java

摘要:java有两种内存管理:堆 和 栈。栈中保存的是基本数据类型(如:int、short、char、long等)与对象句柄。 栈中保存的内存在变量超出作用域后会被自动释放。 栈的存取速度比堆快,数据可以共享,但是不灵活。举个例子:int i = 5;int j = 5;String s1 = "abc";String s2 = "abc";其中 i 和 j ,s1 和 s2在栈中保存的数据是共享的。也就是说改变过其中一个变量的值,另外一个变量的值也会被相应改变。因此如上数据中i.euqals(j) ; //truei == j ; //trues1.equa 阅读全文
posted @ 2012-10-25 11:36 のんきネコ 阅读(543) 评论(0) 推荐(0) 编辑
摘要:java泛型有许多应用,下面挑几个重点的来说。普通型 → 泛型的最基本应用,很简单就不说了。通配型 1 class Point 2 { 3 private K key; 4 private V value; 5 6 public void setKey(K key){ 7 this.key = key; 8 } 9 10 public K getKey(){11 return this.key;12 }13 14 public void setValue(V value){15 ... 阅读全文
posted @ 2012-10-15 15:18 のんきネコ 阅读(201) 评论(0) 推荐(0) 编辑
摘要:Collection 是java所有集合类的接口,它包括的一些常用集合类对象有:以List为接口的ArrayListLinkedListVectorArrayList和Vector是基于array的链表,它实现了array所没有的一些功能,比如说链表的增删改查。它们的唯一区别在于,Vector是线程安全的,Vector的很多方法都是sychronized的。而ArrayList不是线程安全。List:1.可以实现null元素,比如[1,aa,null]2.可以插入相同的值,比如[aa,aa,aa]以及以set为接口的HashsetLinkedHashSetTreeSetset与list的区别在 阅读全文
posted @ 2012-09-22 17:26 のんきネコ 阅读(163) 评论(0) 推荐(0) 编辑
摘要:Facade模式Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。Proxy模式代理模式,顾名思义:就是为其他对象提供一种代理以控制对这个对象的访问。那我们在什么情况下不愿意让外部系统直接调用类,而非要经过代理呢?大约有如下几种情况我们需要使用代理类1.远程代理,作为远程对象在本地的代表。2.虚代理,根据需要创建开销很大的对象。3.保护代理,提供对原始对象的访问控制,比如权限控制等。4.智能指引,比如第一次使用时分配内存,无引用时销毁等。虚代理虚代理是一种非常有用的模式。当中举一个文档中内嵌图片 阅读全文
posted @ 2012-09-20 23:30 のんきネコ 阅读(163) 评论(0) 推荐(0) 编辑
摘要:关于synchronized ,我现在还处于学习阶段。下面给一段实例: 1 public class Test extends Thread{ 2 private String name; 3 public Test(){ 4 5 } 6 public Test(String name){ 7 this.name = name; 8 } 9 public void run(){10 for(int i =0;i<5;i++){11 System.out.println... 阅读全文
posted @ 2012-09-14 18:05 のんきネコ 阅读(170) 评论(0) 推荐(0) 编辑
摘要:生:线程刚被创建出来,还没有进入可执行状态。可执行:线程执行start()方法,进入就绪(可执行)状态,但是如果cpu未空闲,就无法立即进入执行状态。执行:开始执行run()方法死:run()方法结束。睡眠|阻塞|等待:线程仍然活着,但没有运行,如果符合某事件,将重新回到可执行状态。睡眠Thread.sleep(long millis)和Thread.sleep(long millis, int nanos)静态方法强制当前正在执行的线程休眠(暂停执行),以“减慢线程”。当线程睡眠时,它入睡在某个地方,在苏醒之前不会返回到可运行状态。当睡眠时间到期,则返回到可运行状态。注意:1.sleep设置 阅读全文
posted @ 2012-09-14 17:11 のんきネコ 阅读(1835) 评论(0) 推荐(0) 编辑
摘要:在java中要想实现多线程,主要有两种手段,第一是直接继承Thread类,第二是实现Runable接口。直接继承Thread类,大致的框架式:1 public class Test extends Thread{2 //方法13 //方法24 public void run()5 {6 }7 }下面我们写个例子 1 public class Test extends Thread{ 2 private String name; 3 public Test(){ 4 5 } 6 public T... 阅读全文
posted @ 2012-09-14 15:52 のんきネコ 阅读(182) 评论(0) 推荐(0) 编辑
摘要:for循环很简单,用起来也很方便,但对for循环的执行顺序并不了解。举个例子:public class TestOrder { static boolean order(char c) { System.out.print(c); return true; } public static void main(String[] args) { int i = 0; for (order('A'); order('B') && (i < 2); order('C')) { i++; ... 阅读全文
posted @ 2012-09-11 16:19 のんきネコ 阅读(2739) 评论(0) 推荐(0) 编辑
摘要:今天参加公司的学习会,学了几种设计模式,稍微回忆一下,并且自己找了一些补充资料进一步加深理解。Singleton模式(单例模式)看字面的意思就知道,一个类Class只有一个实例存在。单例模式的好处就是它限制了实例的个数,有利于节约内存,方便java回收。它的写法也很简单,一看就懂。public class Singleton{ private static Singleton instance = null; private void Singleton(){ } public static synchronizedSingleton getInstance(){ if(... 阅读全文
posted @ 2012-08-28 23:30 のんきネコ 阅读(161) 评论(0) 推荐(0) 编辑
摘要:下面是switch的简单写法:switch(A){caseB;}A部分中的值必须是int型的,或者是能够自动进行饮试转换成int型的表达式。也就是说A部分可以是byte/short/char/int型的。其次要强调的是该程序中B部分的值必须是单个byte/short/char/int型的值,或者是final型的变量。但是final型的变量也是有要求的,也即是它必须是编译时的常量,怎么讲呢,看下面的程序段:final int a = 0;final int b;第二个语句就是在编译时不能够被识别出值的变量,因为它没有初始化,当然,这条语句也是错误的。所以总结case后的值可以是常数值或final 阅读全文
posted @ 2012-08-24 17:03 のんきネコ 阅读(158) 评论(0) 推荐(0) 编辑
摘要:final 修饰符,如果一类被声明为final类,那么它不能派生出子类,即不能作为父类被继承。所以一个类在声明时不能同时添加 final 和 abstract。 变量或方法被声明成final时,在使用时就不能被改变,而且在声明时必须要赋予初始值。 方法被声明成final时,只能使用,不能被覆盖。finally 配合try{}catch(){}使用。如果抛出异常,则在执行完catch后进入finally块。finalize java的垃圾回收方法。允许回收此前未回收的内存垃圾。所有object都继承了finalize()方法。 阅读全文
posted @ 2012-08-13 15:45 のんきネコ 阅读(157) 评论(0) 推荐(0) 编辑