2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次

java中this的用法?

import java.awt.*;

import java.awt.event.*;

//TwoListen类同时实现MouseMotionListener和MouseListener两个接口

public class TwoListen implements MouseMotionListener,MouseListener

{

private Frame f;

private TextField tf;

public static void main(String[] args)

{

TwoListen two=new TwoListen();

two.go();

}

public void go()

{

f=new Frame("Two listeners example");

f.add(new Label("Clic and drag the mouse"),"North");

tf=new TextField(30);

f.add(tf,"South");

//注册监听程序

f.addMouseMotionListener(this);//(************************)

f.addMouseListener(this);      //(************************)

f.setSize(300,300);

f.setVisible(true);            //(************************)

}

//实现MouseMotionListener接口中的方法

public void mouseDragged(MouseEvent e)

{

String s="Mouse dragging:X="+e.getX()+"Y="+e.getY();

tf.setText(s);

}

public void mouseMoved(MouseEvent e){}

//实现MouseListener接口中的方法

public void mouseClicked(MouseEvent e){}

public void mouseEntered(MouseEvent e)

{

String s="The mouse entered";

tf.setText(s);

}

public void mouseExited(MouseEvent e)

{

String s="The mouse has left the building";

tf.setText(s);

}

public void mousePressed(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

}

请问我用//(*******************)标记的那三句中this具体是什么意思?指代什么的,能用什么替换吗?

我原来认为this是用来表示生成的对象的,那么这里生成的对象不是two吗?怎么我用two替换后就不能运行了呢?

哪位老兄知道的请解释详细一点,请把我上边的几个问题都回答一下,要是我觉得答案很好的话,会再追加二十分,

谢谢.

请问这里的this能用什么替换,一定要用this吗?(如果知道能用什么替换的话,我可能比较好理解一点)如果是指针的话,请说一下指针指向的是什么,具体是怎么指向的?我刚学JAVA,请仔细说一下,谢谢。还有,JAVA中不是不用指针吗,那this怎么又是隐含指针了呢?我真是很糊涂啊,请耐心教教我!

1、this指向当前类的对象,也就是TwoListen类的对象。由于MouseMotionListener,MouseListener 都是接口,因此

f.addMouseMotionListener(this);//(************************)

f.addMouseListener(this); //(************************)

中分别需要一个实现了MouseMotionListener和MouseListener接口的类的实例。

在本例子中 TwoListen类都实现了这两个接口,因此可以用本类的实例来做参数。或者新建一个实现了这两个接口的类,再用这个类的实例做参数。

2、在该例子中,this指向生成的two对象。为什么用two替换后就不能运行了呢?

因为two是在main方法中定义的,是局部变量;而在go方法中并不能访问其他方法中定义的局部变量。

如果把two定义为全局变量,如:

static TwoListen two;

再在main方法中定义:

two=new TwoListen();

这时就可以用two代替this了

java中this的用法?的更多相关文章

  1. 转:十八、java中this的用法

    http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...

  2. Java 中 synchronized的用法详解(四种用法)

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ...

  3. java成神之——java中string的用法

    java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取 ...

  4. java中stringBuilder的用法

    java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需 ...

  5. 第一篇 网站基础知识 第4章 Java中Socket的用法

    第4章 Java中Socket的用法 4.1 普通Socket的用法 Java中的网络通信是通过Socket实现的,Socket分为ServetSocket和Socket两大类,ServetSocke ...

  6. Java中的Socket用法

    转发链接:https://www.cnblogs.com/zhanglei93/p/6217384.html (1)Java中的Socket用法 Java中的Socket分为普通的Socket和Nio ...

  7. 初探java中this的用法

    一般this在各类语言中都表示“调用当前函数的对象”,java中也存在这种用法: public class Leaf { int i = 0; Leaf increment(){ i++; retur ...

  8. Java中getResourceAsStream的用法

    首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在 ...

  9. Java中Synchronized的用法

    原文:http://blog.csdn.net/luoweifu/article/details/46613015 作者:luoweifu 转载请标名出处 <编程思想之多线程与多进程(1)——以 ...

随机推荐

  1. haskell读写文件相关(含二进制)

    使用System.IO模块 使用函数 openBinaryFile :: FilePath -> IOMode -> IO Handle 打开文件 IOMode为 ReadWriteMod ...

  2. xcode黑科技

    1多开模拟器 使用命令行: cd /Applications/Xcode1.app/Contents/Developer/Applications/&open -n Simulator.app ...

  3. 获取iframe外边数据

    http://biancheng.dnbcw.info/javascript/178184.html

  4. static final的理解

    static: static静态,可以修饰类,成员变量,成员方法,代码块.static修饰的成员变量和方法独立于该类的任何对象,也就是被类的所有成员共享,这要这个类被加载,虚拟机就能根据类名在运行时数 ...

  5. Eclipse中Ant的配置与测试 转

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  6. js解码

    如代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  7. Django开发博客- 三部曲

    其实在django中实现一个功能只需要三个步骤即可,这里我姑且叫它三部曲. 这三部曲就是: 定义urls映射 定义views 定义templates 什么是URL? URL就算一个WEB地址,你在浏览 ...

  8. php_curl.dll libssh2.dll 始终无法加载的原因 及解决办法

    在StackOverflow得到最终原因及解决办法 http://stackoverflow.com/questions/16424117/php-unable-to-load-php-curl-dl ...

  9. datagridview 中添加了一个button类型的列,怎么写button的事件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. 小例子(一)、MD5加密

    一个MD5加密的小案例 代码如下: using System; using System.Text; using CCWin; using System.Security.Cryptography; ...