Java中的静态变量和静态函数

Java中的静态变量和静态函数(方法)和C++中也类似。有几点需要重新复习一下:

1)如果想让一个类的所有对象共享数据,可以使用静态变量;如果想共享函数,可以使用静态函数。

2)如果某个对象修改了静态变量的值,那么该类的所有对象都会受到影响。

3)静态变量和静态函数在类创建对象之前就可以调用,这点和普通的变量函数很不一样。

4)常量可以声明为final static,所有对象都共享。

5)访问一个类的静态变量和静态函数,一般都使用“类名.静态变量”或者"类名.静态函数"的方式,不适用对象名调用,因为这样可以直接看出是调用的静态变量和函数。

一个简单的基础代码帮助理解Java中的静态变量和静态函数的使用。

/***
 *
 * @author Administrator
 *
 */
class Circle2 {
	/**
	 * CLASS CIRCLE2
	 *
	 * Data: radius, numberOfObjects
	 *
	 * Functions: getNumberOfObjects2
	 */

	double radius;
	static int numberOfObjects; 

	Circle2() {
		radius = 1.0 ;
		numberOfObjects++;
	}

	Circle2(double newRadius) {
		radius = newRadius;
		numberOfObjects++;
	}

	static int getNumberOfObjects2() {
		numberOfObjects++;
		return numberOfObjects;
	}
}

public class TestingStaticVariable {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		System.out.println("The numebr of Objects is " + Circle2.numberOfObjects + " and " + Circle2.getNumberOfObjects2()); 

		Circle c1 = new Circle();
		System.out.println("The numebr of Objects is " + Circle2.numberOfObjects + " and " + Circle2.getNumberOfObjects2());

		Circle c2= new Circle(10.0);
		System.out.println("The numebr of Objects is " + Circle2.numberOfObjects + " and " + Circle2.getNumberOfObjects2());

	}

}

结果:

The numebr of Objects is 0 and 1
The numebr of Objects is 1 and 2
The numebr of Objects is 2 and 3
时间: 2024-08-25 14:26:08

Java中的静态变量和静态函数的相关文章

Java中的静态变量、静态方法、静态代码块

转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是静态方法.要实现这样的效果,只需要在类中定义的方法前加上static关键字.例如: public static int maximum(int n1,int n2) 使用类的静态方法时,注意:a在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的

java中的静态变量,静态方法与静态代码块详解

java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象. 静态变量有两种情况: 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用 静态变量是一个引用.这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它. 因此如果

java中的静态变量

大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中被 static 修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.静态成员可以使用类名直接访问,也可以使用对象名进行访问.当然,鉴于他作用的特殊性更推荐用类名访问~~ 使用 static 可以修饰变量.方法和代码块. 本小节,我们先认识一下静态变量. 例

Java中的静态变量static

package com.wangcf; public class Test { String name="你好"; static String sex="男"; Test t=new Test(); /** * 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员 * 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量 */ public static void print(){ Test test=new Test(

Java中的静态变量、实例变量和局部变量及其特征

变量类型 说明 特征 类变量(静态变量) 独立于方法之外的变量,用   static 修饰 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外.     无论一个类创建了多少个对象,类只拥有类变量的一份拷贝.     静态变量除了被声明为常量外很少使用.常量是指声明为public/private,final和static类型的变量.常量初始化后不可改变.     静态变量储存在静态存储区.经常被声明为常量,很少单独使用static声明变量.     静态变量在

java 静态变量与静态函数

%带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 在调用带有静态方法的类中的静态方法的时候,直接用类名.方法名就可以了.例如,math.sin(); Java的静态变量和静态函数 静态变量: 在JAVA中类在声明的时候,其实并没有申请和产生内存空间,就如同我们的一个切实可行的想法,但其实并没有去实施这个想法.而类只有在用这种数据类型创建一个类的对象的时候,才能在内存中申请和产生类大小的内存空间,这一块内存空间是用来存放成员变量和成员函数的备份.所以在类声明的时候,是不可以对成员变量进行

java 类的静态变量

主要是记录一个奇葩的现象,java类中的静态变量,不仅可以通过类名称直接调用,而且还可以通过类的实力对象调用,java是不存在静态类的,如果非要用静态的类那就是内部类. 类中的静态变量是存储在JVM方法区中,线程共享的. public class HasStatic { public static int x = 100; public static void main(String args[]) { HasStatic hasStatic1 = new HasStatic(); hasSta

Java中的静态和枚举

一.静态成员 对静态成员最简单的解释,静态成员属于整个类而不属于某个对象,所以又叫做类变量.一个类不管创建多少个实例对象,静态变量在内存中有且只有一个(调用方法用类名调用). 通常的非静态变量称为实例变量,只有实例化后才可使用. 二.静态方法 类似于静态变量,在类装载时被载入内存,不会自动销毁,不用实例化,且静态方法不能被重写. 静态方法只能访问类中的静态变量和静态方法不能访问实例变量和实例方法(因为静态方法在java虚拟机中在对象之前被加载,如果静态方法要访问实例变量或者方法可能其还没被创建)

实例甜点 Unreal Engine 4迷你教程(5)之函数中的静态变量

本小节的教程无前置教程,可直接学习,篇幅很短. 本教程浓缩起来就是一句话:函数中的静态变量在调试过程中保留值.所以需要谨慎对待. 什么意思?请先不要一步一步对着做,而整体地看一遍下面的过程: 第一步:创建一个空工程(C++ Basic Code),名为LearnArray: 第二步:创建两个Actor类分别称为:MyActor和sand: 第三步:在MyActor中有tick函数如下: ▼代码开始 // Called every frame void AMyActor::Tick(float D