Home  >  Article  >  Java  >  Explanation of the essence of java final

Explanation of the essence of java final

(*-*)浩
(*-*)浩forward
2019-09-23 16:32:512361browse

Explanation of the essence of java final

Meaning: final means [can only be assigned once].

Assignment location: In [Assignment at declaration], [Assignment in constructor]

Example:

package com.dada.data;
 
public class TestFinal {
    // 1.声明时赋值
    private final int i = 0;
    private final int j;
    public TestF() {
        // 2.构造方法中赋值
        j = 10;
    }
}

Note: We say that final can only be assigned once, but we know that in java [there are two types of values], [values ​​of basic data types] and [values ​​of reference data types]. For basic data types, assignment That is to directly assign the [value to the variable]. For reference data types, it is to [assign the reference to the variable].

Therefore: The meaning of being able to assign a value only once can be divided into two situations. 1. If it is a basic data type, then the value itself cannot be changed; 2. If it is a value of a reference data type, that is The reference cannot be changed, but the content of the reference can be changed.

Example:

Define Student class:

package com.dada.data;
 
public class Student {
	private int id;
	private String name;
	private int score;
	public Student(int id, String name, int score) {
		this.id = id;
		this.name = name;
		this.score = score;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	
	@Override
	public String toString() {
		return "id: " + id + "\t name:" + name + "\tscore:" + score;
	}
}

Define test class:

package com.dada.data;
 
public class TestFinal {
	private final Student ss;
	
	public static void main(String[] args) {
		TestFinal tf = new TestFinal();
	}
	public TestFinal() {
		Student student = new Student(1, "dada", 3);
		// 第一次赋值
		ss = student;
		System.out.println(ss.toString());
		
		// 修改引用所对应的对象的内容
		student.setId(2);
		student.setName("hehe");
		student.setScore(10);
		System.out.println(ss.toString());
	}
}

Output result:

id: 1     name:dada    score:3
id: 2     name:hehe    score:10

Summary:

From the above example, we can know the content of the reference after the variable is modified by final It can still be modified. The reason why many times we feel that it cannot be modified is because:

1. Usually we assign values ​​when defining variables. At this time, for basic type data, it can never be modified. changed.

2. For reference type data, because we cannot obtain the corresponding reference, we also feel that the reference type data cannot be modified.

The above is the detailed content of Explanation of the essence of java final. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete
Previous article:Get json data in requestNext article:Get json data in request