当前位置:首页 » 编程语言 » java初始化静态

java初始化静态

发布时间: 2023-01-23 22:15:26

java 中什么叫做静态和非静态。 还有什么叫做静态初始化和动态初始化。

静态就是属于类的,非静态就是不属于类的,属于对象的
静态初始化和动态初始化是创建数组的概念。
静态初始化:创建数组时,程序员显式地为数组中的元素赋初值,你不指定数组长度
动态初始化:创建数组时,由系统默认地为数组中的元素赋初值,你指定数组长度
比如:静态初始化就是
int[]
a;
a
=
{1,2,3};
动态初始化:
int[]
a;
a
=
new
int[3];

❷ java 静态初始化顺序问题,求高手解答...本人菜鸟》。。

你好,很高兴收到你的求助。呵呵,也在看Thinking in java啊,在此支持一下。类的初始化顺序我的总结如下:希望你参照对比着写下,上面那些都不是问题:
对象的初始化顺序:
(1)加载父类(以下序号相同,表明初始化是按代码从上到下的顺序来的)
1.为父类的静态属性分配空间并赋于初值
1.执行父类静态初始化块;
(2)加载子类
2.为子类的静态属性分配空间并赋于初值
2.执行子类的静态的内容;
(3)加载父类构造器
3.初始化父类的非静态属性并赋于初值
3.执行父类的非静态代码块;
4.执行父类的构造方法;
(4)加载子类构造器
5.初始化子类的非静态属性并赋于初值
5.执行子类的非静态代码块;
6.执行子类的构造方法.
总之一句话,静态代码块内容先执行(父先后子),接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

❸ java 静态变量初始化为什么要用静态初始化

在java中用final修饰符修饰的变量表示不可以被二次赋值,且系统不会给其赋默认值。 如果单纯只是final变量,可以在定义的时候就赋默认值,也可以在构造方法中赋默认值。 但是如果同时用final static 修饰变量,因为static变量属于类而不属于对象,且在调用构造方法之前static 变量就已经被系统给赋默认值。而相应的final static 变量就只能在定义的时候就初始化,否则既无法在构造方法中初始化,系统又不会赋默认值,相当于这个变量被定义出来是毫无用处的。 因此java中final static变量必须初始化

❹ Java静态初始化块的问题

1、首先打开电脑上的eclipse软件,配置好jdk的,如下图所示。

❺ Java静态变量初始化问题

代码没贴全吧?static init B对应的代码没有,main方法也没有贴

仅针对“请问为什么a已经是11了,到了构造函数中却又变成了10?”,答复如下:
在原有代码基础上增加main方法,代码、执行输出、及说明如下:
package testjdbc.;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.;

import testjdbc.domain.Stock;

class A
{
public static int a=10;
public static A A1=new A(a);
public int b=20;
public int c;
static
{
System.out.println("static init in A");

}

A()
{
System.out.println("init A no parament");
show();

}
A(int aa)
{
System.out.println("构造函数 A1:aa="+aa+",A1:b="+b+",A1:c="+c+",A1:d="+d+",a="+a);//关键在这里,原来的代码里面的a其实是输入参数aa的值。关键点:(1)基本类型传递的是值,也即是说,调用static A A1=new A(a)时,将a当时的值传递给了临时变量aa;(2)作用域,当此构造函数入参命名为a时,方法里面的a实际上是引用的“作用域更小”的入参变量a,而不是类静态变量a
c=d+aa+b;

System.out.println("init A with parament int");
}

{
a++;
System.out.println("static ... A1:a="+a+"A1:b="+b+"A1:c="+c+"A1:d="+d);
b+=a;
}
public static int d=30;
static
{
System.out.println("static init in A, a="+a+",d="+d);

}
public void show()
{
System.out.println("A:a="+a+"A:b="+b+"A:c="+c+"A:d="+d);
System.out.println("A1:a="+A1.a+"A1:b="+A1.b+"A1:c="+A1.c+"A1:d="+A1.d);

}

public static void main(String[] args) {
System.out.println("main init");
}

}

执行输出:
static ... A1:a=11A1:b=20A1:c=0A1:d=0
构造函数 A1:aa=10,A1:b=31,A1:c=0,A1:d=0,a=11
init A with parament int
static init in A
static init in A, a=11,d=30
main init

❻ java类中的静态常量是什么时候初始化的

我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程。下面先对这三阶段做一个简单的描述,之后会结合一个简单的例子来说明java中类的初始化过程。

在装载阶段,类装载器(Bootstrap ClassLoader 或者用户自定义的ClassLoader) 把编译形成的class文件载入内存,创建类相关的Class对象,这个Class对象封装了我们要使用的类的类型信息。

连接阶段又可以分为三个子步骤:验证、准备和解析。
验证就是要确保java类型数据格式 的正确性,并适于JVM使用。
准备阶段,JVM为静态变量分配内存空间,并设置默认值,注意,这里是设置默认值,比如说int型的变量会被赋予默认值0 。在这个阶段,JVM可能还会为一些数据结构分配内存,目的 是提高运行程序的性能,比如说方法表。
解析过程就是在类型的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用。这个阶段可以被推迟到初始化之后,当程序运行的过程中真正使用某个符号引用的时候 再去解析它。

类会在首次被“主动使用”时执行初始化,为类(静态)变量赋予正确的初始值。在Java代码中,一个正确的初始值是通过类变量初始化语句或者静态初始化块给出的。而我们这里所说的主动使用 包括:
1. 创建类的实例
2. 调用类的静态方法
3. 使用类的非常量静态字段
4. 调用Java API中的某些反射方法
5. 初始化某个类的子类
6. 含有main()方法的类启动时

初始化一个类包括两个步骤:
1、 如果类存在直接父类的话,且直接父类还没有被初始化,则先初始化其直接父类
2、 如果类存在一个初始化方法,就执行此方法

❼ 高级Java开发中什么是静态初始化器

静态初始化器是由关键字static引导的一对大括号括起的语句组。它的作用与类的构造函数有些相似,都用来完成初始化的工作,但是静态初始化器与构造函数有三点根本的不同:
(1)构造函数是对每个新创建的对象初始化,而静态初始化器是对每个类进行初始化;
(2)构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用运行的;
(3)不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。
package com.text.java;
/**
* <p class="detail">
* 功能:静态初始化器
* static{ 和 }之间的代码被称为静态初始化器。它只有在第一次加载类时运行。
* 只有静态变量才可以在静态初始化器中进行访问
* 虽然创建了多个实例,但静态初始化器只运行一次。
* </p>
* @ClassName: StaticUtil
* @version V1.0
* @date 2016-8-10
* @author dmw
*/
public class StaticUtil {
static int count;
static{
System.out.println("类初始化静态加载++++");
System.out.println("加载次数"+count);
count++;
}

public static void main(String[] args) {
StaticUtil temp1=new StaticUtil();
StaticUtil temp2=new StaticUtil();
StaticUtil temp3=new StaticUtil();
// 输出: 类初始化静态加载++++
// 加载次数0
}
}

❽ java中的静态初始化和动态初始化

静态初始化就是static,动态初始化就是new
所谓的静态和动态是相对于程序运行是而言的,静态是在程序编译时就初始化好了的,动态初始化是在程序运行是才动态分配内存空间,
我觉得已经够通俗的了

❾ java 静态数据初始化

从主类public class StaticInitialization 中的开始main函数开始。
在初始化对象时,开始 静态数据的初始化
譬如:
执行完
public class StaticInitialization {
public static void main(String[] args) {
System.out.println(
"Creating new Cupboard() in main");
后,然后
执行new Cupboard();这段代码
这时,程序就会跳到Cupboard这个类中,当实例化Cupboard这个类的对象的时候,Cupboard这个类的里面静态数据也同时被处理。

剩下的代码都一样。

热点内容
bf3什么配置好 发布:2025-07-20 14:42:34 浏览:134
vs2015编写python 发布:2025-07-20 14:42:30 浏览:483
顺序存储的空间压力大不大 发布:2025-07-20 14:41:50 浏览:387
ff15和尼尔哪个配置要求高 发布:2025-07-20 14:37:19 浏览:850
安卓怎么创建ftp服务器地址 发布:2025-07-20 14:35:58 浏览:525
c编译器和解释器的区别 发布:2025-07-20 14:27:32 浏览:334
语句编译一个计算机 发布:2025-07-20 14:27:24 浏览:928
惠支付普通密码被锁定什么原因 发布:2025-07-20 14:27:21 浏览:528
荣誉积分服务器怎么搭建 发布:2025-07-20 14:15:18 浏览:231
我的C语言 发布:2025-07-20 14:14:21 浏览:280