您的位置:首页 > 编程语言 > Java开发

thinking in java 阅读笔记 第三章 程序控制流程

2017-06-21 15:02 507 查看
第三章控制程序流程

3.1 java运算符

(1) ’==’ 关系运算符的使用注意事项.

         (2)短路:操作逻辑运算符时,我们会遇到一种名为“短路”的情况。这意味着只有明确得出整个表达式真或假的结论,才会对表达式进行逻辑求值。因此,一个逻辑表达式的所有部分都有可能不进行求值

         (3)字面值: 1. 字面值

最开始的时候,若在一个程序里插入“字面值”(Literal),编译器通常能准确知道要生成什么样的类型。但在有些时候,对于类型却是暧昧不清的。若发生这种情况,必须对编译器加以适当的“指导”。方法是用与字面值关联的字符形式加入一些额外的信息。下面这段代码向大家展示了这些字符。

 

//: Literals.java

 

class Literals {

 char c = 0xffff; // max char hex value

 byte b = 0x7f; // max byte hex value

 short s = 0x7fff; // max short hex value

  inti1 = 0x2f; // Hexadecimal (lowercase)

  inti2 = 0X2F; // Hexadecimal (uppercase)

  inti3 = 0177; // Octal (leading zero)

  //Hex and Oct also work with long.

 long n1 = 200L; // long suffix

 long n2 = 200l; // long suffix

 long n3 = 200;

  //!long l6(200); // not allowed

 float f1 = 1;

 float f2 = 1F; // float suffix

  float f3 = 1f; // float suffix

 float f4 = 1e-45f; // 10 to the power

 float f5 = 1e+9f; // float suffix

 double d1 = 1d; // double suffix

 double d2 = 1D; // double suffix

 double d3 = 47e47d; // 10 to the power

} ///:~

 

十六进制(Base 16)——它适用于所有整数数据类型——用一个前置的0x或0X指示。并在后面跟随采用大写或小写形式的0-9以及a-f。若试图将一个变量初始化成超出自身能力的一个值(无论这个值的数值形式如何),编译器就会向我们报告一条出错消息。注意在上述代码中,最大的十六进制值只会在char,byte以及short身上出现。若超出这一限制,编译器会将值自动变成一个int,并告诉我们需要对这一次赋值进行“缩小造型”。这样一来,我们就可清楚获知自己已超载了边界。

八进制(Base 8)是用数字中的一个前置0以及0-7的数位指示的。在C,C++或者Java中,对二进制数字没有相应的“字面”表示方法。

字面值后的尾随字符标志着它的类型。若为大写或小写的L,代表long;大写或小写的F,代表float;大写或小写的D,则代表double。

指数总是采用一种我们认为很不直观的记号方法:1.39e-47f。在科学与工程学领域,“e”代表自然对数的基数,约等于2.718(Java一种更精确的double值采用Math.E的形式)。它在象“1.39×e的-47次方”这样的指数表达式中使用,意味着“1.39×2.718的-47次方”。然而,自FORTRAN语言发明后,人们自然而然地觉得e代表“10多少次幂”。这种做法显得颇为古怪,因为FORTRAN最初面向的是科学与工程设计领域。理所当然,它的设计者应对这样的混淆概念持谨慎态度(注释①)。但不管怎样,这种特别的表达方法在C,C++以及现在的Java中顽固地保留下来了。所以倘若您习惯将e作为自然对数的基数使用,那么在Java中看到象“1.39e-47f”这样的表达式时,请转换您的思维,从程序设计的角度思考它;它真正的含义是“1.39×10的-47次方”。

3.2 控制执行

         Continue和break的用法,之前居然不知道这种用法.可以跳到特定的位置.

        public class LabeledWhile {

  publicstatic
void main(String[] args) {
   
int i = 0;
    outer:
   
while(true) {
      prt("Outer while loop");
     
while(true) {
        i++;
        prt("i = " + i);
       
if(i ==1) {
          prt("continue");
         
continue;
        }
       
if(i ==3) {
          prt("continue outer");
         
continueouter;
        }
       
if(i ==5) {
          prt("break");
         
break;
        }
       
if(i ==7) {
          prt("break outer");
         
breakouter;
        }
      }
    }
  }
  staticvoid prt(String s) {
    System.out.println(s);
  }
}
///:~
这种用法类似goto,滥用这种方法是会导致程序混乱的,但是这个方法有时候也很有用,比如跳出多重循环.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: