java排班
Ⅰ java關於==的問題求解
諸如Integer i = 127,在編譯後就等同於Integer i = Integer.valueOf(127)
看一下Integer.valueOf方法
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
到此應該恍然大悟了,IntegerCache緩存了[-128,127]之間的Integer對象,如果valueOf的參數i處於這之間,就返回緩存的對象。否則就new一個新的Integer。前面已經說過,「==」作用於對象上的時候,其比較的是對象的地址,例子中的i和j都是從緩存中拿的,當然是同一個對象,a和b都是通過new Integer獲得的,當然不是同一個對象了。
Ⅱ 如何用java實現人員自動排班的問題
應該用不上什麼線程,一次性把所有的班都排好
六個元素的數組
兩個指針,一個是工作日當值人,一個是周末當值人,初始都是0
從今天開始到指定某一天,譬如年底
int idx_workday =0;
int idx_weekend =0;
ArrayList assignment = new ArrayList();
day = today;
while(day不是年底){
int i;
if (day is workday){
i = idx_workday++;
assignment.add(i);
if (idx_workday >5) idx_workday = 0;
}else{
i = idx_weekend++;
assignment.add(i);
if (idx_weekend >5) idx_weekend= 0;
}
}
output assignment