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. 由《win32多线程程序设计》临界区的问题所想

    之前看侯捷翻译的<win32多线程程序设计>中关于线程同步中的临界区问题,其中举得例子是对链表的操作.死锁的问题是对一个Swaplist函数的问题,现列举代码如下: void SwapLi ...

  2. hiho_1081_最短路径1

    题目 最短路模板题目,纯练习手速. 实现 #include<iostream> #include<string.h> #include<iostream> #inc ...

  3. java 异常2

    自定义异常类: import java.util.Scanner; /** * Created by lenovo on 2016/8/12. */ class NoMoneyException ex ...

  4. robot API笔记3

    robot.htmldata package 包编写HTML格式的输出文件. 这个包被认为是稳定的但不是公共API的一部分. Submodules robot.htmldata.htmlfilewri ...

  5. Excel中的隐藏函数

    excel有一些隐藏函数,这些函数在帮助文件中找不到介绍,常用的有以下三个: 1.DATEDIF() 功能:计算两个日期的差值 语法:DATEDIF(start_date,end_date,unit) ...

  6. NT内存

    在NT/2K/XP中,操作系统利用虚拟内存管理技术来维护地址空间映像,每个进程分配一个4GB的虚拟地址空间.运行在用户态的应用程序,不能直接访问物理内存地址:而运行在核心态的驱动程序,能将虚拟地址空间 ...

  7. Word Search [LeetCode]

    Problem Description: http://oj.leetcode.com/problems/word-search/ Basic idea: recursively go forward ...

  8. DataTable 转成字符串数组

    private static string[] autoCompleteWordList = null; public string[] GetCompleteDepart(int count,str ...

  9. CSS3 Media Queries

    Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: <link href="css/reset.css" rel= ...

  10. php -l 检查文件是否语法错误

    有时候在进行网页开发的时候,后台文件的语法错误比较难检查出来,这时候使用php -l filename可对文件的语法进行检查.