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. Java Garbage Collection/垃圾收集 策略查看

    Java 的垃圾收集有各种各样的策略,默认的策略也会经常的改变. --比如到底是 serial , parallel, CMS; 具体到 Minor 怎么样,Old 又怎么样? 命令 java -XX ...

  2. 20160805_Win7x64刻录CentOS6.4x64启动光盘

    使用的软件为:UltraISO.v.9.6.2.3059.exe Win7 x64 刻录 CentOS6.4 x64 启动盘,有提示错误信息. 网上查了一下,是 AHCI 的驱动没有安装.来到 联想t ...

  3. python语法笔记(二)

    1. 循环对象 循环对象是一类特殊的对象,它包含一个next()方法(在python3中是 __next__()方法),该方法的目的是进行到下一个结果,而在结束一系列结果之后,举出 StopItera ...

  4. 如何设置session过期时间为30分钟

    今天在我的微博(Laruence)上发出一个问题: 我在面试的时候, 经常会问一个问题: “如何设置一个30分钟过期的Session?”, 大家不要觉得看似简单, 这里面包含的知识挺多, 特别适合考察 ...

  5. ajax请求超时时间

    http://www.cnblogs.com/charling/p/3356216.html get post 请求 http://www.cnblogs.com/oneword/archive/20 ...

  6. 提高php开发效率的9大代码片段

    在网站开发中,我们都期望能高效快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是极好的.php开发福利来了,今天小编就将为大家分享9大超实用的.可节省大量开发时间的php代码片段. ...

  7. android widget 点击进入应用

    package com.ljapps.wifix.ui.provider; import android.app.PendingIntent; import android.appwidget.App ...

  8. 5-2-2 printf参数从右往左压栈

    5-2-2 C中printf计算参数时是从右到左压栈的 #include <stdio.h> int main (int argc, char **argv) { ; ,,,,}; int ...

  9. webpack安装配置使用教程详解

    webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...

  10. 游戏引擎/GUI的设计与实现-序

    几年前写<嵌入式GUI FTK设计与实现>,没写几篇就停止更新了.当时自己研究过MicroWindows, X Window, DirectFB, GTK+和Android的GUI,又写过 ...