关于static关键字的一道题.(2.11,练习8)
编写一个程序,展示无论你创建了某个类的多少个对象,这个类中的某个static域只有一个实例
解题思路:::设置一个测试对象,该对象中含有一个静态字段a,和一个静态方法incrementA(对a执行加1操作),创建俩个该类的对象,在用类名称,对象o1和o2分别执行incrmentA操作后,,若输出a的结果一致,证明a只存在一个实例.
/**
*
* @author biao
*
*/
public class StaticTest {
public static void main(String[] args) {
System.out.println("a的初值:"+ObjectTest.a);
ObjectTest o1 = new ObjectTest();
ObjectTest o2 = new ObjectTest();
System.out.println("o1对象调用的值:"+o1.a);
System.out.println("o2对象调用的值:"+o2.a);
ObjectTest.incrementA();
System.out.println("ObjectTest类型进行incrementA操作后,o1对象调用的值:"+o1.a);
System.out.println("ObjectTest类型进行incrementA操作后,o2对象调用的值:"+o2.a);
o1.incrementA();
System.out.println("o1类型进行incrementA操作后,o1对象调用的值:"+o1.a);
System.out.println("o1类型进行incrementA操作后,o2对象调用的值:"+o2.a);
o2.incrementA();
System.out.println("o2类型进行incrementA操作后,o1对象调用的值:"+o1.a);
System.out.println("o2类型进行incrementA操作后,o2对象调用的值:"+o2.a);
}
}
class ObjectTest{
public static int a = 10;
public static void incrementA(){
ObjectTest.a++;
}
}
分享到:
- 2009-10-31 16:10
- 浏览 1465
- 评论(1)
- 论坛回复 / 浏览 (1 / 1848)
- 查看更多
相关推荐
这意味着,无论创建多少个类的对象,静态域只有一份存储空间,所有对象共享这个值。当静态域被声明时,通常使用`static`关键字,例如: ```java public class MyClass { static int count = 0; // 静态域,所有...
在“ATL只允许一个实例运行”的场景中,我们通常指的是实现单例模式(Singleton Pattern)来确保应用程序只有一个实例在运行。单例模式是一种设计模式,它保证了类只有一个实例,并提供一个全局访问点。 在ATL中...
- `SetCourse` 是一个静态方法,因为它只需要访问静态数据域,无需创建 `Student` 类的实例即可调用。它接受一个 `Course` 类型的参数数组,可以根据实际选修的课程数来设置课程名和学分。 7. **只读属性...
这意味着你需要先创建一个类的实例,然后通过这个实例来调用该方法。实例方法可以访问和修改实例变量,因为它们与对象的状态紧密相关。例如,`String`类的`substring()`方法就是一个实例方法,它需要操作具体的字符...
在C++编程语言中,`static`关键字是一个非常重要的特性,它有多种用途,涉及到变量、函数、类成员等多个方面。下面将详细讲解`static`关键字的基本用法及其在不同场景下的应用。 1. **静态全局变量(Static Global ...
而`static`全局变量,也称为静态成员,只有一份共享的副本,不论创建多少个类实例,它们都指向同一个值。 - **局部变量与静态局部变量**:在方法内部,局部变量在方法调用时创建,方法结束时销毁。`static`应用于...
静态成员在类的所有实例间共享,也就是说,无论创建多少个类的实例,静态成员都只有一个副本。这个实例展示了静态成员如何被用来调用其他成员,包括静态和非静态成员。下面将详细探讨这一主题。 首先,我们来理解...
通过创建`MyClass`的两个实例`obj1`和`obj2`,我们可以看到它们各自拥有独立的`normalVar`副本,但共享同一个`staticVar`。当`setStatic`静态成员函数改变`staticVar`的值时,`obj1`和`obj2`的`printVars`输出都会...
最后,在C++中,`static`又被赋予了新的含义:表示属于一个类而非该类的特定实例的成员变量和成员函数。 #### 四、总结 - `static`关键字在C语言中有多种用途,包括但不限于定义全局静态变量、局部静态变量以及...
在示例中,`StaticDemo.x`就是一个静态变量,可以使用`StaticDemo.getX()`和`StaticDemo.setX(newX)`来读取和修改其值。这与实例变量不同,实例变量如`y`必须通过对象实例来访问,如`a.getY()`和`a.setY(newY)`。 2...
2. **“生存期”全局性和唯一性**:静态变量的全局生存期意味着在整个程序中只有一个实例,因此它们可以用于创建线程安全的计数器或避免局部对象的临时性问题,如在上述`IpToStr`函数中所示。 3. **初始化**:静态...
4. **只生成一个对象**:这部分可能涉及单例模式,这是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。这通常通过结合使用静态变量和私有构造函数实现。 5. **实践演示**:视频很可能通过实际编程...
在C++编程语言中,类的静态数据成员是一种特殊的数据成员,它不为每个类的实例单独分配存储空间,而是所有实例共享同一份存储。这种特性使得静态数据成员非常适合用来统计类的对象实例数量,因为无论通过类本身还是...
`static`修饰的变量是类变量,只有一份内存拷贝,所有对象共享。这意味着不论创建多少对象,类变量的值都是相同的。`final`修饰的变量是常量,一旦赋值后就不能改变。`volatile`关键字用于修饰多线程环境中的变量,...
函数的重载是指在一个类中可以存在多个同名函数,只要它们的参数个数或类型不同即可。函数的重载可以实现代码的多态性和灵活性。 程序的流程控制 程序的流程控制是指程序的执行过程可以被控制和管理的过程。在 ...
为了模拟类变量,可以在类实现局部定义个 static 修饰的全局变量,并提供一个类方法来暴露该全局变量。 单例模式是一种常用的设计模式,它可以确保在应用程序中只有一个实例的存在。单例模式的实现可以通过使用静态...
这意味着无论创建多少个对象,静态变量只有一份拷贝,所有对象共享同一份存储空间。例如: ```java public class MyClass { static int count = 0; } MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass...