1. 隨機數
2. Aliasing during method calls
class?Letter?{
??char?c;
}

public?class?PassObject?{
????static?void?f(Letter?y)?{
????y.c?=?'z';
??}
??public?static?void?main(String[]?args)?{
????Letter?x?=?new?Letter();
????x.c?=?'a';
????System.out.println("1:?x.c:?"?+?x.c);
????f(x);
//result:"1:?x.c:?a",
//??????"2:?x.c:?z"
}
} Passing objects to methods may not be what you're used to. It just pass a reference
3.Also reference
????????Integer?n1?=?new?Integer(47);
??????Integer?n2?=?new?Integer(47);
????????System.out.println(n1?==?n2);
????????//result??false If you want to compare the actual contents of an object for equivalence. You must use the special method equals(?) that exists for all objects .REMEMBER the default behavior of equals(?) is to compare references.So the result of the fellowing code is false
class?Value?{
??int?i;
}

public?class?EqualsMethod2?{
???public?static?void?main(String[]?args)?{
????Value?v1?=?new?Value();
????Value?v2?=?new?Value();
????v1.i?=?v2.i?=?100;
????System.out.println(v1.equals(v2));
??
??}
}?///:~
4.Here’s an example that demonstrates the use of all the operators involving bits:

static?void?printBinaryInt(String?s,?int?i)?
{
????System.out.println(
??????s?+?",?int:?"?+?i?+?",?binary:?");
????System.out.print("???");
????for(int?j?=?31;?j?>=?0;?j--)
??????if(((1?<<?j)?&??i)?!=?0)
????????System.out.print("1");
??????else
????????System.out.print("0");
????System.out.println();
??}

??static?void?printBinaryLong(String?s,?long?l)?
{
????System.out.println(
??????s?+?",?long:?"?+?l?+?",?binary:?");
????System.out.print("???");
????for(int?i?=?63;?i?>=?0;?i--)
??????if(((1L?<<?i)?&?l)?!=?0)
????????System.out.print("1");
??????else
????????System.out.print("0");
????System.out.println();
??}

Since then goto-bashing has been a popular sport, with advocates? of the cast-out keyword scurrying for cover.
As is typical in situlations like this, the middle ground is the most fruitfull.
5.Here is a demonstration of labeled break and continue statements with whileloops:
import?com.bruceeckel.simpletest.*;


public?class?LabeledWhile?
{
??static?Test?monitor?=?new?Test();

??public?static?void?main(String[]?args)?
{
????int?i?=?0;
????outer:

????while(true)?
{
??????System.out.println("Outer?while?loop");

??????while(true)?
{
????????i++;
????????System.out.println("i?=?"?+?i);

????????if(i?==?1)?
{
??????????System.out.println("continue");
??????????continue;
????????}

????????if(i?==?3)?
{
??????????System.out.println("continue?outer");
??????????continue?outer;
????????}

????????if(i?==?5)?
{
??????????System.out.println("break");
??????????break;
????????}

????????if(i?==?7)?
{
??????????System.out.println("break?outer");
??????????break?outer;
????????}
??????}
????}

????monitor.expect(new?String[]?
{
??????"Outer?while?loop",
??????"i?=?1",
??????"continue",
??????"i?=?2",
??????"i?=?3",
??????"continue?outer",
??????"Outer?while?loop",
??????"i?=?4",
??????"i?=?5",
??????"break",
??????"Outer?while?loop",
??????"i?=?6",
??????"i?=?7",
??????"break?outer"
????});
??}
}?///:~RULES:
- A plain continue goes to the top of the innermost loop and continues.
- A labeled continue goes to the label and reenters the loop right after that label.
- A break “drops out of the bottom” of the loop.
- A labeled break drops out of the bottom of the end of the loop denoted by the label.
6. Even differences in the ordering of arguments are sufficient to distinguish two methods.
?
7. Calling constructors from constructors

public?class?Flower?
{
??
??int?petalCount?=?0;
??String?s?=?new?String("null");

??Flower(int?petals)?
{
????petalCount?=?petals;
????System.out.println(
??????"Constructor?w/?int?arg?only,?petalCount=?"
??????+?petalCount);
??}

??Flower(String?ss)?
{
????System.out.println(
??????"Constructor?w/?String?arg?only,?s="?+?ss);
????s?=?ss;
??}

??Flower(String?s,?int?petals)?
{
????this(petals);
//!????this(s);?//?Can't?call?two!
????this.s?=?s;?//?Another?use?of?"this"
????System.out.println("String?&?int?args");
??}

??Flower()?
{
????this("hi",?47);
????System.out.println("default?constructor?(no?args)");
??}

??void?print()?
{
//!?this(11);?//?Not?inside?non-constructor!
????System.out.println(
??????"petalCount?=?"?+?petalCount?+?"?s?=?"+?s);
??}
}9. equal() and "=="
String?name1?=?new?String("Tory");
Stirng?name2?=?new?String("Tory");

//兩個對象的引用,不相等
System.out.println(?name1?==?name2?);
//內容,相等
System.out.println(?name1.equals(name2));

String?name3?=?"Tory";
String?name4?=?"Tory";

//相同常量的引用,相等
System.out.println(?name3?==?name4?);
//內容,相等
System.out.println(?name3.equals(name4));10.自己的equals()方法

class?MyDate?
{

????int?day,?month,?year;
????

????public?MyDate?(int?day,?int?month,?int?year)
{
????
????????this.day?=?day;
????????this.month?=?month;
????????this.year?=?year;
????????
????}?

}


class?MyOkDate?extends?MyDate?
{


????public?MyOkDate?(?int?day,?int?month,?int?year?)?
{
????
????????super(day,?month,?year);
????????
????????}
????????

????????public?boolean?equals?(?Object?obj?)?
{
????????

????????????if(?obj?instanceof?MyOkDate?)?
{
????????????????MyOkDate?m?=?(MyOkDate)?obj;
????????????????if(m.day?==?day?&&?m.month?==?month?&&?m.year?==?year)
????????????????return?true;
????????????????
????????????}
????????????return?false;
????????}?
}


public?class?TestEqualsObject
{


????public?static?void?main?(?String?[]?args?)
{
????????
????????MyDate?m1?=?new?MyDate(4,?12,?1985);
????????MyDate?m2?=?new?MyDate(4,?12,?1985);
????????
????????//不相等
????????System.out.println(m1.equals(m2));
????????
????????m1?=?new?MyOkDate(4,?12,?1985);
????????m2?=?new?MyOkDate(4,?12,?1985);
????????
????????//相等
????????System.out.println(m1.equals(m2));
?????????
????}
????
}