`
冇心人
  • 浏览: 56429 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java常见笔试面试题目解析(七):final与static final变量(原生类型)的初始化方式

阅读更多
public class FinalOriginalTest {  
    private final int a;  
    private String name;  
    public FinalOriginalTest(){  
        a = 3;  
    }  
    public FinalOriginalTest(String name){  
        this.name = name;  
    }  
    public static void main(String[] args){  
        FinalOriginalTest ft = new FinalOriginalTest();  
        FinalOriginalTest ft1 = new FinalOriginalTest("hello");  
    }  
}  
public class FinalOriginalTest {
 private final int a;
 private String name;
 public FinalOriginalTest(){
  a = 3;
 }
 public FinalOriginalTest(String name){
  this.name = name;
 }
 public static void main(String[] args){
  FinalOriginalTest ft = new FinalOriginalTest();
  FinalOriginalTest ft1 = new FinalOriginalTest("hello");
 }
}
问题1:上面的程序能否编译通过?如果不能,请说明理由。
解答:不能编译通过,可能没有初始化变量a。因为对于final类型的成员变量的初始化,在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。所以需要在public FinalOriginalTest(String name)构造方法中给a赋值。
注意:final可以用在类、方法、变量上。
     1、final用在类上,表明当前类它不能被继承,没有子类。
     2、final用在方法上,表明当前方法不能被override,不能被重写。
     3、final用在变量上,表明当前变量是一个终态的变量,是一个常量,这个变量的值一但被赋值后就不能被改变了。
     对于final类型的成员变量的初始化方式:
     1、声明变量时直接赋值
     2、在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。

问题2:上面的程序中,修正问题1之后,将private final int a;改为private static final int a;能否编译通过?如果不能,请说明理由。
解答:不能编译通过,因为a是静态变量,在这个类还没有实例化的时候,它的值就已经有了。所以对于一个int类型的static final类型的变量a来说,我们只能在声明的时候就给它赋值private static final int a = 3;然后把构造方法里面的赋值给注释掉,这样编译就能通过了。

总结:对于final类型的变量,对于不加static我们可以有两种方式给它赋值:声明变量时直接赋值;在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。对于一个变量既是final又是static的,我们必须在声明变量时直接赋值。
分享到:
评论

相关推荐

    Java常见笔试_面试题目深度剖析

    Java常见笔试_面试题目深度剖析

    Java常见笔试、面试题目深度剖析

    提供的资源如"Java常见笔试、面试题目深度剖析一(未加密).exe"和"Java常见笔试,面试题目深度剖析.ppt"应包含了对这些知识点的详细解析和实例,对于复习和准备是非常有价值的。建议考生结合这些资料进行系统性学习,...

    Java常见笔试,面试题目深度剖析

    Java常见笔试,面试题目深度剖析

    Java常见笔试、面试题目深度剖析第二、三讲下载地址

    根据提供的信息,我们可以深入探讨与“Java常见笔试、面试题目深度剖析第二、三讲”相关的知识点。虽然直接的视频或文档链接无法在此处查看,但根据标题和描述中提到的信息,我们可以推测出讲座可能涉及的一些核心...

    Java常见笔试、面试题目深度剖析 final详解

    - 对于基本类型,`final`变量在声明时必须初始化,或在构造器中初始化。 - 对于引用类型,`final`变量只能引用一个对象,但该对象的属性可以改变。这意味着`final`变量不能指向不同的对象,但所指向的对象的状态...

    经典Java笔试算法解析和代码:二分查找.zip

    经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找...

    ]Java常见笔试、面试题目深度剖析

    ]Java常见笔试、面试题目深度剖析

    Java常见笔试、面试系列深度剖析第3讲

    在本节"Java常见笔试、面试系列深度剖析第3讲"中,我们将深入探讨Java编程语言的一些关键概念和常见问题,这些内容对于准备Java相关的笔试和面试至关重要。讲解由张龙和风中叶两位专家主讲,他们将分享丰富的经验与...

    Java常见笔试面试题目深度剖析

    以上是Java常见笔试面试题目所涵盖的主要知识点,通过深入学习和实践,可以提高Java程序员的专业技能和面试竞争力。在面试中,不仅要能够准确回答问题,还要能结合实际项目经验进行案例分析,展现自己的问题解决能力...

    风中叶 Java常见笔试、面试题目深度剖析Java 笔试 面试 题目

    《风中叶 Java常见笔试、面试题目深度剖析》是一份专为Java开发者准备的资源,旨在帮助他们在求职过程中更好地应对各种笔试和面试挑战。这份资料包含了大量的Java编程相关的题目,涵盖了从基础知识到高级概念的各个...

    Java常见笔试、面试系列深度剖析第2讲

    在本讲“Java常见笔试、面试系列深度剖析第2讲”中,主讲人张龙与风中叶共同探讨了Java编程语言在实际面试和笔试中的核心知识点,旨在帮助求职者提升对Java技术的理解和应用能力。以下是本讲中涵盖的一些关键知识点...

    Java常见笔试、面试题目深度剖析 Java数组与异常详解

    Java作为一门广泛使用的编程语言,其在笔试和面试中经常出现的题目往往涵盖了语言的核心概念和技术。本资源主要聚焦于两个关键主题:Java数组和异常处理。数组是Java中的基本数据结构,而异常处理则是保证程序健壮性...

    Java面试笔试题大汇总(最全+详细答案)

    Java作为一门广泛使用的编程语言,其面试笔试题涵盖了众多领域,包括基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、数据库操作、设计模式、JVM优化等。以下是对这些知识点的详细阐述: 1. **...

    Java常见笔试、面试系列深度剖析第三讲

    "Java常见笔试、面试系列深度剖析第三讲"可能涵盖了一系列关键概念,旨在帮助求职者或开发者更好地理解和掌握Java的核心特性。其中,"反射详解"是这次讲解的重点内容之一。反射在Java中扮演着至关重要的角色,它允许...

    java程序员经典笔试面试题汇总

    1. **静态变量与final修饰符**:`Test` 类中的 `a` 被声明为 `static final`,这意味着它是类级别的变量,并且一旦初始化后不可更改。因此,在任何对象实例化之前,该变量就已经被初始化。在 `main` 方法中调用 `...

    Java程序员面试笔试真题与解析.tar

    Java程序员面试笔试真题与解析,包含各大IT企业面试笔试的题目

    java基础笔试面试题目 Word版 经典

    Java 基础笔试面试题目通常涵盖了许多核心概念和技术,以下是对这些题目涉及知识点的详细解释: 1. **面向对象基本概念**:面向对象编程(OOP)是一种编程范式,基于类和对象,强调封装、继承和多态。封装是将数据...

Global site tag (gtag.js) - Google Analytics