今天开始重新学习java,今天是第一天,先从一个使用的目标开始。主要使用Eclipse。
1:计划:学习i/o相关程序......
2:目标:完成一个文件内容过滤程序
3:具体任务
4:备忘
2006.07.17
今天开始重新学习java,今天是第一天,先从一个使用的目标开始。主要使用Eclipse。
1:计划:学习i/o相关程序
2:目标:完成一个文件内容过滤程序,从指定的文件中,找到包含指定内容的行。主要准备用于简单地分析weblogic的日志。
3:具体任务1:完成一个简单的程序:Delete.java,删除制定文件或目录--热身
具体任务2:完成过滤器filter,实现今天计划的目标。
4:备忘及记事
---------------
完成的练习:
2006.07.17
----------------
备忘:
1:注释可使用汉字,最后用于生成的javadoc。
2:在Eclipse中生成javadoc时,须指定javadoc命令的位置:
Specifying the location of the Javadoc command
The JDT uses the Javadoc command (typically available in JRE distributions) to generate Javadoc documentation from source files.
To set the location of the Javadoc command:
* Use the Window > Preferences > Java > Javadoc preferences page to enter the absolute (e.g. C:Java14jdk1.4binjavadoc.exe) path to the Javadoc command.
3: 关于super和this
在Java中有两个非常特殊的变量:this和super,这两个变量在使用前都是不需要声明的。this变量使用在一个成员函数的内部,指向当前对象,当前对象指的是调用当前正在执行方法的那个对象。super变量是直接指向超类的构造函数,用来引用超类中的变量和方法。它们都是非常有用的变量,以下为this和super的使用方法。
(1)、this ,代表引用所在对象的方法或属性
在同一个范围中,定义两个相同的名字的局部变量是不允许的,但为了便于理解,可能会有类的属性与方法的参数或方法的局部变量同名的情况。使用到this变量,可以做到这一点:下面代码,使PersonInformation类的构造函数的每个参数都有与对象成员变量相同的名字,而成员变量的初值由参数给出。
class PersonInformation
{
String name,gender,nationality,address;
int age;
void PersonInformation(String name,int age)
{
this.name=name; //为类的属性this.name赋值为构造函数的参数name
this.age=age; //同上
}
}
在这里,该构造函数中必须使用this,this在方法体重用来指向引用当前正在执行方法的那个对象实例,this变量的类型总是为包含前执行方法的类,上例中,我们要区别参数name和成员变量name,写成name=name显然是不允许的,在参数或局部变量名与类成员变量同名的时候,由于参数或局部变量的优先级高,这样在方法体中参数名或局部变量名将隐藏同名的成员变量,因此,为了值名成员变量,你必须使用this显示地指明当前对象。
有时候会遇到这种情况,我们全面的访问当前对象,而不是访问某一个个别的实例对象,我们也可以使用this,并利用Java中的toString()方法(它能够返回一个描述这个对象的字符串)如果把任何一个对象传递到System.out.println方法中,这个方法调用这个对象的toString方法,并打印出结果字符串,所以,我们可以用如下方法System.out.println(this),来打印出任何对方法固有参数的当前状态。
this还有一个用法,就是构造函数的第一个语句,它的形式是this(参数表),这个构造函数就会调用同一个类的另一个相对的构造函数。请看下面的例子:
class UserInfo
{
public UserInfo(String name)
{
this(name,aNewSerialNumber);
}
public Userinfo(String name,int number)
{
userName=name;
userNumber=number;
}
}
如果你调用UserInfor newinfotable = new UserInfo("Wayne Zheng")后,就会自动调用UserInfo(String name,int number)构造函数。
(2):super
在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名,因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量和方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,此使就需要用到super,请看下面的类。
父类:
class Country
{
String name;
void value()
{
name="China";
}
}
下面的子类中,自类的成员变量和方法隐藏了超类的成员变量name和方法value(),
为了在子类中引用超类中的成员变量name和方法value(),在代码中我们使用了super,super.name和super.value();
class City extends Country
String name;
void value()
{
name="Hefei";
super.value();
System.out.println(name);
System.out.println(super.name);
}
所以显示的结果为
Hefei
China
如果我们想要使用超类的构造函数则应当使用super(参数列表)的形式。
( 参照原文: http://bbs.java.ccidnet.com/simple/index.php?t19870.html)
this,super的用法说明和比较
在java编程中,this和super常用,但大家有的时候也不是很注意他的具体意义或具体用法在哪.
首先我们回忆一下,是否在很多时候我们没有用到这两个关键字呢,不知道大家有没有注意到,在老外写的代码中却经常见到.这一点我想大家都不得不认同,老外做事情就是规范.那么,我们什么时候用什么时候不用呢.
this,super一个是指向当前类的对象,super是指向父类对象,其实他们的用法并不一样的.
super:主要用在构造器中(当然也有在方法中使用,我不推荐这么用,既然是重载父类的方法,就没有必要调用父类的方法,当然也不能一概而论)。super在子类访问父类的成员和行为,这就必须受类继承规则的约束,也就是说子类可见的资源才能被super 访问.
this:与super不同,他代表当前对象,当然所有的资源都可以访问.
在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.
而在方法中super和this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.
大多数情况下,我们都回采用默认的方式 ,即父类存在无参数的构造器,子类不用采用编译器默认的插入方式.但是我还是建议大家加上super()这句.这样程序的代码兼容性和结构性好.这也老外的风格.
(原文:http://blog.iyi.cn/rimen/2005/10/thissuper.html)