问题内容: 什么时候实例变量被初始化?是在构造函数块完成之后还是之前? 考虑以下示例: 家长建设者 子init() 父Init() 儿童构造者 属性1:100 属性2:null 什么时候在堆中分配属性1和2的内存? 好奇地知道为什么属性2为NULL? 有设计上的缺陷吗? 问题答案: 什么时候在堆中分配属性1和2的内存? 整个对象的内存是在调用构造函数之前在调用运算符时分配的。在中为单个实例分配了内
问题内容: 我了解协方差和逆方差。但是有一件小事我无法理解。在Coursera的“ Scala中的函数式编程”课程中,Martin Ordersky提到: 函数的参数类型是互变的,而返回类型是协变的 因此,例如在Java中,让extends出现。并让一个函数为: 我有函数调用为 所以基本上就是这样。根据Wiki,协方差是“从宽到窄转换”。在上面,我们正在从狗变成动物。所以论点类型不是协变而是协变吗
问题内容: 需要对私有变量和继承有更多的了解。较早之前,我的理解是在类中是否有字段,并且当我继承该类时,不受访问(私有变量)限制的字段将存在于继承的类中。但是,如果有公共的g / setter方法,我可以在基类中使用私有变量。 我怎么能想象一个基类中的私有变量? 问题答案: 结果将为10。类A中的私有字段a是B的继承类,但B无法直接访问它。仅通过使用在类A中定义的公共/默认/受保护的访问器方法。B
问题内容: 假设我正在测试Java服务器应用程序。我知道需要多少时间才能完成测试。现在,我想知道该测试期间在GC上花费了多少。我该怎么做? 问题答案: 最简单的方法是在启动JVM时使用和选项。我认为它可以打印出垃圾收集需要多长时间。 http://www.oracle.com/technetwork/java/javase/tech/vmoptions- jsp-140102.html
问题内容: 我所考虑的所有示例都显示了如何创建一个未知实现的新实例,并将该实现投射到其接口。问题在于,现在您不能在实现类上调用任何新方法(只能重写),因为您的对象引用变量具有接口类型。这是我所拥有的: 如果我仅引用“ com.path.to.ImplementationType”,而我不知道该类型可能是什么(它来自配置文件),那么如何使用类名将其强制转换为实施类型?这有可能吗? 问题答案: 这行似
问题内容: 这是我写的三个类: Tester类的main方法的输出为: 为什么sx返回0而不是1?由于不是Rectangle变量的当前实例,并且该类也声明了相同的实例变量,或者Rectangle类中的变量没有像对getX()一样覆盖Shape类中的先前公共x变量。矩形类中的方法因此返回1? 同样作为一般规则,超类仅在其子类中也声明了其子类方法时才可以访问其子类的实现?这是因为编译器会看到“ Sha
问题内容: 在Android应用程序中,在这种情况下将对象存储在静态字段中是一种不好的做法吗? 应用程序数据。 在应用程序运行时将应用程序数据保留在类中的静态变量中是否不好?当前,我将数据存储在类的实例变量中。然后,需要数据的类可以从中获取数据。 的等。在静态字段中存储(例如,对或的引用)是不好的做法吗?可以在需要例如资源的类中使用它。目前,我正在将s 传递给需要它们作为参数的方法。 问题答案:
问题内容: 什么是Java中的对象引用变量? 参考变量是否保存对象的内存地址? 我很困惑。请说明一下。 问题答案: 我不确定我是否有能力正确回答这个问题,但是… 对象是类的实例,它存储在内存中的某些位置 引用是用来描述指向对象所在的内存位置的指针的。 变量是一种可以访问应用程序中该内存位置的方法(其值为“变量”)。尽管变量只能指向单个内存地址(如果不为空),则在应用程序的整个生命周期中,它可能会更
问题内容: 我在这里阅读Threadlocal的JavaDoc https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ThreadLocal.html 它说:“ ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段(例如,用户ID或事务ID)。” 但是我的问题是,为什么他们选择使其静态化(通常)-使其具有“每个线程”状态
问题内容: 我有包含以下格式的数字的文本文件: 现在,我需要读取该数据并将其分配给变量(前两个数字),并将其余所有数据( 1 000 000个 数字)分配给数组。 这不是一项艰巨的任务,但是-这太慢了。 我的第一次尝试是: 它按例外方式工作,但执行大约需要 7500毫秒 。我需要在几百毫秒内获取该数据。 然后我尝试了: 使用和我大约在 1700毫秒内 得到了相同的结果,但是仍然太多了。 如何在不到
问题内容: 假设我们有一个包含私有实例变量的类。 现在,让我们有另一个类,其中。如果在中没有定义访问器方法,可以在访问变量中使用非静态方法吗? 顺便说一下,我在用Java工作。 问题答案: 不,不符合Java语言规范,第3版: 6.6.8示例:私有字段,方法和构造函数 私有类成员或构造函数只能在包含该成员或构造函数声明的顶级类(第7.6节)的主体内访问。它不是子类继承的。 但是不管这种语言限制如何
问题内容: 如果我要集中声明一组静态常量,以便将它们放在类或接口(Java)中,以便可以在各个项目之间共享它们。 在过去,我看到它们大部分都放在一个类中,但是我开始认为,既然该类不会也不应被实例化,也许它们在接口中会更好,但随后该接口也不应由任何类实现,例如 要么 问题答案: 如果它们之间的联系紧密,那么我将它们放在一个枚举中: 优点是您可以在代码中具有类型安全性,并且可以轻松添加基于id的查找(
问题内容: 抱歉,如果这是一个新手问题,但我找不到答案。这样做更好吗? 要么: 我知道整数会使用内存,所以我猜它会稍微降低性能吗?但另一方面,它使内容更清晰,尤其是当int / string是长计算时。 问题答案: 编辑: 如果像我一样,您使用的Kotlin比Java多,那么与IntelliJ在Kotlin中对此进行检查也有关系: 仅在以下返回中使用的变量,应内联 此检查报告仅在下一个 retur
问题内容: 我有一个枚举类型类: 如您在上面看到的,我定义了一种具有value的类型。它包含一个特定于常数的主体。在其主体中,我尝试调用 ,但出现编译错误: 无法静态引用非静态方法printMe()。 为什么会出现此错误?我的意思是我在体内重写了一种抽象方法。为什么在范围内?如何摆脱它? 我知道在上添加关键字可以解决问题,但是我想知道是否还有其他方法可以保持非静态状态吗? 另一个问题,与上面的问题
问题内容: 为什么此代码无法编译? 为什么我不能将类变量传递给? 问题答案: 该操作符对引用类型,像,而不是对象,如。您可能想要类似 旁注:如果编写,您的代码将更加简洁 但是,我不确定是否需要某种方法。