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

new运算符和Class.newInstance()有什么区别?

孟彦
2023-03-14
问题内容

new和之间有什么区别Class.forName(...).newInstance()?它们都创建一个类的实例,我不确定它们之间有什么区别。


问题答案:

new操作创建一个是静态已知的(在编译时),并可以调用你想创建对象的任何构造一个类型的新对象。这是创建对象的首选方式-
快速且JVM对它进行了许多积极的优化。

Class.forName().newInstance()是一个动态构造,用于查找具有特定名称的类。它比使用速度慢,new因为无法将对象的类型硬编码到字节码中,并且因为JVM可能必须执行权限检查以确保您有权创建对象。它也是部分不安全的,因为它始终使用零参数构造函数,并且如果您要创建的对象没有null构造函数,它将引发异常。

简而言之,new如果您在编译时知道要创建的对象类型,则使用。使用Class.forName().newInstance(),如果你不知道你会作出什么类型的对象。



 类似资料:
  • 问题内容: Java中的和运算符有什么区别? 问题答案: 是算术右移,是逻辑右移。 在算术移位中,将扩展符号位以保留数字的符号性。 例如:用8位表示的将是(因为最高有效位的权重为负)。使用算术移位将其右移一位,你将得到1。但是,逻辑右移并不关心该值是否可能表示带符号的数字;它只是将所有内容移至右侧,并从左侧填充0。使用逻辑移位将右移一位将得到。

  • 问题内容: 我正在更深入地学习哈希码,并发现: 1.如果覆盖equals(),则也必须覆盖hashcode()。 2.要查找2个对象是否为同一对象,请使用==运算符 考虑到这两个因素,在Java中,我假设使用什么来比较 两个实例是否相同, 实际上在做 但是通过运行下面的测试,似乎我错了。 根据使用并查看是否调用的测试。 所以我的问题是,如果可以用来比较对象是否相同,覆盖e 和比较方法的目的是什么?

  • 问题内容: JavaScript代码: Java代码: 为什么?我已经阅读了文档,但没有发现不同。如何将JavaScript代码移植到Java? 问题答案: 两者都是合乎逻辑的右移,但JavaScript在处理数字方面有些怪异。通常,JavaScript中的数字为浮点数,但按位运算会将其转换为无符号的32位整数。因此,即使该值看起来不应更改,它也会将数字转换为32位无符号整数。 您看到的值与相同,

  • 问题内容: 这两个语句之间有什么区别: 和 如果您能说明差异,那就太好了。 问题答案: 第一个是创建一个新的String对象。第二个是有效地使用已经存在的(它是在加载类文件时创建的)。实际上,从来没有理由使用构造函数。 (我之所以这样说, 实际上是 因为有一种情况:如果要通过调用然后丢弃原始文件来分解大块,则可以使用此构造函数从子字符串中创建new来节省内存。这确实是一个晦涩的情况,虽然。)

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 我应该在TSQL中使用!=或<>表示不相等吗? 如果我使用一个简单的表,例如: 两者都给我: 那么和mysql运算符有什么区别? 问题答案: 它们完全相同。请参阅文档。 http://dev.mysql.com/doc/refman/5.0/en/comparison- operators.html#operator_not-

  • 问题内容: 以下两个语句之间有什么区别? 问题答案: 显式创建对象的新的和参照不同的实例;如果有一个实例,可以从字符串常量池中重用一个实例。 参照区别是什么意思 检查以下代码段: 在两种引用类型上的是引用标识比较。不一定是两个对象。在引用类型上使用通常是错误的;大多数时候需要使用它来代替。 但是,如果出于任何原因需要创建两个而不是字符串,则可以使用构造函数。但是,需要再次说,这是非常特殊的,并且很