LINUKS BLOG

Make progress is the topic for ever...

My Photo
Name:
Location: China

It's a fans of computer/ Computer is my favorite/ Making progress is the topic for ever...

Thursday, July 19, 2007

The record of learning of thinking JAVA

*动态绑定是java的缺省行为,因此无需添加什么额外的关键词就能获得多态性.

"你是一个Shape对吧,好,我知道你可以erase()和draw(),这这么做,照顾好自己."

通常在有些设计方案中,你只想让基类去表示由其派生出的类的接口.也就是你不想让人创建一个基类的对象,而只是想把对象上传给它,以期能使用这个类的接口.这样你就需要使用abstract关键词来把这个类做成抽象类.

abstract就像是一个声明"由这个类所派生出的所有的类都有这个方法,但是它的实现不在这里" 的存根.如果有个类继承了这个abstract类,那么它要么实现这个方法,要么也是一个abstract类.

Chapter2
5.这个对象不是primitive型的.
char c='x';
Character C=new Character(c);

Character C=new Character('x');

Java中的数组
实际上所有编程语言都有数组,使用C和C++的数组是有风险的,因为在它们眼里,数组只是一段内存.如果程序访问到数组之外的内存,或者还未进行初始化就使用了这些内存,那么很有可能会发生一些无法预料的后果.

Java对象的生命同期同primitive的不同.当你用new创建java对象之后,它会晃荡作用域外面.如:
{
String s=new String("a string");
}//End of scope
s这个reference会在作用域结束之后消失.但是s所指的那个String仍然还占着内存.在这段代码里,你已经没法访问这个对象了,因为唯一指向它那个的reference现在已经出了作用域.

8.如果万物皆对象,那么特定类型的对象的特征和行为又是由什么决定的?
class这个关键词,它的意思是"现在我要告诉你这种新类型的对象都有些什么特征."

当你定义类的时候(java编程要做的就是定义类,创建这些类的对象,然后再向这些对象发送消息),你可以往类里放两种元素:数据(field,有时也被称为数据成员),以及方法(method,有时也被称为成员函数member function).数据可以是任何类型的,能通过reference进行操控的对象.它也可以是任何一种primitive数据(这时它就不是reference了).如果它是一个对象的reference,那么你就必须用一种被称为构造函数(construtor)的特殊方法对它进行初始化,这样才能确保将它连上一个真实的对象(用new,就像前面看到的).如果这是个primitive数据,那么你可以在定义的时候直接对它进行初始化.

9.下面就是一个带数据成员的类:
class DataOnly{
int i;
float f;
boolean b;
}

DataOnly类只保存数据,要想理解方法是怎么工作的,你必须先理解参数(argument)和返回值(return value)的概念.

10.当primitive数据成为类的成员时,它会得到一个默认值,但只有在"变量被用作类的成员"时,java才能确保它获得这些默认值.

方法的基本的组成包括方法的名字,参数,返回类型,以及方法的正文.
returnType methodName(/*Argument list*/){
/*Method body*/
}

Sunday, July 08, 2007

编程题

32.Question:

编程题: 写一个Singleton出来。

Answer:

  Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例

存在。

  一般Singleton模式通常有几种种形式:

  第一种形式: 定义一个类,它的构造函数为private的,它有一个static的

private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获

取对它的引用,继而调用其中的方法。

public class Singleton {
  private Singleton(){}
  //在自己内部定义自己一个实例,是不是很奇怪?
  //注意这是private 只供内部调用
  private static Singleton instance = new Singleton();
  //这里提供了一个供外部访问本class的静态方法,可以直接访问  
  public static Singleton getInstance() {
    return instance;   
   }
}

  第二种形式:

public class Singleton {
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   }
}

  其他形式:

  定义一个类,它的构造函数为private的,所有方法为static的。

  一般认为第一种形式要更加安全些

  第三十三 Hashtable和HashMap

  Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的

一个实现

  HashMap允许将null作为一个entry的key或者value,而Hashtable不允许

  还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和

containsKey。因为contains方法容易让人引起误解。

  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线

程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供

外同步。

  Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大

的差异。

Tuesday, July 03, 2007

Switch用法

31.Question:

switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

Answer:  

switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于switch。

Decision


If you make a decision,would you like to finish it in any condition. Maybe you can do it. But i find i can't. So something and chance escaped from my hand silence. So i have no success today.
Recently, decide to prepare for the coming master test i told to myself. But day by day, had no change, no progress, no goal.

那你就把你想作的事情,安能实现的难易和时间的长短分类,然后现在去做最简单最容易实现最能让自己开心的事情.!!!-------------来自一位朋友的衷告.

Have dreamed to have a job in a software company. When touched with the engeers from the small software company, i become to re-check the dream of being a member in the small software company. In my opinion ,they are confused with what they want to do like me . If i become a member of them, what i will be ? confused, don't kown what to do? Have no significance.

So decide to take the master test return to the school is the only correct choice.

Sunday, July 01, 2007

值传递与引用传递

30.Question:

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

Answer: 

 是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。