关键字static和this是初学者比较头疼的知识点,自己也一直比较模糊.现在整理一下,既可以加深自己的印象也可以便于以后查询.
其实在think in java里关于为什么要使用static写的比较详细,不明白的多读几遍会有很大的收获.一般在两钟情形下需要使用static关键字:一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起.所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。而在这之前,对于非static数据和方法,我们必须创建一个对象,并用那个对象访问数据或方法。这是由于非static数据和方法必须知道它们操作的具体对象.有这样的一个类,其中定义一个静态数据:
class Test {
Static int i = 47;
}
Test st1 = new StaticTest();
Test st2 = new StaticTest();
即使们new了两个Test对象,但它们仍然只占据Test.i的一个存储空间。这两个对象都共享同样的i。对方法来说,static一项重要的用途就是帮助我们在不必创建对象的前提下调用那个方法.
静态变量)
一个静态对象属于一个类,但它不属于实例对象,也不是实例对象状态的一部分.每一个静态变量只存在一份.静态变量通常称为类变量(class variable).在实际中,经常需要这样的一个变量,它被一个类的所有实例对象所共享,如果它同时又是公有的,那么它就可以被这个类的任意访问者所使用.静态变量存在于类的作用域之内.通常声明为private.java中许多时候会用到public static final 这样的变量。
静态变量可以被位于同一个作用域内的任意方或静态方法访问,访问时使用变量名称即可。如果在类作用域以外访问类,则要使用一个含有类名的表达式访问静态变量,例如:
Integer.MAX_VALUE, 其中MAX_VALUE是在类库中声明过的。
静态方法)
静态方法或类方法属于一个而不是属于某个实例对象实现的一部分。可以直接通过类来调用这种方法,而并不是只能由某个特定的实例对象调用。静态的方法不能用abstract声明,而且无论是否明确地指定实际上都是final型的。
静态方法的声明格式:
modifiers static typeName methodName (parameterList){
statementSequence
}
modifiers(可以从public,protect,private中选择一个),后面可以加上final,nativc,synchronized中的一个或几个的组合。
static main是静态方法的一个特殊用法,用static main 方法来建立程序的初始状态,创建一组初始对象,并进行合理的方法调用,使得程序能够继续执行下去,static main方法使用String数组型参数包含了用户在运行时给出的任意命令行参数。
静态初始化器)
静态初始初始化器(static initializer)时一个语句序列,在装入一个类时执行它。我们用它来初始化静态变量,并且苦于完成一个类所需的其他初始化工作。静态变量可以被直接初始化,但是要进行更复杂的初始化,就需要静态初始化器。它提供了一种与实例变量初始化类似的机制。形式:
static{ statementSequence}
关于this.
this关键字(注意只能在方法内部使用)。This是一个final变量,在构造函数,实例方法和实例初始化器中被自动声明。它持有对调用该构造函数,方法或者初始化器的对象的一个引用。this的类型就是这个对象的引用的类型。
(1)当一个实例变量有可能被嵌套范围内的一个参数名称覆盖时:
class example
void f(int x)//parameter x hides the instance variable
{
this.x=x //this.x used to acess to the hidden instance variable
}
...
pravite int x=4;
}
(2)传递一个当前的对象的引用给其他类的其他方法:
{
...
A a = new A();
...
a.f(this);/pass this to method f of class A
...
}
(3)在构造函数相互关联的情况下,使用this可以让一个构造函数调用另外一个构造函数。用法是在一个this表达式后面追加一个位于括号中的参数列表,就可以调用与参数列表相匹配的构造函数。
public Test(){
this(10);//调用另一个int型的函数
}
若准备从自己某个类的另一个方法内部调用一个类方法。就不必使用this。只需简单地调用那个方法即可。当前的this句柄会自动应用于其他方法。
写的可能不详细,以后遇到再补充吧!
分享到:
相关推荐
总结起来,`static`、`this`、`super`和`final`是Java中用于控制类、对象和继承的关键字,它们帮助开发者创建健壮、可维护的代码。理解并熟练运用这些关键字是Java程序员必备的技能。在实际开发中,根据具体需求灵活...
总结起来,`static`、`this`、`super`和`final`是Java中控制对象生命周期、引用当前对象、访问父类成员以及确保数据不变性的重要工具。理解和熟练使用这些关键字对于编写高质量的Java代码至关重要。在实际编程中,应...
总结,`static`、`this`、`super`和`final`是Java中非常重要的关键字,它们在编写高质量的Java代码时扮演着至关重要的角色。理解并熟练运用这些关键字对于提高代码质量和可维护性具有重要意义。
《C语言static用法小结》 在C和C++编程中,`static`关键字扮演着重要的角色,它有三种主要的使用方式:局部静态变量、外部静态变量/函数以及静态数据成员/成员函数。本篇文章将详细阐述这三种用法,并结合实例探讨...
总结来说,`static`关键字在C++中扮演着多种角色,从控制变量的生命周期和作用域,到限制函数的可见性和使用范围,体现了C++中封装和信息隐藏的设计原则。理解并恰当地使用`static`,有助于编写更高效、更安全的代码...
### 如何使用Static的变量和方法 在Java编程语言中,`static`关键字是一个非常重要的概念,用于定义静态成员变量和方法。理解`static`如何工作对于任何Java开发者来说都是必不可少的,尤其是在处理多线程环境、单例...
`static`关键字在Java中主要用于创建静态成员,包括静态变量和静态方法。与普通成员不同,静态成员属于类级别,而不是实例级别。这意味着无论创建了多少个类的实例,静态成员只有一个副本存在于内存中。 #### 二、...
### C++中Static的使用方法详解 #### 一、Static的基本概念 1. **什么是Static?** - `static`是C++中的一个重要关键字,主要用于控制变量的存储方式和可见性。 - 在C++中,`static`可以用于局部变量、全局变量...
总结来说,static关键字在C++编程中扮演着至关重要的角色,它帮助我们控制变量的生命周期、作用域和初始化行为,同时也为我们提供了管理类资源的有效手段。理解并合理运用static,能够提高代码的质量和可维护性。
在本文中,我们将深入探讨`this`关键字的用法,通过示例程序来帮助理解其功能和应用场景。 首先,`this`关键字是一个隐式指针,它指向当前对象实例。当你在类的方法或属性中引用一个成员时,如果该成员与方法参数或...
然而,过度使用`static`方法可能会导致代码难以维护和测试,因为它们破坏了面向对象的设计原则,如封装和依赖注入。在设计类时,应谨慎考虑何时使用静态方法,以确保代码的可读性、可扩展性和可测试性。 总结来说,...
在Java编程语言中,`final`与`static`是两个非常关键且常用的关键字,它们各自具有独特的功能和用途,可以极大地增强代码的稳定性和可维护...理解并正确使用这两个关键字,能够帮助开发者编写出更高效、更健壮的代码。
Java this 和 super 代码实例及使用方法总结 Java 编程语言中,this 和 super 是两个非常重要的关键字,这两个关键字在面向对象编程中扮演着非常重要的角色。下面我们将详细介绍 Java 中 this 和 super 的用法。 ...
在Java编程语言中,`this`和`static`是两个非常关键的关键字,它们各自扮演着不同的角色,帮助我们更好地理解和使用类与对象。本文将深入探讨这两个关键字以及如何使用Javadoc工具生成文档。 首先,让我们来理解`...
总结,`this`和`static`是Java面向对象编程中的重要元素,`this`用于表示当前对象引用,方便访问实例变量和调用构造器;而`static`则用于定义类级别的成员,这些成员独立于对象存在,可以被所有实例共享。理解和熟练...
"Java 中 static 作用" static 是 Java 语言中一个关键字,表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以...理解 static 的作用可以帮助我们更好地使用 Java 语言,提高编程效率和代码质量。
### static 用法详解 #### 一、局部静态变量 局部静态变量是在C/C++中常见的一种变量类型,它的特点是生存期比普通的局部变量(即`auto`类型的局部变量)要长得多。局部静态变量存储在静态存储区,这意味着在整个...
通过使用`static`,开发者能够实现资源的有效管理和复用,提高程序的运行效率及可维护性。 #### 二、静态变量 ##### 2.1 定义 静态变量,也称为类变量,是指在内存中只有一个副本的变量。不论创建多少个类的实例...