转:http://www.cnblogs.com/jeffchen/archive/2006/03/20/353914.html
关键字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句柄会自动应用于其他方法。
写的可能不详细,以后遇到再补充吧!
相关推荐
### Java关键字总结 Java是一种广泛使用的面向对象编程语言,它具备简单性、可移植性、高性能等特点。在Java中,关键字具有特殊的语法含义,不能用作标识符(例如变量名或方法名)。以下是对给定文件中提到的Java...
### Java关键字分类解释 #### 一、类与接口定义关键字 - **class**: 在Java中,`class`关键字用于声明一个类。类是面向对象编程的基本单元,它定义了一组属性(成员变量)和方法(成员函数),这些共同构成了一个...
本总结旨在梳理Java中的关键字,包括this和super的使用、final修饰符的含义、static关键字的作用、以及abstract的使用规则。 首先,关键字this用于区分成员变量和局部变量。在Java中,如果方法中的参数名称和成员...
在本节中,我们将详细介绍Java关键字static的概念、特性和应用场景。 一、static的概念和特性 在Java中,static关键字用于修饰成员变量和成员方法,以实现“伪全局”概念。static修饰的成员变量和成员方法是独立于...
这篇文档《Java关键字详细解》将深入探讨Java中的关键字及其用途。 首先,我们来看看Java中的主要关键字。`public`、`private`、`protected`是访问修饰符,用于控制类、方法和变量的访问权限。`public`可以被任何...
JAVA关键字列表 Java是一种面向对象的编程语言,具有多种关键字,用于控制程序的执行、定义变量、类和方法等。本文档系统列举了Java的关键字及其用法分类,总共分为以下几个类别:访问控制、类、变量修饰符、流程...
总结:`static`关键字在Java编程中扮演着重要角色,它允许开发者创建类级别的变量和方法,方便共享数据和提供类级别的功能。然而,使用`static`时需要注意其限制,避免过度依赖静态成员,以保持良好的面向对象设计...
### Java关键字详解 #### 概述 Java是一种广泛使用的面向对象编程语言,它拥有丰富的关键字集,用于控制程序的行为和结构。Java关键字是由Java语言预定义的标识符,具有特殊的含义,不能用作变量名、方法名或类名等...
通过以上对Java关键字的详细介绍,我们可以看出Java的关键字覆盖了语言的基础语法和核心特性。理解并掌握这些关键字对于编写高效、可靠的Java程序至关重要。希望本文能帮助读者更好地掌握Java编程的基础知识。
Java关键字是编程的基础,它们是Java语言预定义的标识符,具有特殊含义并被Java编译器识别。在Java中,一共有51个关键字(包括保留字),但描述中提到的是48个,可能是因为某些关键字在特定上下文不常用或者被归类到...
Java关键字和命名规范是Java编程语言中的基础概念,它们对于编写清晰、规范的代码至关重要。Java关键字是Java语言内置的、具有特殊用途的保留字,而命名规范则是关于如何给类、方法、变量等命名的约定。 ### Java...
Java 共有 50 多个关键字,它们包括但不限于 `abstract`、`assert`、`boolean`、`break`、`byte`、`case`、`catch`、`char`、`class`、`const`(虽然未使用)、`continue`、`default`、`do`、`double`、`else`、`...
下面是对Java关键字的详细解释: 1. `abstract`: 用于定义抽象类或抽象方法,表示类或方法没有具体实现,需要子类进行具体实现。 2. `boolean`: 表示逻辑值,只有两个可能的值,`true` 和 `false`。 3. `break`: ...
### Java关键字详解 #### 前言 Java作为一种广泛使用的编程语言,在软件开发领域占据了重要的地位。Java的关键字,即保留字,是Java语言中具有特殊意义的标识符,它们预定义并保留用于语言本身的语法结构。理解这些...
Java关键字是编程的基础,它们是Java语言预定义的、具有特殊含义的标识符,不能作为变量名、方法名或类名。以下是对50个Java关键字的详细解释: 1. **abstract**:用于声明抽象类或抽象方法,不包含具体实现。 2. ...
面向对象编程是Java的核心特性,本章节主要探讨了两个关键概念——`this`关键字和`static`关键字。在深入理解这两个概念之前,我们先要明白面向对象编程的基本思想:封装、继承和多态。 `this`关键字在Java中用于...
对于新手来说,理解Java的关键字是非常重要的一步,因为它们构成了语言的基础并指导了代码的结构和行为。 Java的关键字是被语言本身保留的词汇,它们有特定的含义和功能。例如,`byte`, `short`, `int`, `long`, `...
Java关键字是编程的基础,它们是Java语言预定义的标识符,具有特定的含义和功能,不能用作变量名、方法名或类名。在Java中,关键字是保留给编译器使用的,它们对于理解程序的结构和控制流程至关重要。本文将深入探讨...
Java 关键字和标识符的使用 Java 编程语言中,关键字和标识符是两个非常重要的概念,它们在编程中扮演着不同的角色。关键字是 Java 语言中预定义的单词,它们具有特殊的含义和用途,而标识符则是开发者自行定义的...