符號(hào) ~
public static void main(String[] args){
int i = 5;
int j = 10;
System.out.println(i + ~j);
}
輸出是什么?
-6
“~” 是位運(yùn)算符萤衰,“非”的意思堕义。平時(shí)項(xiàng)目中用到位運(yùn)算符的時(shí)候的確很少:Java 運(yùn)算符(位運(yùn)算符)
</br>
</br>
Thread Join
public class MyThread extends Thread {
String myName;
MyThread(String name) {
myName = name;
}
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(myName);
}
}
public static void main(String args[]) throws InterruptedException {
MyThread mtl = new MyThread("mt1");
MyThread mt2 = new MyThread("mt2");
mtl.start();
// XXX
mt2.start();
}
}
//XXX
處替換成什么代碼,能先打印100次mt1
再打印100次mt2
答案mtl.join();
</br>
</br>
關(guān)于構(gòu)造函數(shù)
public class MyTest {
String s;
public static void main(String[] args) {
MyTest obj = new MyTest();
obj.go();
}
void MyTest() {
s = "this is a test";
}
void go() {
System.out.println(s);
}
}
輸出是什么脆栋?
null
因?yàn)闃?gòu)造函數(shù)必須是“無(wú)返回值”的倦卖,void
也不能加。去掉void就能打印出this is a test
限制符 public
protected
private
可加可不加椿争,看情況怕膛。
</br>
</br>
Swap, 引用傳遞,值傳遞
public class Swap {
public static void main(String args[]) {
String name[] = { "Killer", "Miller" };
String name0 = "Killer";
String name1 = "Miller";
swap(name0, name1);
System.out.println(name0 + ", " + name1);
swap(name);
System.out.println(name[0] + ", " + name[1]);
}
public static void swap(String name[]) {
String temp;
temp = name[0];
name[0] = name[1];
name[1] = temp;
}
public static void swap(String name0, String name1) {
String temp;
temp = name0;
name0 = name1;
name1 = temp;
}
}
輸出秦踪?
Killer, Miller
Miller, Killer
</br>
</br>
List 與 Iterator 獲取元素
public static void main(String args[]) {
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
String firtElement;
//XXX
firtElement = list.get(1);
firtElement = list[1];
firtElement = iterator.get(1);
firtElement = iterator[1];
firtElement = iterator.next();
}
//XXX
后哪幾行是合法的褐捻?
firtElement = list.get(1);
firtElement = iterator.next();
</br>
</br>
有順序的Set
public static void main(String args[]) {
//XXX
set.add("Apple");
set.add("Cricket");
set.add("Banana");
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
//XXX
加什么代碼掸茅,順序打印出Apple Cricket Banana
答案 Set<String> set = new LinkedHashSet<String>();
</br>
</br>
Do While
public static void main(String args[]) {
int i = 1, j = 10;
do {
if (i > j) {
break;
}
j--;
} while (++i < 5);
System.out.println("i: " + i + ", j: " + j);
}
輸出?
i: 5, j: 6
</br>
</br>
類的初始化順序
前面的題都有點(diǎn)無(wú)聊柠逞,這道題容易攪暈
public class Hawk extends Raptor {
public static void main(String args[]) {
System.out.println("Start Main Method");
new Hawk();
System.out.println("Leave Main Method");
}
}
class Bird {
{
System.out.println("Bird1");
}
public Bird() {
System.out.println("Bird2");
}
}
class Raptor extends Bird {
static {
System.out.println("Raptor1");
}
public Raptor() {
System.out.println("Raptor2");
}
{
System.out.println("Raptor3");
}
static {
System.out.println("Raptor4");
}
}
關(guān)于這題昧狮,總結(jié)了下:
父類static{} -> static{} -> 父類{} -> 父類Constructor() -> {} -> Constructor()
-
類的初始化(
static{}
) 總是先于 對(duì)象的初始化({}
與Constructor()
) -
對(duì)象的初始化(
{}
與Constructor()
),{}
總在Constructor()
之前 - 類的初始化 與 對(duì)象的初始化 總是父類先執(zhí)行
- 初始化塊(
static{}
與{}
)總是按類中定義的順序執(zhí)行 - 類什么時(shí)候被初始化边苹?理解Java中的類初始化
輸出
Raptor1
Raptor4
Start Main Method
Bird1
Bird2
Raptor3
Raptor2
Leave Main Method
</br>
</br>
無(wú)類型的TreeSet
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String args[]) {
Set set = new TreeSet();
set.add("2");
set.add(3);
set.add("1");
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
能編譯嗎陵且?能運(yùn)行嗎?打印什么个束?
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at java.lang.Integer.compareTo(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at sample.hibernate4.TreeSetTest.main(TreeSetTest.java:16)
原理不太懂慕购,感覺(jué)第一個(gè)add的元素即確定了集合的類型,遍歷時(shí)發(fā)現(xiàn)有不同類型時(shí)會(huì)報(bào)錯(cuò)茬底。求大神給個(gè)解釋的連接
</br>
</br>