为什么LinkedList
与ArrayList
扩展AbstractList
中的Java?
当我们想要在实现类中指定公共行为时,使用抽象类.
但是所有的方法AbstractList
都被ArrayList
和被覆盖了LinkedList
.
那么扩展这个类有什么用呢?
作为初学者,我正在阅读有关在Java中实现多线程的两种方法.
我在SO和许多其他线程上阅读了这个帖子.
据说这是
"prefer runnable",仅在您专门处理Thread的行为时才扩展线程.
有人可以通过为我提供一小段片段来帮助我理解这一行,从而解释我对Thread行为的专业意义.
定义不可变类的策略说明了这一点
所有领域都应该是最终的.
例如:
private String name;
Run Code Online (Sandbox Code Playgroud)
为什么它必须是最终的?
既然我没有给它制定setter方法呢?它无法改变.谢谢.
我读到了
Externalizable 为我们提供了 writeExternal() 和 readExternal() 方法,这使我们可以灵活地控制 Java 序列化机制,而不是依赖于 Java 的默认序列化。
但是,如果我实现了 Serializable 并覆盖,readObject(), writeObject(),
那么它是否也意味着我正在自定义序列化过程?
它有什么不同?
谢谢。
我创建了一个HashMap,其中Student
包含key和String作为值.
现在到处都读过如果用作hashmap的关键字,有必要覆盖equals
和hashcode
方法.
但我没有覆盖它.并在hashmap中插入多个键值对.我也能把它取回来.
那为什么有必要呢?
为什么String
类没有实现Cloneable
接口?
例如:(我们有时会写这种类型的代码.)
String s1 = new String("Hello");
String s2 = new String("Hello");
Run Code Online (Sandbox Code Playgroud)
这里s1!= s2;
所以,如果我们做到了,那就不要这样做了:
String s1 = new String("Hello");
String s2 = s1.clone();
Run Code Online (Sandbox Code Playgroud)
这可能很容易.
是否可以使用我的自定义序列化或使用外化来序列化类的瞬态字段?
示例:有一个Person
名称字段瞬态的类
transient String name;
Run Code Online (Sandbox Code Playgroud)
是否可以使用以下方法序列化它?
private void writeObject(ObjectOutputStream out) throws IOException;
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
Run Code Online (Sandbox Code Playgroud) 我正在创建一个多线程并yield()
在其中调用.
java.lang.Thread.yield()方法使当前正在执行的线程对象暂时暂停并允许其他线程执行.
其他线程是否可以执行哪些也想进入同步块?
synchronized(this.lock)
{
//calling yield here.
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
最近我得到了一个面试问题:
有一种情况,一个线程在一小时的间隔内执行批处理操作,你会使用执行框架或普通线程,为什么?
我很迷惑 .
由于只有一个线程,因此不需要执行程序服务.我可以使用while
和sleep
.
while(1)
{
// do task
// t1.sleep(60*60*1000);
}
Run Code Online (Sandbox Code Playgroud)
虽然有一个ScheduleExecutorService,它提供了许多方法来进行调度?
什么是最好的方法?
为什么主方法不调用第一种方法?
public class Test {
public static void printValue(byte...b) {
System.out.println("long");
}
public static void printValue(int i, int j, int k) {
System.out.println("int");
}
public static void main(String... args) {
byte b = 9;
printValue(b,b,b);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么输出int
?
java ×10
collections ×2
arraylist ×1
clone ×1
executors ×1
final ×1
hashcode ×1
hashmap ×1
immutability ×1
linked-list ×1
list ×1
overloading ×1
runnable ×1
string ×1
transient ×1