Java之static与final关键字

  1. static关键字:可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类
  2. static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量值也会随之发生变化,如果一个成员变量是static的,那么我们可以通过类名.成员变量名来的方式来使用它(Java推荐使用这种方式)
package com.yuanzijian01;

class MyStatic{
   static int a;
}

public class StaticTest {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		/*
		  MyStatic myStatic = new MyStatic();
		  MyStatic myStatic2 = new MyStatic();
		  myStatic.a = 10;
		  System.out.println(myStatic2.a);
		*/
		//java 推荐使用的方式
		  MyStatic myStatic = new MyStatic();
		  MyStatic.a = 10;
		  System.out.println(myStatic.a);

	}

}

3.static修饰方法:static修饰的方法叫做静态方法。对于静态方法来说,可以使用类名.方法名来访问

package com.yuanzijian02;

class MyStatic2{
	public static void output(){
		System.out.println("output");
	}
}

public class StaticTest2 {
		public static void main(String[] args) {
			MyStatic2 myStatic = new MyStatic2();
			MyStatic2.output();
		}
}
package com.yuanzijain03;

class M{
	public static void output(){
		System.out.println("M");
	}
}
class N extends M{
	public static void output(){
		System.out.println("N");
	}
}
public class StaticTest3 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		M m = new N();
		extracted(m);
	}

	private static void extracted(M m) {
		M.output();
	}

}

4.静态方法只能继承,不能重写(Override)

注意:只要有静态,就不要覆盖

5.final关键字:final可以修饰属性,方法,类

6.final修饰类:当一个类被final修饰时,表示该类是一个终态类,既不能被继承

final class E{ //表示该类不能被继承

}
class F extends E{ //提示错误。E是终态类,不能被继承

}
public class FinalTest {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
			F f = new F();

	}

}

7.final修饰方法:当一个方法被final修饰时,该方法是一个终态方法,即不能被重写

package com.yuanzijian05;

class G{
	public final void output(){
		System.out.println("G");
	}
}
class H extends G{               //此行的多个标记, - 不能覆盖 G 中的终态方法, - 覆盖 
	public void output(){
		System.out.println("H");
	}
}
public class FinalTest2 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
            H h = new H();
            h.output();
	}

}

8.final修饰属性:当一个属性被修饰时候,也不能被重写

package com.yuanzijian06;

class People{
    final int age = 10;
}

public class FinalTest {
	 	public static void main(String[] args) {
			People  people  = new People();
			people.age = 20; // 不能对终态字段 People.age 赋值
		}
}

9.当final修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化,如果final修饰一个引用类型时,表示该引用类型不能指向其他对象了,但是该引用所指向的对象的内容是可以发生变化的

时间: 2024-11-03 14:54:11

Java之static与final关键字的相关文章

Java的static和final关键字的用法

static关键字的用法 static的意思是"'静态的",在java里面可用于修饰属性和方法. static关键字的应用应注意以下几种情形: 1.static作用于某个字段,一个static字段对每个类来说只有一份存储空间,而非static字段是每个对象有一份存储空间. 2.static作用于方法的重要用法是不需要创建任何对象直接调用该static方法,这对于main()方法很重要. 3.static不能应用于局部变量. 4.Java中禁止使用全局方法,所以引入static方法通过类

java中static,super,final关键字辨析

1:static关键字 利:1)对对象的共享数据提供单独的空间存储. 2)修饰的方法可以直接被类名调用 弊:1)生命周期长. 2)访问出现限制(只能访问静态) 它可以有静态方法,静态类,静态变量 2:super关键字 1)使用super关键字调用父类的成员变量和成员方法. 格式1:super.成员变量 格式2:super.成员方法([参数1,参数2...]) 2)使用super关键字调用父类的构造方法 格式1:super([参数1,参数2...]) 总结:this代表当前对象(可以输出或地址).

【Java_基础】java中static与final关键字的区别

1.static关键字 经由static关键字修饰的成员为类成员,被所有对象所共享,通常通过类名来引用static成员.类加载的连接阶段将会为静态成员变量在jvm内存的方法区分配空间,并在类的初始化阶段赋初值. 一个类的static成员变量只有“一份”(存储在方法区),无论该类创建了多少对象.看如下的示例: public class StaticDemo { public static void main(String[] args) { People p1 = new People(18);

Java中static、final用法小结(转)

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

Java中static、final用法小结

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

Java记录 -17- static与final关键字

Java static与final关键字 static关键字:可以修饰属性,也可以修饰方法,还可以用于修饰类. static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量:一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化.如果一个成员变量是 static 的,那么我们可以通过 类名.成员变量名 的方式来使用它(推荐使用这种方式). static修饰方法:static修饰的方法叫做静态方法.对于静态方法来说,可以使用 类名.方法名

static 和 final 关键字 对实例变量赋初始值的影响

static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看<深入理解Java虚拟机>,在看完了对象内存分配.Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的这个问题的细节. 在2.3.1小节中讲对象创建的时候,讲到内存分配有两种方式:一种是指针碰撞:另一种是空闲列表. 而选择哪种分配方式是由JAVA堆是否规整决定,而JAVA堆是否规整则由虚拟机所采用的垃圾收集器是否带压缩整理功能决定. 我们不管内存分配采用何种方式,当内存分配完成后,虚拟机将分配到的内存空间都初

java中static、final、static final的区别

final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值. final修饰的属性表明是一个常数(创建后不能被修改). final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承. 对于基本类型数据,final会将值变为一个常数(创建后不能被修改):但是对于对象句柄(亦可称作引用或者指针),fin

Java——面向对象进阶(final关键字,static关键字,匿名对象,内部类,包的声明与访问,四种访问修饰符,代码块)

一.final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. 1.修饰类 被final修饰的类不可以被继承,但是可以继承其他类. class Yy {} final cl