关于Java中构造函数的问题

关于Java构造函数我几乎没有问题

  1. 构造函数可以是私有的吗? 如果是,那么在哪种情况下?
  2. 构造函数是否是方法?
  3. 如果构造函数没有返回任何内容,那么为什么每次调用它时我们都会得到一个新的Object?
  4. 如果我们不指定,那么构造函数的默认访问修饰符是什么。

编辑

1和3的答案非常清楚。 我仍然不确定2和4因为我得到了不同的答案。

  1. 是的,无论如何。 但是,如果类的所有构造函数都是私有的,则意味着无法直接实例化该类。 您将需要使用工厂模式之类的东西来创建对象的实例。
  2. 是的,构造函数是一种方法。
  3. 考虑它的更好方法是new运算符返回对象,并在创建对象的过程中调用构造函数。 考虑它的另一种方式(虽然这只是一种思考它的方法,但从技术上来说并不正确)只是返回类型是通过约定隐含的。 阅读更多关于此内容的一个好地方是阅读C ++上下文中的 new 。 构造函数的作用不是创建对象,而是初始化对象中包含的内存。
  4. Java中构造函数的默认访问权限就像其他任何方法一样私有。 (一个这样的来源: http : //www.javabeginner.com/learn-java/introduction-to-java-access-modifiers并从马的口中: http : //download.oracle.com/javase/tutorial/java/ javaOO / accesscontrol.html )

构造函数可以是私有的吗? 如果是,那么在哪种情况下?

是。 没有条件。 当然,除了class级本身之外没有人可以称之为。

这实际上是一种常见模式:拥有static getInstance()并将构造函数保持为私有。

公共构造函数内部也可以调用私有构造函数。

构造函数是一种方法还是不是?

嗯。 我拒绝”。 至少,它是一种“非常特殊的”方法。 在什么情况下呢? 术语不如您尝试的那么重要。

如果构造函数没有返回任何内容,那么为什么每次调用它时我们都会得到一个新的Object。

new运算符返回一些东西(新实例)。

什么是构造函数的默认访问修饰符。

与方法相同。 包装和私营部门。

如果你没有指定任何构造函数,那么该类将获得一个默认构造函数,它不带任何参数,除了调用父构造函数之外什么都不做,并且是公共的。

  1. 是的,构造函数可以是私有的。 当您希望对实例创建进行更严格或替代控制时(例如使用工厂方法或使用Singleton等模式),即可完成此操作。
  2. 这是一种方法,但不直接调用。 这是在您创建新对象时代表您调用的特殊类型的方法。
  3. 构造函数不返回任何内容,它们创建新对象。
  4. 包的默认值是包私有。 因此对包中的任何类都公开,但对包外的代码不可见。

关于Tomcat性能和可伸缩性的思考:这是一个基于服务器硬件和请求类型的高度可变情况,当然还有服务于每个请求的代码的质量,效率和内存占用。

并发请求的下限是500.考虑到您可能想为每个请求创建一个线程,并为每个线程提供1MB堆栈.5 GB仅用于线程堆栈空间。 这是在堆内存和分配那么multithreading的性能开销之前。 我认为如果需要一次处理那么多请求,你可能需要考虑像JBoss这样的更重要的服务器。

  • 可以将构造函数声明为任何类的私有。
  • 构造函数是一种特殊方法,它返回它所属的类的实例,因此您不需要指定构造函数返回类型。
  • 如下所述,包私有是正确的答案。
  1. 是的 – 工厂实例单例经常使用这种模式,强制用户通过静态工厂方法初始化他们的类。
  2. 是的,这是一种方法
  3. 因为这是构造函数的作用 – 它构造。 (假设将返回施工结果)
  4. 与方法相同

关于您的Tomcat问题,它取决于Tomcat的哪个版本,它使用的IO模型(例如,NIO与历史网络IO模块)以及您的配置。 单个Tomcat可以一次处理数百个请求,尽管并发是可调的(每个请求将由来自池的不同线程或线程处理)。

构造函数的默认访问修饰符是CLASS ACCESS MODIFIER,如果类是public,则构造函数的访问修饰符是public。 如果该类是默认的,那么构造函数也是默认的。

  1. 在任何情况下,构造函数都可以创建为私有。
  2. 构造函数是一种特殊类型的方法 ,可以在为相应的类创建对象时自动调用。
  3. 构造函数不包含任何返回值。 它只是创建新对象。 不应该为构造函数提供任何返回类型。
  4. 构造函数的默认访问说明符是public
  1. 是。
  2. 是。
  3. 因为构造函数是由new调用的。 返回对象的是new ,构造函数只是设置内部状态。
  4. 上市。