当前位置: 首页 > 面试题库 >

Java定义或初始化类的属性

堵鸿光
2023-03-14
问题内容

定义 类属性和 初始化 它们之间有区别吗?在某些情况下,您想彼此做一个吗?

例:

以下代码段应指出我的意思。我在那里使用一个原语和一个对象:

import Java.util.Random;

public class Something extends Activity {
    int integer;
    Random random = null;

    Something(){
        integer = 0;
        random = new Random();
        ....

import Java.util.Random;

public class Something extends Activity {
    int integer = null;
    Random random;

    Something(){
        integer = 0;
        random = new Random();
        ....

问题答案:

首先,您不能将原语设置为null,因为原语只是数据,其中null是对象引用。如果尝试编译int i = null,则会收到不兼容的类型错误。

其次,像在Java中那样,在类中将变量初始化为null0在类中声明变量时是多余的,原语默认为0(或false),对象引用默认为null。局部变量不是这种情况,但是,如果您尝试以下操作,则在编译时会出现初始化错误

 public static void main(String[] args)
 {
     int i;
     System.out.print(i);
 }

明确地将它们初始化为0or或falseor
的默认值null是没有意义的,但是您可能希望将它们设置为另一个默认值,然后可以创建一个具有默认值的构造函数,例如

public MyClass
{
   int theDate = 9;
   String day = "Tuesday";

   // This would return the default values of the class
   public MyClass()
   {
   }

   // Where as this would return the new String
   public MyClass (String aDiffDay)
   {
      day = aDiffDay;
   }
}


 类似资料:
  • Swift 5.x String初始化、定义 1. 字面量初始化字符串 1.1 单行字面量字符串 let str = "some string" 1.2 字面量初始化多行字符串 let str = """ The white Rabbit put on his spectacles. "Where shell I begin, please your Majesty?" he asked. "

  • 我有一份抽象的课堂报告: 我需要强制所有子类填充此 surrogateId 属性。(如果子类未填充属性,则会出现编译错误) 我尝试使用 final 关键字来强制我在构造函数中引入此属性的值,但我必须手动生成构造函数而不是使用 Lombok,很多样板代码。有没有办法在不手动生成结构的情况下实现相同的期望。

  • 问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段

  • 这肯定是个愚蠢的问题,但我对Kotlin真的是个新手,我没有找到任何解决办法。 如何声明类字段?就像我们可以在Java中拥有它一样: 在中: 但我得到一个警告:“属性必须初始化或抽象”

  • 问题 你想在类被定义的时候就初始化一部分类的成员,而不是要等到实例被创建后。 解决方案 在类定义时就执行初始化或设置操作是元类的一个典型应用场景。本质上讲,一个元类会在定义时被触发, 这时候你可以执行一些额外的操作。 下面是一个例子,利用这个思路来创建类似于 collections 模块中的命名元组的类: import operator class StructTupleMeta(type):