0 0

java static块3

我对static块布怎么了解,只是知道static块会在一开始被初始化,而且只执行一次.
高手们给深入的讲讲,最好能给个例子。谢谢了!
2010年2月07日 21:50

6个答案 按时间排序 按投票排序

0 0

要从底层来说这个问题,jvm在运行的时候,static直接是耗了栈内存,而new是堆内存

2010年2月09日 10:42
0 0

记住它是单实例就像数据库加只读锁一样的就行了

2010年2月08日 23:55
0 0

上面给出的答案都挺好的,我知道的 java编程思想 里面对这块给出了比较详细的解析,例子也比较清楚,有这本书的话去翻翻 :0

2010年2月08日 09:06
0 0


详细的解释,参见《Java深度历险》简单的例子:

public class StaticDemo {

	public static String info ;
	private String other ;
	
	static {
		info = "静态语句块能操纵静态的对象";
		//other = "无法操纵非static对象";
		System.out.println(" == StaticDemo 被加载到JVM == ");
	}

	public StaticDemo(){
		System.out.println(" StaticDemo 被实例化了。");
	}

}


public class StaticTest {

	public static void main(String[] args) {
		
		// 加载到JVM中,默认的方式
		try {
			// 等效于Class.forName("StaticDemo");
			Class.forName("StaticDemo", true, StaticTest.class.getClassLoader());
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		// 加载的JVM时,info被赋值了
		System.out.println("info对象 ==> "+StaticDemo.info);
		
		// 实例化对象,注意此时Static语句块中的内容不再出现
		StaticDemo obj1 = new StaticDemo();
		StaticDemo obj2 = new StaticDemo();
		
	}
}


你可以对照着输出,体会一下。

2010年2月07日 23:45
0 0

import java.util.ArrayList;
import java.util.List;

public class Test {
	private static List list = new ArrayList() {
		{
			add(new Object());
			// ...
		}
	};
	//  除了这样初始化list之外,还可以如下:
	private static List list2;
	static {
		list2 = new ArrayList();
		list2.add(new Object());
		// ...
	}

	// private static A a = new A(); 这样写就不允许了
	private static A a;
	static {
		try {
			a = new A();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	static class A {
		public A() throws Exception {
		}
	}
}

2010年2月07日 22:13
0 0

static块一般用于做初始化操作,执行顺序是有static声明的从上至下(包括static变量及static块)。
import java.util.ArrayList;
import java.util.List;

public class Test {
private static List list = new ArrayList() {
{
add(new Object());
// ...
}
};
//  除了这样初始化list之外,还可以如下:
private static List list2;
static {
list2 = new ArrayList();
list2.add(new Object());
// ...
}

// private static A a = new A(); 这样写就不允许了
private static A a;
static {
try {
a = new A();
} catch (Exception e) {
e.printStackTrace();
}
}

static class A {
public A() throws Exception {
}
}
}

2010年2月07日 22:11

相关推荐

    java static块和构造函数的实例详解

    Java static 块和构造函数的实例详解 Java static 块和构造函数是 Java 编程语言中两个非常重要的概念,它们在 Java 程序的执行过程中扮演着重要的角色。今天,我们将深入探讨 Java static 块和构造函数的实例详解...

    Java中的Static块与静态方法

    本文将深入探讨Java中的静态块与静态方法,解析它们的区别、联系以及执行顺序,帮助读者更全面地理解`static`关键字在Java中的运用。 ### 静态方法 静态方法是通过`static`关键字声明的,它属于类而不属于类的任何...

    java中static作用

    static 是 Java 语言中一个关键字,表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态代码块。在 Java 语言中,没有全局变量的概念,但是可以使用 static 来实现类似于全局变量的效果。 ...

    java中的static变量,方法,代码块

    在Java编程语言中,`static`关键字扮演着极其重要的角色,它主要用于声明类的成员变量、方法以及代码块为静态。本文将深入探讨`static`在变量、方法和代码块中的应用,通过示例和解释帮助读者更深刻地理解其功能与...

    Java static静态初始快

    当我们讨论“Java static静态初始化块”时,我们关注的是如何在类加载时执行特定的初始化代码。 首先,让我们理解`static`关键字的基本概念。`static`在Java中用于声明类变量或静态方法,这些变量和方法不需要创建...

    java中static属性学习

    本文详细介绍了Java中的`static`属性,包括静态成员变量、静态方法以及静态语句块的概念和使用方法。通过具体的代码示例,我们不仅了解了`static`关键字的基本用法,还深入探讨了静态成员变量如何在整个类之间共享,...

    Java中的static关键字

    Java 中的 static 关键字 Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以...

    java视频 static关键字

    在Java编程语言中,`static`关键字是一个非常重要的修饰符,它有多种用途,涉及到类、对象以及变量和方法的生命周期。本视频教程详细讲解了`static`关键字在Java中的应用及其背后的原理。 首先,我们要理解`static`...

    Java static修饰成员变量

    综上所述,`static`关键字在Java中具有多种用途,包括定义类变量、类方法、静态初始化块以及静态内部类。理解和正确使用`static`对于编写高效、可维护的Java代码至关重要。在实际编程中,要根据需求选择是否使用`...

    Java静态初始化块和对象初始化块

    静态初始化块是以`static`关键字标识的代码块,它在类被加载到Java虚拟机(JVM)时执行,且只执行一次。静态初始化块常用于设置类级别的变量,或者执行只应执行一次的初始化操作。例如,如果一个类需要在程序运行前...

    java中final和static的区别

    Java 中 final 和 static 的区别 final 关键字在 Java 中有多种用法,包括修饰变量、方法、类等。下面是 final 关键字的各种用法: 1. final 修饰变量:表示该变量一旦被初始化,程序无法修改变量的值,该变量变成...

    Static块---马克-to-win Java视频

    Static块 马克-to-win Java视频 静态块 静态块初始化

    java 静态块实例块构造器调用

    Java编程语言中,类的初始化过程涉及到静态块(static block)、实例块(instance block)以及构造器(constructor)。这些块的执行顺序对于理解和编写复杂的Java程序至关重要,特别是在涉及继承关系时。下面我们将...

    关于static的小结(Java内存溢出)

    `static`关键字在Java语言中扮演着重要的角色,它主要用于声明静态变量、静态方法或静态代码块。当一个成员被标记为`static`时,意味着这个成员属于类本身而非对象实例。这意味着无论创建多少个该类的对象,`static`...

    java中static的作用

    static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块

    static 在java中的作用

    `static`是Java语言中的一个关键字,主要用来修饰类成员(变量、方法或代码块),其核心功能在于定义类级别的共享属性。通过使用`static`,可以实现对类属性和方法的共享访问,而无需创建类的实例。这在实际编程中...

    Java基础练习题练习下静态块的用处

    在Java编程语言中,静态块(Static Block)是一种特殊的代码段,主要用于类的初始化。它在类被加载到Java虚拟机(JVM)时执行,且只执行一次。静态块通常用于初始化静态变量或者进行一些类级别的设置工作,而不涉及...

    Java关键字final、static使用总结

    "Java关键字final、static使用总结" 在 Java 编程语言中,final 和 static 是两个非常重要的关键字,它们可以用来修饰类、方法、变量等,了解它们的使用方法和限制非常重要。本文将详细总结 final 和 static 的使用...

    Static块2---马克-to-win Java视频

    Static块 2---马克-to-win Java视频 java视频 马克Java社区 马克towin

Global site tag (gtag.js) - Google Analytics