第二章 基础语法
一.    关键字
goto 和 const 不是java 关键字,是java的保留字。true和false是不是关键字。
二.    标识符
命名规则:
(1)    首字母只能以字母,下划线,$开头,其后可以跟字母,下划线,$和数字。
(2)    标识符区分大小写。
(3)    标识符不能使关键字。
(4)    标识符长度没有限制。
命名建议:
(1)    驼峰标识:若由多个单词组成,则第二个单词开始每个单词首字母大写。
(2)    尽量做到见名知意。
(3)    尽量少用带$符号的标识符。
(4)    标识符不应该使用中文,虽然可以编译和运行成功,但不建议这么做。
三.    数据类型
数据类型分类:基本数据类型和引用数据类型。
基本数据类型:四类八种:
(1)    整数型:byte, short, int, long
(2)    浮点型:float, double
(3)    字符型:char
(4)    逻辑性:boolean
整数型:byte:字节型
        short:短整型
        int:整型
        long:长整型
        明确表示是long型,可在后边直接加L(l)。
整数型的值,没有特别指明,默认是int型。
取值范围和默认值
名称    长度    范围    默认值
byte    8位    -27~27-1    0
short    16位    -215~215-1    0
int    32位    -231~231-1    0
long    64位    -263~263-1    0

浮点型:float ,double
提示:
(1)    浮点型的值,如果没有特别指明,默认是double型的。
(2)    定义float型时,一定要指明是float型,可通过在数字后边加F(f)。
(3)    定义double类型时,可以不用指明,默认的就是double型,也可通过在数字后边添加D(d)来表示。
取值范围和默认值
名称    长度    默认值
float    32位    0f
double    64位    0
   字符型:char 用来标识单个字符,一个char代表一个16-bit的无符号的unicode字符,一个char字符必须包含在单引号内。

    取值范围和默认值
名称    长度    范围    默认值
Char    16位    Unicode216-1    Unicode 0
    转义字符:\n  回车
\t  水平制表符
\b  退格
\r  换行
\f  换页
\’  单引号
\”  双引号
\\  反斜杠
逻辑型:boolean 只有两个文字值:即true和false。
        Boolean默认值是false。
        Java中不可以将整数类型和逻辑类型相转换。
字符串类型:String 
        标识方式是用双引号将要表示的字符串引起来。
    注意:
(1)    String 不是原始数据类型,而是一个类(class)
(2)    String包含的字符数量是任意多个,而字符类型只能是一个
(3)    String默认值是null    
四.    常量和变量
常量:值不可以改变的标识符
定义规则:尽量全部大写,并且用下划线将词分隔。
变量:值可以改变的标识符,用来引用一个存储单元,用标识符来表示,可以通过操作变量来操作变量所对应的内存区域或值块的值。
五.    Java代码的基本知识
注释:(1) //:注释单行语句
      (2)/* */: 多行注释
(3)/** */:文档注释
        常常在javadoc注视中加入一个“@”开头的标记,结合javadoc指令的参数,可以在生成的api文档中产生特定的标记。
    常用的标记:@author:作者
@version:版本
@deprecated:不推荐使用的方法
@param:方法的参数类型
@return:方法的返回类型
@see:”参见”
@exception:抛出的异常
@throws:抛出的异常和exception同意
        应用范围:
            类和接口文档中的注释的标记:@author @version @see @deprecated
            方法和构造方法的注释中的标记:@deprecated @param @return @see                 @exception @throws:
            属性文档注释中的标记:@see @deprecated
六.    运算符
移位运算
 
负数等于正数取反加一
 
>>n  右移n位,高位用符号位填充。
 
无符号右移 >>>n 右移n位,高位用0填充
 
<<n,左移n位,低位用0填充
七.    控制语句
if…else 语句

switch语句:
switch (expr1){
case expr2:
statements;
break;
case expr3:
statements;
break;
default:
statements;
break;

(1)    expr1只能是整数型的值或enum枚举类型的常量值,包含byte,short,int,char,不能是字符串或对象,也不能是long型的值。
(2)    变量或表达式不与任何case值相匹配时,则执行缺省符中的程序代码。(与default位置无关)
(3)    若没break语句作为结束句,则程序继续执行到下一个CASE,而不检查case表达式的值。

for 循环
for(int I; i<10; i++)
for 语句中的三个部分都可以省略,但不建议这么做
while 循环
do 循环
do {
语句或块;
}while (布尔测试);
do循环与while循环的不同之处在于,前者至少执行一次,后者可能一次都不执行。

特殊循环流程控制:
break:用来从switch语句,循环语句,和预先给定了label的块中退出,跳出离break最近的循环。
continue:用来略过并跳到循环体的结尾,终止本次循环,继续下一次循环。
label:标识需要转换到的任何有效语句,被用来标识循环构造的复合语句。


八.什么是按值传递?什么是按引用传递?哪些是按值传递?哪些是按引用传递?
   按值传递传递的是值的副本,如果方法修改了该参数,仅改变副本,而原始值保持不变。
   按引用传递指的是在方法调用时,传递的参数是按引用进行传递,其实传递的是引用的      
   地址,也就是变量所对应的内存空间的地址。因此,如果方法修改了该参数,调用代码
   中的原始值也随之改变。
例:public class PassTest
  {
    float ptValue; 
     public void changeInt (int value) 
    {           value = 55;    } 
     public void changeStr (String value) 
    {           value = new String ("different");    } 
    public void changeObjValue (PassTest ref) 
    {           ref.ptValue = 99f;    } 
    public static void main (String args[]) 
    {     String str; 
           Int val; 
           PassTest pt = new PassTest (); 
           val = 11; 
           pt.changeInt (val); 
           System.out.println ("Int value is: " + val); 
           str = new String ("Hello"); 
           pt.changeStr (str); 
           System.out.println ("Str value is: " + str); 
           pt.ptValue = 101f; 
           pt.changeObjValue (pt); 
           System.out.println ("Current ptValue is: " + pt.ptValue); 
     } 
}
这个程序最后输出的结果将是:
11
Hello
99f