在传递给对象参数的时候,Java编译器自动先加上了一个this参数,它表示传递的是这个对象引用,虽然他们两个对象共用一个方法,但是他们的方法中所产生的数据是私有的,这是因为参数被传进来变成call stack内的entry,而各个对象都有不同call stack,所以不会混淆。
其实调用每个非static方法时,Java编译器都会自动的先加上当前调用此方法对象的参数,有时候在一个方法调用另一个方法,这时可以不用在前面加上this的,因为要传递的对象参数就是当前执行这个方法的对象。
为什么静态方法中不能调用非静态方法?这是因为静态方法直接跟class相关,调用此方法的时候是类直接调用的,而不是对象,所以Java编译器就没有对象参数可以传递,这样,如果你在静态方法内部调用非静态方法,那么Java编译器怎么判断这个非静态方法是哪个对象调用的?对吧,所以Java编译器就会报错,但是也不是绝对的,Java编译器是隐式的传递对象参数,那么我们总可以显示的传递对象参数吧,如果我们把某个对象的引用传递到static方法里,然后通过这个引用就可以调用非静态方法和访问非静态数据成员了。
参考 http://cantellow.iteye.com/blog/355044
分享到:
相关推荐
类的static、const、static const、const static成员的初始化 在 C++ 编程中,static、const、static const 和 const static 是四个常见的概念,但它们的初始化方式却容易弄混淆。下面我们将对这四种成员变量的初始...
理解`static`方法和非`static`(也称为实例方法)方法的区别是Java学习过程中的重要一环。我们将深入探讨这两个概念,以及它们的调用方式和应用场景。 首先,让我们来定义`static`方法。`static`方法属于类,而不是...
`static`关键字可以用来修饰成员变量、方法、代码块以及内部类,每种情况都有其特定的含义和用途。 首先,我们来看`static`修饰成员变量的情况。成员变量是属于类的,每个对象都有自己的副本。但当成员变量前加上`...
4. 用 private 修饰的 static 成员变量和成员方法,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用),但是不能在其他类中通过类名来直接引用,这一点很...
Java中static和非static的区别 static和非static是Java中...Java中static和非static的区别是非常重要的知识点,它们的区别决定了变量和方法的生命周期和作用域,编程中正确地使用static和非static关键字是非常重要的。
在Java编程语言中,`static`关键字扮演着至关重要的角色,它被用于声明类成员(如变量、方法)为静态的。静态成员不依赖于任何特定的对象实例,而是与类本身绑定,这意味着无论该类有多少个实例,静态成员只会有一份...
在Java编程语言中,`static`关键字扮演着至关重要的角色,它定义了类级别的变量和方法,不受实例化对象的影响。本篇文章将深入探讨`static`的使用方法、原理及其在代码块中的应用。 首先,我们要理解`static`修饰符...
2. **访问限制**:静态方法可以访问类的静态变量和静态方法,但不能直接访问非静态(实例)变量和方法,因为它们与特定的对象实例相关联。 3. **无this引用**:在静态方法内部,无法使用`this`关键字,因为它指向...
#### 在类外调用Static成员 静态方法和变量可以在它们所属的类之外独立使用,只需要使用类名后跟点运算符即可。例如,调用静态方法: ```java StaticDemo.callme(); ``` 或者访问静态变量: ```java System.out....
在PHP编程语言中,`static`关键字用于定义类的静态属性和方法,它们与类的实例(对象)无关,而是直接关联到类本身。理解静态方法和非静态方法的使用和区别是掌握PHP面向对象编程的关键。 静态方法是通过类名直接...
### C++中Static的使用方法详解 #### 一、Static的基本概念 1. **什么是Static?** - `static`是C++中的一个重要关键字,主要用于控制变量的存储方式和可见性。 - 在C++中,`static`可以用于局部变量、全局变量...
静态导入可以简化代码,提高代码的可读性和维护性,而普通导入则需要使用类名或包名来访问成员变量和方法。 使用静态导入的原则 在使用静态导入时,需要遵守以下几条原则: 1. 使用import static语句,而不是...
Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以直接通过类名调用,不需要...
首先,"static" 关键字在 Java 中主要负责声明类级别的变量和方法,而不是实例级别的。这意味着它们属于类本身,而不属于任何特定的对象实例。当我们定义一个 static 变量时,所有对象共享同一个变量的值;对于 ...
static 是 Java 语言中一个关键字,表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态代码块。在 Java 语言中,没有全局变量的概念,但是可以使用 static 来实现类似于全局变量的效果。 ...
在C++编程中,`static`关键字有着独特的用途,它主要用在变量和函数的声明上,以控制它们的存储方式、作用域和生命周期。以下是关于`static`变量和`static`函数的详细解释。 **一、static变量** 1. **静态局部变量...
在Java编程语言中,`static`关键字扮演着极其重要的角色,它主要用于声明类的成员变量、方法以及代码块为静态。本文将深入探讨`static`在变量、方法和代码块中的应用,通过示例和解释帮助读者更深刻地理解其功能与...
除了变量和方法外,`static`还可以用来修饰内部类。当内部类被声明为`static`时,它就变成了一个静态内部类。静态内部类的特点是不依赖于外部类的实例就可以创建自己的实例,同时它不能访问外部类的非静态成员。 ...
虽然JavaScript本身不支持static关键字,但可以通过在函数作用域或全局作用域直接定义函数和变量来模拟static成员。由于它们不属于任何对象的实例,所以可以被任何实例共享。在上面的示例中,我们创建了一个Console...