M-A-T Tory's Blog

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  16 随笔 :: 1 文章 :: 1 评论 :: 0 Trackbacks
1. 随机数
  // Create a random number generator,
   // seeds with current time by default:

Random rand = new Random();

    
int i, j, k;
   
// Choose value from 1 to 100:
    j = rand.nextInt(100+ 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:

  1. A plain continue goes to the top of the innermost loop and continues.
  2. A labeled continue goes to the label and reenters the loop right after that label.
  3. A break “drops out of the bottom” of the loop.
  4. 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(4121985);
        MyDate m2 
= new MyDate(4121985);
        
        
//不相等
        System.out.println(m1.equals(m2));
        
        m1 
= new MyOkDate(4121985);
        m2 
= new MyOkDate(4121985);
        
        
//相等
        System.out.println(m1.equals(m2));
         
    }

    
}
posted on 2006-04-24 22:36 Tory 阅读(310) 评论(0)  编辑 收藏 引用 所属分类: Java Learning

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理