package com.rainy.main;import java.util.ArrayList;
import java.util.List;publicclass Test extends A {static List<Object> p = new ArrayList<Object>();static {
p.add(new Object());
}publicstaticvoid main(String[] args) {
System.out.println(p.size());
System.out.println(l.size());
}}class A {
static List<Object> l = new ArrayList<Object>();static {
l.add(new Object());
}
} 可以看出,当进入main方法之前...
如:public class InnerClassDemo{int x;class A{static int a = 0;//这样写是不合法的.static final int b=0;//这样写是合法的}} java类加载顺序,首先加载类,执行static变量初始化,接下来执行对象的创建,如果我们要执行代码中的变量int a 初始化,那么必须先执行加载外部类,再加载内部类,最后初始化静态变量 a ,问题就出在加载内部类上面,我们可以把内部类看成外部类的非静态成员,它的初始化必须在外部类对象创建后以后进...
我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。此时就是static大显身手的时候了。 Java中被static修饰符修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问。 使用static修...
this:可以使用this表示类中的属性------this.name=name可以使用this强调调用的是本类的方法可以使用this调用本类的构造方法------this();调用本类中无参构造方法可以使用this表示当前对象(调用方法的对象)----最重要的用途static:声明属性---------属性则为全局变量声明方法---------Person.setName("Tom");使用类名称调用static方法普通代码块:直接在方法或是语句中定义的代码块public class CodeDemo01{public static void main(...
final修饰类:禁止继承该类。为啥String使用final修饰?String的不可变性,无法修改。避免继承修改该语义。修饰变量:表示不能改变引用。即C已经引用了A,C不能再引用B。 static:修饰变量:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。static成员变量的初始化顺序按照定义的顺序进行初始化。 static变量的生命周期是和类的生命周期相同的(类卸载的时候,该static变量也会被...
Java 中可以基于一个类创建多个对象,这些对象之间是相互独立的,他们拥有自己的成员。但是有时候我们需要使其共享同一个成员,可以很方便的操作,于是出现了我们的static。 static 可以修饰变量、方法和代码块一、static 修饰的变量 static 修饰的变量称为静态变量或者类变量,他属于某各类所有,并不是某个对象独有的,类的所有对象均可对其修改。比如,野外的一颗柿子树上的柿子,凡是经过的人均可采摘,并且后去的...
这一节我们来看一下在我们开发的过程中,在什么时候我们要用到static关键字进行静态修饰。我们这里所说的静态,无非就是两种,一种是静态变量,一种是静态函数,我们分这两种情况进行说明static关键字的使用场合。一、静态变量我们在7.8节中对static关键字特点和7.9节中成员变量与静态变量区别进行学习的时候就已经很明确的指出了静态变量是共享数据,而对象中封装的特有数据。因此我们可以这样解释:当分析对象中所具备成员变量的...
static的作用:1.将对象层级提升为类层级 (即将对象可以调用的,提升为对象和类均可调用的成员); //推荐使用类来调用 ClassNme.静态成员 (包括变量、方法、成员对象)2.static修饰的成员,在类加载时即准备完成,而不需要创建对象; //类加载只做一次:1 类名. 的时候会类加载; 2 new 对象时会类加载3.静态成员方法只能访问静态成员,不能访问非静态成员(因为调用该方法时可能还没有创建对象); 而非静态成员方法既能访...
在Java中,Static修饰的变量或者方法,可以直接通过类来调用。不使用Static修饰的变量或者方法,只能在将class实例化为object之后,再通过object调用。Static修饰的变量、方法 是在定义类的时候就在内存中创建的,在后续创建对象的过程中不在创建,所有对象使用同一个,访问同一个内存地址。Static方法中只能调用同为Static的变量或者方法。非Static方法既可以调用Static方法、变量,也可以调用Static方法、变量。原文:https://ww...
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。为什么要这么做,可出于两种理解:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。那么在调用时->类.方法 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不...
说到关键字static,首先想到了常量,静态变量,本文我总结了下static的用法。 1、静态变量 可以被赋值,便于类访问。 2、静态方法 静态方法与静态变量都可以被private、public修饰。 当JVM加载类时,就会将类的静态方法和静态变量加载到方法区中。且只会加载一次,对所有线程共享,也就说其他线程可以更改方法区中的静态变量。 static final 可以修饰变量和方法,表示常量不可被修改,修饰...
final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。 final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。 final修饰的属性表明是一个常数(创建后不能被修改)。 final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。 对于基本类型数据,final会将值变为一个...
1、abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现。2、static是静态的,是一种属于类而不属于对象的方法或者属性,而我们知道,类其实也是一个对象,他是在class文件加载到虚拟机以后就会产生的对象,通常来说它是单例的,就是整个虚拟机中只有一个这样的类对象(当然,如果用新的类加载器也会生成新的类的对象)。3、synchronized 是同步,是一种相对线程的锁。4、native 本地方法,这种方...
对于初学者,对于这几个经常出现的名字很熟悉,但又感到不完全理解。下面一一解释:public与private(这两个是针对权限范围的)public xxx(){}是公共的方法,可以被任何一个类调用。private xxx(){}是私用的方法,也就是只能在本类中被调用,任何其他类都不能调用。 void函数返回值得类型(函数可以返回多种类型值,如int、String、Float等)比如publicvoid xxx(){} 这个函数执行完成后,什么值也不会返回。但这个函数可以被...
除了内部类之外,类一般不能具有静态属性。如下定义了一个外部类Static_test和一个内部静态类Static_class:class Static_test{Static_test(){s_int = 1;}publicstaticint s_int;publicstaticvoid s_func(){System.out.println("s_int = "+s_int);}
} publicclass Hello{Hello(){}publicvoid seta(int num){a = num;}publicvoid setb(int num){b = num;}publicvoid showa(){System.out.println("a = "+a);}publicvoid showb(){Syst...