我们不能创建构造函数synchronized但可以synchronized在构造函数中编写它.在什么情况下这样的要求会来?我很开心.
package com.simple;
public class Test {
public Test() {
synchronized (this) {
System.out.println("I am called ...");
}
}
public static void main(String[] args) {
Test test=new Test();
System.out.println(""+test);
}
@Override
public String toString() {
return "Test []";
}
}
Run Code Online (Sandbox Code Playgroud) 我一直不明白为什么我们能够从其他类调用一个类的构造函数。构造函数是一种方法,通常在尝试从类中调用方法时,我们必须将该方法设为静态,以便我们可以访问它
MyClass.method();
Run Code Online (Sandbox Code Playgroud)
或者我们会创建该类的一个实例,然后调用该方法(现在显然这个方法会与这个问题的前提相矛盾)
MyClass myClass = new MyClass();
myClass.method();
Run Code Online (Sandbox Code Playgroud)
但是在构造函数的情况下,我们两者都不做。Java 如何在不执行这些方法的情况下调用类的构造函数?我知道类的构造函数必须对您从中调用它的类可见,即如果您正在调用的类构造函数位于不同的包中,则必须导入该包。
那么,Java 如何处理调用构造函数,以便能够在不使用上述方法的情况下调用它们呢?
我无法确定究竟是什么.此时,我熟悉方法,构造函数和类声明的外观.这是什么?为什么它看起来像构造函数和方法有一个婴儿?
public Polygon polygonFrom(Point[] corners) {
// method body goes here
}
Run Code Online (Sandbox Code Playgroud) 作为一个初学者,我想知道为什么我的caller.VelocityC唯一作品放在主要区块内?
当我有这样的代码时,我无法调用该方法.
方法调用类:
public class Velocity2 {
VelocityCounter caller = new VelocityCounter();
caller.VelocityC(6, 3);
}
Run Code Online (Sandbox Code Playgroud)
包含方法的类:
public class VelocityCounter {
void VelocityC(int s, int v){
System.out.print(s/v);
}
}
Run Code Online (Sandbox Code Playgroud) 我们知道Java是一种面向对象的语言.一切都是Java中的对象.我们也知道对象有一些东西(实例变量/字段)和做某事(方法).我们使用方法更改实例变量的状态是安全的,即; 二传手和吸气鬼.所以在构造函数中我们初始化实例变量.换句话说,构造函数正在为对象做一些事情.因此,假设构造函数是一种实用方法,就像设置值的setter一样,这是不正确的?区别在于setter甚至我们有返回类型void,在构造函数中我们没有任何返回类型.并且可以在对象上调用setter任意次数,但可以在对象的生命周期中调用构造函数一次.