Java Notes: Java的this和static
2016-07-29 16:06
344 查看
this 关键字:
Java调用非静态的成员方法的机制中需要将当前调用方法的对象传入方法,以识别是谁调用该方法。(隐式传入)
例如:
这里的a.func(1)实质是Banana.func(a,1),而b.func(1)的实质是Banana(b,2)。但这只是编译器内部的写法,不能这样写程序。但是如果我需要使用传入函数的对象引用,可使用this关键字。this只能在方法内使用,表示调用方法的那个对象。
而通常会用到this的时候:
1) 为了区分同名的参数:
public class Point {
private int x;
public Point(int x) { this.x = x;}
}
2) 为了调用本身的另外一个构造器
public Rectangle() {
this(1,1);
}
public Rectangle(int width, int height) {
......
}
static 关键字:
static方法就是没有this的方法。调用语法只能是用"类名.静态方法()"。没有this,意味着不能传进调用的当前对象,所以不能使用对象去调用方法。所以,在静态方法内部不能直接调用非静态的方法,因为没有this对象。但是非静态方法是可以访问静态方法和静态域的。
由于Java禁止使用全局方法,所以使用static方法来代替。static方法可以访问属于同类的static方法和static变量。我们称static方法为属于该类的东西。由所有类的对象所共享。
Java调用非静态的成员方法的机制中需要将当前调用方法的对象传入方法,以识别是谁调用该方法。(隐式传入)
例如:
public class Banana{ public void func(int i){ } public static void main(String[] args){ Banana a = new Banana(); Banana b = new Banana(); a.func(1); b.func(2); } }
这里的a.func(1)实质是Banana.func(a,1),而b.func(1)的实质是Banana(b,2)。但这只是编译器内部的写法,不能这样写程序。但是如果我需要使用传入函数的对象引用,可使用this关键字。this只能在方法内使用,表示调用方法的那个对象。
而通常会用到this的时候:
1) 为了区分同名的参数:
public class Point {
private int x;
public Point(int x) { this.x = x;}
}
2) 为了调用本身的另外一个构造器
public Rectangle() {
this(1,1);
}
public Rectangle(int width, int height) {
......
}
static 关键字:
static方法就是没有this的方法。调用语法只能是用"类名.静态方法()"。没有this,意味着不能传进调用的当前对象,所以不能使用对象去调用方法。所以,在静态方法内部不能直接调用非静态的方法,因为没有this对象。但是非静态方法是可以访问静态方法和静态域的。
由于Java禁止使用全局方法,所以使用static方法来代替。static方法可以访问属于同类的static方法和static变量。我们称static方法为属于该类的东西。由所有类的对象所共享。
相关文章推荐
- Java Notes: Java的this和static
- Java 8的新特性—终极版
- Java注释@interface的用法【转】
- 在eclipse查看jdk源码
- Java Web基础——Action+Service +Dao三层的功能划分
- java-工具类-读取配置文件
- JAVA中的“抽象接口”
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
- win10在myeclipse中运行hadoop程序出错
- Java输入输出流方法
- java反射机制以及Method.invoke解释
- 关于Eclipse中遇到的经常性参数报错问题总结
- 部署spring boot应用
- Java实现追加换行写信息到.txt文件
- 浅谈java反射机制
- JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
- Java的开发准备及环境配置
- IT十八掌第四天课程
- BaseServlet
- Java——定时请求后端接口数据发送RabbitMQ消息队列到指定MQ服务器