Home > Java > javaTutorial > body text

Explanation of the essence of java final

(*-*)浩
Release: 2019-09-23 16:32:51
forward
2517 people have browsed it

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;
    }
}
Copy after login

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;
	}
}
Copy after login

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());
	}
}
Copy after login

Output result:

id: 1     name:dada    score:3
id: 2     name:hehe    score:10
Copy after login

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!

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template