CoffeeNight
Java Vagrant
posts - 8,comments - 1,trackbacks - 0

         第3章  控制程序流程
  
    1.赋值和指派
  赋值动作以"=" 运算符
  对基本型别:A=B,B的内容复制给A 如果你修改A值,B不会被修改
  对象而言:实际操作的是reference 所以像上面的话就指向了同一个对象
 
   2.运算
  int i=9 与 Integer i=new Integer(9) 是不一样的
  后者是对象的声明
  对象的比较:内容和引用的比较
  对象内容的比较:object1.equals(object2)
  <!注意!>
 

 public class EqualsMethod {
  
public static void main(String[] args) 
{
    Integer n1 
= new Integer(47
);
    Integer n2 
= new Integer(47
);
    System.out.println(n1.equals(n2));
  }

}
 


 

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));
  }

}
 


  为甚么第1个结果是true,第2个是false
 
 以下引至JavaAPI :

 Object 类的 equals 方法实现对象上差别可能性最大的相等关系;
 即,对于任何非空引用值 x 和 y,当且仅当 x 和 y <引用同一个对象>时,
 此方法才返回 true(x == y 具有值 true)
 指向同一个对象是才返回true

      3.位运算符
   AND  &    2个输入符皆为1时,才为1,否则为0
   OR    |     任何一个为1,就为1;2个都是0时,才为0
   XOR  ^    2个输入位恰有1个为1时才为1,不能同时为1
   NOT  ~    仅仅接受1位操作数,产生输入位的反相
   <以上的位运算符除NOT(~)都可以和=号并用>
  
   4.位移运算符
   只有<<,>>,<<=,>>=,>>>=
   没有<<<=
   并且只能用于整数型别的数上(byte,short,int,long)
  
   <<: 左操作数向左移,左移的个数由右操作数决定
   ------------------
   Ex:  byte i=4;
         i<<=2;
   ------------------
   二进制表示:    00000100         4
  <<向左移2位    00010000          16
 
  -------------------
  Ex: byte i=-4;
       i<<=2;
  -------------------
  负数是先计算正数再取反(??)
 
  >>:操作数是正数的,则左操作数向右移
       操作数是负数的,如果原值是正数,较高位补0
                             原值是负数,较高位补1
  而>>>是原值是正还是负 都在较高位处处补0       
  <byte和short计算先晋升为int,最后再转化为byte或者short>                        
                
   5.if-else三元运算符
   boolean expression ? value1:value2
   true就执行value1,false就执行value2
  
   6.String运算问题
   ------------------------
    Ex: int x=1,y=2,z=3;
    String s="x,y,z"
    System.out.println(s+x+y+z);
    System.out.println(x+y+z+s);
   -------------------------
    results: x,y,z123
               6x,y,z
              
    7.当if小括号里面的2个类型均是boolean时:
       

 boolean i=false,j=false;
    
         
if(i==j){
          
             System.out.println(
"i==j");
             
         }

         
if(i=j){
          
            System.out.println(
"i=j");
         
        }
        
           
      
boolean i=true,j=true;
    
         
if(i==j){
          
             System.out.println(
"i==j");
             
         }

         
if(i=j){
          
            System.out.println(
"i=j");
         
        }
           


   如果i与j true false不一样 if(i=j)后面的句子是不会被执行的
   如果i与j同是false  if(i=j)后面的句子不会被执行
   如果i与j同是true  if(i=j)后面的句子却会被执行
                 
     8.数据类型之间的转换
        小转大是自动转换 大转小是强制转换
       
        float,int,boolean  ---> string
        String.valueOf(i)
       
        String --->int,float,
        Integer.parseInt(i)
       
        String --->long,double
        Long.parseInt(i)
        Double.parseInt(i)
     
      9.流程控制
      if-else        else字句是可有可无
      while    在循环开始时会评估一次 执行一次以后会再评估的
      do-while   语句至少执行一次,即使是开始就评估为false
      for(initialization;boolean-exp;step)
        在for小括号里的第1部分和第3部分可以由多个逗号(,)分隔的句子构成
        他们会被依序执行
      break  是跳出循环体 不再执行循环体里的部分
      continue    是回到循环起始处,开始下一个循环
     
      switch
        语法:switch(integral-sele) {
               
             case intergral-sele1 :statement; break;
             case intergral-sele2 :statement; break;
             case intergral-sele3 :statement; break;
               ......
            default : statement;
       
           }          
        <注意>
        如果没有break语句,语句执行到可执行的条件句子以后,后面的语句会继续执行
        如果没有break语句,也找不到可执行的句子,如果有default语句,会执行
         default语句以及default以后的句子  

       TO BE CONTINUED ......
  
                 MACINTER.

posted on 2006-07-28 17:22 CoffeeNight 阅读(246) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: