Java static 变量,方法 静态初始化化块

static修饰的变量和方法属于类,在类加载时在内存中分配空间;

调用时可以直接通过类名调用,当通过创建对象改变的是静态变量时,那么该静态变量就改变了;

静态方法中不能直接访问非静态的成员变量和方法,可以通过创建对象访问;反之,非静态的成员变量可以访问静态的变量和方法;

可以通过构造器,初始化块和静态初始化块来给成员变量赋值;相比于构造器和初始化块在没创建一个对象时执行一次,并且初始化块在构造器之前执行;静态代码块只执行一次;

时间: 2024-10-13 03:00:47

Java static 变量,方法 静态初始化化块的相关文章

Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)

1.执行顺序 1.1.一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 1.2.两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量.初始化块.构造器). 示例如下:(结果见注释) 1 class A { 2 public A() { 3 System.out.println("Constructor A."); 4 } 5

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)(转)

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: Java代码 p

final,static静态和非静态,初始化和代码块的区别、父类和子类中都有static变量时的初始化顺序、重写equals()、 instanceof强制转换

final:类不能被继承,方法不能被重写,属性值不能被修改(常量): 可以调用: static静态常量----- 不需要创建对象,可以直接调用类里面的属性,方法: 示例如下: 加了static说明它是属于整个类的,每个对象值都一样,如下图所示:size是静态的,所以当在下面t1对象中改变size的值时,整个类中的size值都变了:然后作为普通属性的length,当在t1对象中改变其值,并不会改变原始值: 静态方法不能调用非静态的方法和非静态的属性,也不能打印非静态的方法和非静态的属性:可以在静态

一道java面试题-方法静态分派

一道面试题,下面程序的输出是? public class StaticDispatch { static abstract class Human{ } static class Man extends Human{ } static class Woman extends Human{ } public void sayHello(Human guy){ System.out.println("hello , guy!"); } public void sayHello(Man gu

Java 中的 static 使用之静态初始化块

Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 而普通初始化块只要有创建一个实例(即new一次),就执行一次. 我们来看一段代码: 运行结果: 通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行

java静态初始化代码块

/* * 为什么Java中为什么没有静态构造函数.其实Java中不叫静态构造函数,称作静态初始化,或者静态代码块. * 可以通过这样的代码实现相同的功能: */ public class test { /** * @param args */ public static void main(String[] args) { System.out.println(Point.getValue()); System.out.println(new Point()); //why?不直接调用方法即可呢

java 成员变量 静态成员变量 方法 静态方法初始化顺序

Java构造方法.成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? [Java笔试真题]:构造方法.成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? [解答]:当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构造方法. Java程序的初始化一般遵循以下三个原则(以下三原则优先级依次递减): ① 静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次: ② 父类

static使用之静态初始化块

public static HelloWorld { string name; { name = "爱慕课"; } } 需要特别注意:静态初始化块只能在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 程序运行时,静态初始化块首先被执行,然后执行普通初始化块,最后执行构造方法.

java静态成员变量,静态代码块执行测试

Java  类对象 静态成员变量,静态代码块加载执行顺序. package com.yjm.pro; import java.io.IOException; import java.util.Properties; public class Pro {  public static String url;  public static String username;  public static String password;  public static String classforna