首先看下面的代码:
public class Test2 {
private final int a;
private String name;
public Test2() {
a=3;
}
public Test2(String name) {
this.name=name;
}
public static void main(String[] args) {
Test2 test = new Test2();
Test2 test2 = new Test2("hello");
}
}
编译是不会通过的,在第11行出错。因为成员变量a被声明为final类型,也就是说a是被该类的多个对象所共享,当创建一个该类的对象事必须为变量a赋值,一旦赋值了就不能改变了。但是当一个类有多个构造方法时,对成员变量a需要在每个构造方法中初始化,也就是说在this.name=name前加一行a=5,编译就会通过。
总结:
引用
对于final类型成员变量的初始化方法有两种:
1、声明变量时直接赋值;
2、在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法都要完成对该final类型的成员变量赋值。
将这个代码稍微改一下,在final前加一个static:
public class Test2 {
private static final int a;
private String name;
public Test2() {
a=3;
}
public Test2(String name) {
a=7;
this.name=name;
}
public static void main(String[] args) {
Test2 test = new Test2();
Test2 test2 = new Test2("hello");
}
}
编译同样不会通过。
总结:
引用
对于final+static声明的成员变量,必须在声明时赋值,不能在构造方法中赋值。
因为static类型的变量是在加载类的时候创建的,也就是说是在创建对象之前即执行构造方法之前执行的。
分享到:
相关推荐
思科CCNA学习笔记 思科CCNA学习笔记是网络工程师的必备知识,涵盖了计算机网络的基本概念、OSI与TCP/IP协议框架、IP报文传输过程、传输层功能、TCP与UDP对比等内容。以下是该笔记的详细知识点: 一、OSI与TCP/IP...
**J2SE学习笔记——接口与相关程序** Java 2 Platform, Standard Edition(J2SE)是Java平台的核心部分,提供了开发和运行桌面应用程序、Web应用程序和服务的基础。本笔记主要聚焦于J2SE中的接口(Interface)概念...
### Java学习笔记——基础知识详解 #### 一、Java基本数据类型及内存占用 Java作为一种广泛使用的编程语言,其基础数据类型对于理解程序的行为至关重要。Java提供了八种基本数据类型,分为数值型、字符型和布尔型...
### hibernate框架学习笔记整理 #### 一、Hibernate框架简介 **Hibernate框架**是一种用于Java应用的**对象关系映射**(Object-Relational Mapping, ORM)解决方案,它允许开发者使用面向对象的方式操作数据库中的表...
通过讲解this关键字、继承、static关键字和代码块、final关键字、多态、方法重写、抽象类与接口、封装与隐藏、垃圾回收、类组合、包装类、对象处理、类成员、final修饰符详解等知识点,本文档为Java学习者提供了一套...
本学习笔记旨在帮助新手全面理解并掌握Java 5.0的关键知识点。 一、泛型(Generics) Java 5.0引入了泛型,它允许在定义类、接口和方法时指定类型参数,从而实现类型安全的集合。泛型消除了强制类型转换的需要,...
JAVA学习笔记.pdf JAVA学习笔记.pdf 中讲解了JAVA语言的基础知识,包括类的基本知识、成员变量、成员方法、类的实例、内部类、匿名类、接口、包等。 类的基本知识 在JAVA中,类是对象的蓝图,类的声明语法为:...
Java学习笔记涵盖了许多核心概念,包括面向对象编程的各个方面。以下是对这些知识点的详细解析: 1. **继承中方法的重写**: 当子类重写父类的方法时,子类方法的访问权限必须至少等于或大于父类中对应方法的访问...
### Java学习笔记知识点总结 #### 第一章:Java语言入门 - **1.1 Java的诞生** ...以上是关于Java学习笔记的主要知识点总结,涵盖了从基础概念到高级特性的各个方面,对于初学者来说是一份非常全面的学习资料。
【良葛格Java学习笔记】 本笔记主要涵盖了Java编程语言的核心概念和技术,旨在帮助初学者以及有一定基础的开发者深入理解并掌握Java。Java作为一种广泛应用于企业级应用开发、移动开发(尤其是Android)以及大数据...
Java是一种广泛使用的面向...总的来说,Java学习笔记应该涵盖从基础知识到高级特性的全面内容,适合初学者和有一定基础的开发者作为参考。通过不断实践和学习,可以逐步掌握Java编程的精髓,成为一名熟练的Java开发者。
- 如果一个方法被声明为`final`,如`public final void myMethod()`,则不允许子类重写这个方法。 - `final`修饰变量时,如果是类级别的常量,通常遵循全大写命名约定,如`public static final String MY_CONSTANT...
《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 书籍 计算机书籍 《java jdk 7学习笔记》是作者多年来教学实践经验的总结...
在这个"良葛格Java JDK 5.0学习笔记ch05"中,我们将深入探讨其中的关键知识点。 一、泛型 Java 5.0引入了泛型,这是一项强大的类型安全机制,允许在编译时检查类型。泛型可以应用于类、接口和方法,通过指定参数...
孙鑫老师的《java技术从入门到精通》学习笔记是许多初学者和进阶者的重要参考资料。下面,我们将深入探讨这份珍贵资料中可能涵盖的核心概念。 首先,入门阶段,你需要了解Java的基础语法。包括数据类型(如基本类型...
良葛格的Java JDK 5.0学习笔记是一份宝贵的资源,适合初学者和有经验的开发者回顾这个版本的关键概念。下面我们将详细探讨Java JDK 5.0中的核心知识点。 1. **泛型(Generics)** 泛型是JDK 5.0引入的一项重要特性...
2. 一•基础知识 2-4 2.1. 配置环境 2-4 2.2. Java中基本概念 2-5 3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}”、“ ” 3-5 3.3. 标识符 3-5 3.4. 数据类型 3-6 3.5. ...
**Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录框架,由Apache软件基金会开发。它提供了一套灵活的日志记录系统,帮助开发者在开发过程中追踪应用程序的行为,便于调试、性能分析和问题排查。Log4j...
【JPA学习笔记】 JPA(Java Persistence API)是Java平台上的一个ORM(Object-Relational Mapping)规范,它提供了一种将Java对象与数据库表进行映射的机制,简化了数据库操作。JPA允许开发者使用面向对象的方式...