相关疑难解决方法(0)

'同步'是什么意思?

我对synchronized关键字的用法和重要性有一些疑问.

  • synchronized关键字有什么意义?
  • 方法何时应该synchronized
  • 这在编程和逻辑上意味着什么?

java multithreading synchronized keyword

958
推荐指数
12
解决办法
48万
查看次数

Java:何时使用静态方法

我想知道何时使用静态方法?假设我有一个带有几个getter和setter的类,一个或两个方法,我希望这些方法只能在类的实例对象上调用.这是否意味着我应该使用静态方法?

例如

Obj x = new Obj();
x.someMethod
Run Code Online (Sandbox Code Playgroud)

要么

Obj.someMethod
Run Code Online (Sandbox Code Playgroud)

(这是静态方式吗?)

我很困惑!

java static-methods

868
推荐指数
13
解决办法
109万
查看次数

Java中的"final"关键字如何工作?(我仍然可以修改一个对象.)

在Java中,我们使用final带变量的关键字来指定其值不被更改.但我发现你可以改变类的构造函数/方法中的值.同样,如果变量是,static那么它是编译错误.

这是代码:

import java.util.ArrayList;
import java.util.List;

class Test {
  private final List foo;

  public Test()
  {
      foo = new ArrayList();
      foo.add("foo"); // Modification-1
  }
  public static void main(String[] args) 
  {
      Test t = new Test();
      t.foo.add("bar"); // Modification-2
      System.out.println("print - " + t.foo);
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,没有错误.

现在将变量更改为static:

private static final List foo;
Run Code Online (Sandbox Code Playgroud)

现在是编译错误.这final真的有用吗?

java final

457
推荐指数
9
解决办法
45万
查看次数

不可变的意思是什么?

这可能是有史以来最愚蠢的问题,但我认为这对新手来说完全是一个混乱.

  1. 有人可以澄清不可变的含义吗?
  2. 为什么是String不可改变的?
  3. 不可变对象有哪些优点/缺点?
  4. 为什么一个可变对象StringBuilder比首字母和副词更受欢迎?

一个很好的例子(在Java中)将非常感激.

java string immutability

383
推荐指数
11
解决办法
17万
查看次数

"public static void"在Java中意味着什么?

public static voidJava 中的含义是什么?

我正在学习.在我public static void正在使用的书中的所有示例中,都是在使用或创建的任何方法之前.这是什么意思?

java methods

146
推荐指数
5
解决办法
50万
查看次数

如何在Java中运行不同类实例的线程之间同步静态变量?

我知道synchronize在方法之前使用关键字会为该对象带来同步.也就是说,将同步运行相同对象实例的2个线程.

但是,由于同步是在对象级别,因此将不会同步运行该对象的不同实例的2个线程.如果我们在由该方法调用的Java类中有一个静态变量,我们希望它在该类的实例之间进行同步.这两个实例在两个不同的线程中运行.

我们可以通过以下方式实现同​​步吗?

public class Test  
{  
   private static int count = 0;  
   private static final Object lock= new Object();    
   public synchronized void foo() 
  {  
      synchronized(lock)
     {  
         count++;  
     }  
  }  
}
Run Code Online (Sandbox Code Playgroud)

是不是因为我们已经定义了一个lock静态的对象并且我们正在使用该synchronized锁的关键字,所以静态变量count现在在类的实例之间同步Test

java multithreading synchronization class object

119
推荐指数
2
解决办法
16万
查看次数

为什么最终关键字对于不可变类是必要的?

您能否澄清一下,为什么 在课堂上我们将最终关键字作为不可变关键字时需要它.我的意思是,如果我们将所有属性声明为private和final,那么它也是一个不可变类,不是吗?

对不起,如果问题看起来很容易,但我真的很困惑.帮帮我.

Editted:我知道一个声明final的类不能被子类化.但是如果每个属性都是私有的,那么最终会有什么区别呢?

java final immutability

20
推荐指数
1
解决办法
7112
查看次数

17
推荐指数
1
解决办法
4844
查看次数