Java中final和static关键字总结

1、final:

final关键字可用于类、方法、变量前。

final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承。

final修饰变量,在显示初始化后不可改变变量值,用于常量定义。如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的数据(属性)。

final修饰的方法不可被重写。

错误案例)

package com.sp;

public final class Fish {

       final String name = "鱼";

	public void method(){
		name = "鱼";  #此时变量属性不可再改变
	}

}

2、static:

2.1)static关键字用来修饰变量、方法、游离块和内部类,称这些变量、方法和内部类为静态变量、静态方法和静态内部类。

2.1.1)案例

package com.sp;
import java.util.Calendar;
public class Person {
String name;
static int count ;//人口总数   静态属性  
public Person() {
count++;
}
public static void main(String[] args) {
Person p1 = new Person();
System.out.println("人口总数:"+p1.count);
Person p2 = new Person();
System.out.println("人口总数:"+p2.count);
Person p3 = new Person();
System.out.println("人口总数:"+p3.count);
}
}

2.2)static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。

2.3)如果访问控制权限允许,可不必创建该类对象而直接使用类名加“调用。

2.4)static 不可用于修饰构造器

2.5)static修饰的属性和方法,对象之间是共享的。

2.6)static修饰的属性和方法,可以直接用类名调用。

2.7)static游离块。

2.7.1)static除了用于修饰变量和方法外,还可以用于修饰类中的游离块(自由块)。

2.7.2)所谓类的“游离块”,就是在类中用“{}”包含起来的不属于任何方法或构造器的代码段。

2.7.3)使用static来修饰的游离块只在类加载的时候执行一次,通常用于初始化静态变量。

2.7.3.1案例1)

package com.sp;

public class Person {
	String name;
	static int count ;	//人口总数   静态属性  

	public Person() {
		count++;
		System.out.println("执行了构造器");
	}
   
	static {
		System.out.println("执行了静态游离块");
	}

	{
		System.out.println("执行了游离块");
	}

 public static void main(String[] args) {
	Person p1 = new Person();
	 }
 }
 //执行了静态游离块,执行了游离块,执行了构造器。

2.7.3.2 案例2)

父类:

package com.sp;
public class Anmail {
public Anmail(){
System.out.println("执行了父类构造器");
}
static {
System.out.println("执行了父类静态游离块");
}
{
System.out.println("执行了父类游离块");
}
}

Person类继承:

package com.sp;
import java.util.Calendar;
public class Person extends Anmail {
String name;
static int count ;//人口总数   静态属性  
public Person() {
count++;
System.out.println("执行了子类构造器");
}
   
static {
System.out.println("执行了子类静态游离块");
}
{
System.out.println("执行了子类游离块");
}
 public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
 }
 
 }
 //执行了父类静态游离块
 //执行了子类静态游离块
 //执行了父类游离块
 //执行了父类构造器
 //执行了子类游离块
 //执行了子类构造器

由于博主目前在找框架,很多案例不是很多。如有不足,可指教。

时间: 2024-08-25 20:15:42

Java中final和static关键字总结的相关文章

java 中final和static关键字说明

final fianl关键字可以修饰类.方法和变量. a. 修饰类 final修饰的类,该类没有子类,该类不能被继承. b. 修饰方法 final可以修饰方法.final修饰的方法不能被重写. c. 修饰变量 final修饰的变量,是一个常量,且只能被赋值 一次,可以是成员变量和局部变量. static a. static用于修饰成员,可以是成员变量和成员方法. b. 被static修饰后的成员,可以直接被类调用. 类名.静态成员 c. 随着类的加载而加载,随着类的消失而消失.类一加载,就有静态

Java中this和static关键字及代码块

this: 可以使用this表示类中的属性------this.name=name 可以使用this强调调用的是本类的方法 可以使用this调用本类的构造方法------this();调用本类中无参构造方法 可以使用this表示当前对象(调用方法的对象)----最重要的用途 static: 声明属性---------属性则为全局变量 声明方法---------Person.setName("Tom");使用类名称调用static方法 普通代码块:直接在方法或是语句中定义的代码块 pub

Java中this、static关键字的内存图解

Java中的关键字有很多,abstract  default  goto*  null  switch  boolean  do  if  package  nchronzed  break  double  implements  private  this  byte  else  import  protected  throw  throws  case  extends  instanceof  public  transient  catch  false  int  return 

Java中 final、static、abstract区别与联系

1.static修饰符 static作用于代码块:称作静态代码块(可以初始化static field,不能初始化非static field); static作用于methods: static方法只能访问static 方法,不能访问非static 方法 static 方法只能访问static field, 不能访问非static field 非static 方法可以访问static fields 和 static methods static method的两种访问方式oject.method和

java中的静态static关键字

类的静态成员函数不能访问非静态的成员函数以及非静态的成员变量, 但是反过来却是成立的. 即:非静态成员函数可以访问静态成员函数和静态成员变量. 这个可以从静态成员的特点来解释,因为静态成员属于类,因此即便是没有类的对象我们也能访问类的静态成员. 但是非静态成员函数由于只能通过类的对象来访问,所以其必须要有对象才行. 那,反证法: 假如,类的静态成员函数可以访问非静态的成员函数:示例代码如下, class Test { public static int i; private int j; pub

Java中final与 static final 修饰的常量的区别

喵喵开车,新手上路,多多关照.有任何错误请在评论区指出. ...........................................我是万恶的分界线( ? ?ω?? )?......................................... final:用来修饰类,变量,方法: final修饰的类不能有子类,也不能被继承. final修饰的变量是一个常量,不能重新赋值. final修饰的方法不能重写 现在就说明final修饰的常量① 与 static final 修饰的常

关于Java中final关键字的用法总结

用于数据 永不改变的编译时常量,必须是基本类型,static final常量定义时必须赋值 一个运行时被初始化却又不希望被改变的值 空白final,确保使用前必须被初始化,但有更大的灵活性 final参数,用于对象引用,对象不可改变,用于基本类型,值不可以改变 用于方法 防止方法的行为被改变,不可覆盖 private方法默认为final的 曾经使用final方法可以提高效率,现已不提倡 用于类 表示该类不可以被继承 final类方法默认指定为final的 关于Java中final关键字的用法总结

Java final、static 关键字

问:谈谈 Java 中 final.finally.finalize 的区别?   答:这道题其实没有任何意义,无非就是考察开发者有没有区分这几个关键字的含义,仅仅关联是因为长得像而已. final 是一个修饰符,如果一个类被声明为 final 则其不能再派生出新的子类,所以一个类不能既被声明为 abstract 又被声明为 final 的:将变量或方法声明为 final 可以保证它们在使用中不被改变(对于对象变量来说其引用不可变,即不能再指向其他的对象,但是对象的值可变),被声明为 final

在JAVA中利用public static final的组合方式对常量进行标识

在JAVA中利用public static final的组合方式对常量进行标识(固定格式). 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效. 常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值. 1 package TomText; 2 //利用if语句,判断某一年是否是闰年. 3 public class TomText_28 { 4 p