Java语言基础
一、数据类型种类:
1Java中主要有基本数据类型(intfloatcharboolean等)和复合数据类型(数组、类、接口等)。
类型
描述
初始值
byte
8位符号整数,-128—127;八进制前导符:0;十六进制前导符:0x
(byte)0
short
16位符号整数
(short)0
int
32位符号整数
0
long
64位符号整数
0L
float
32位单精度浮点数
0.0f
double
64位双精度浮点数
0.0d
Boolean
布尔型只有两个值
(true)、假(false)
false
char
16位字符
'\u0000'
2标识符和关键字
1标识符:函数名字、类名、变量名、常量名、对象名、标号名、类型名等
2)关键字:系统已预定义的单词,属于保留字,用户不可再重新定义。
3常量
(1)Java的转义符:
转义序列
含义
\n
回车(\u000a)
\t
水平制表符(\u0009)
\b
空格(\u0008)
\r
换行(\u000d)
\f
换页(\u000c)
\'
单引号(\u0027)
\"
双引号(\u0022)
\\
反斜杠(\u005c)
\ddd
三位八进制
\udddd
四位十六进制
2final变量:final终值变量赋值后,在程序中不再改变。
final float PI = 3.1415926;
        final boolean DEBUG = false;
        final int COUNT = 30;
(3)字面量 – 可以是任何数字,文本或者其他信息,直接代表一个值。主要有数字常量、字符常量、字符串常量等
数字字面量
    long类型        数字后加L            eg:    4159L
        八进制            数字前加0            eg:    0173 = 1x8x8 + 7x8 + 3=123
        十六进制        数字前加0x            eg:    0x7B  = 7x16 + 11=123
    float类型        数字后加F(f)        eg:    4159F
布尔字面量:true,false
字符字面量:16位Unicode支持上千个字符;ASCII:’a’, ‘A’, ‘# ’, ‘5’  ;
字符串字面量:String example = “Lee asked, \”how are you doing?\””;
4、变量程序在运行时能够储存信息的内存空间
变量命名
            以字符,_, $ 开头,之后可以包含任何字母和数字的组合
            变量名的第一个字母用小写
            变量名中每一个后继的单词用一个大写字母开头
            其他所有的字母都用小写
            关键词不能用做变量名,并且不能以数字开头。
变量定义和声明
int Sum=0;
5Java中数据类型的转换规则:
不同类型的数据混合运算时,系统自动将数据从低级转换到高级(域小的自动转化为域大的数据类型)。
    byte a=20; short b=30;
int X=a+b;  域小的自动转化为域大的数据类型
程序例:
class Convention
{    public static void main( String args[ ] )
    {  byte bByte = 2;
        char cChar = 'c';
        int nInt = 10;
        float fFloat = 3.5f;
        double dDouble = 1.234;
   
        float fFloatNew = fFloat + bByte;        //float OP byte ->float
        int nIntNew = cChar + nInt;            //char OP int ->int
        double dDoubleNew = fFloatNew/nInt;        //float OP double ->double
    }
}
高级的数据类型转换到低级时,必须强制进行数据类型转换。
int a=20;
byte b=(byte)a;  //域大者转换为域小者,则应强制转换
要点
Java中不支持C/C++中的指针(基于安全性考虑)、结构(将类与结构统一,只要类中不包含有方法的定义,便是结构)、联合与枚举等数据类型;无全局变量定义、数组越界为异常错误等。
练习:
1Which of the following is valid Java identifier?
a) my_id
b) lc%e
c) my-id
d) id101
e) 101id
f) synchronized
g) _id
h) %id
i) #id
j) $id
k) native
2 Which of the following are wrong:
a) 0666
b) xfff
c) 0s78
d) 0586
e) 0x339
f) 9.6e-50
g) 0xfga
h) 2000
i) 0796
j) -e-29
k) 0407
l) 0111
3. identify the data type of the following numbers:
        a)55L    b)’B’        c)470f    d)345D    e)076    f)0x76
二、Java中的运算符
1、概述:基本上与C/C++相同,但有个别的不同。
1操作符的优先级:标志运算符在表达式中的运算顺序
描述
操作符
最高优先级
. [] ()
一元
~ ! ++ --
* / %
加减(二元)
+ -
移位
<< >> >>>
关系
< <= >= >
等于或不等于
== !=
按位与
&
按位异或
^
按位或
|
条件与
&&
条件或
||
条件(三元)
?:
赋值
=
2)运算符的结合性:也是决定运算顺序的一种标志。
  结合性:从左到右;从右到左(如单目、赋值等)
3)典型的操作符
关系操作符:>  >=  <  <=  ==  !=
逻辑操作符:!  &  |  ^  &&  ||
三元操作符(?:)
位操作符:
位操作符:按位与(&)、按位或(|)、按位异或(^)。
移位操作符:左移(<<)、带符号右移(>>)、不带符号右移(>>>)。
4 新增 instanceof(关系运算符):识别某对象是否为某类的对象。
void Cook(Person man)
{    if(man instanceof Chinese)      //如果识别是中国人则按照中国人的习惯来Cook
{
}
else if(man instanceof American)  //如果识别是美国人则按照美国人的习惯来Cook
{
}
}
5改造“+”运算符:使其能够适应字符串运算:System.out.println("How Are"+"You !");
1. 表达式和运算符
算术运算符:+,  -,  *,  /,  %
        除法时,若将结果保留在一个整数里,结果将向下取整,如 int x = 31/9,则x = 3
        %产生一个除法操作的余数,如 31%9 = 4
赋值运算符:
表达式                    含义
x += y                    x = x + y
x -= y                    x = x - y
x *= y                    x = x * y
x /= y                    x = x / y
增量和减量运算符:
表达式                    含义
x = y++                    x = y ,  y = y + 1
x = y---                    x = y ,  y = y - 1
x = ++y                    y = y + 1 ,x = y + 1
x = ---y                    y = y -1 ,x = y - 1
比较运算符:==,  !=,  <,  >,  <=,  >=
逻辑运算符: &(&&),  |(||),  ^,  !
字符串运算: +, +=
位运算符:>>,<<,<<<, &, |, ^
eg:  1)  00000000 00000000 00000000 00111111<< 3  的值为   
                00000000 00000000 00000001 11111000 = 504  (右边加0);
          2)  00000000 00000000 00000000 00111111>> 3 is   
                00000000 00000000 00000000 00000111 = 7  (最左边为0时,左边加0)
          3)  11111000 00000000 00000000 01111010 >> 3 is
                11111111 00000000 00000000 00001111    (最左边为1时,左边加1)            4)  11111000 00000000 00000000 01111010 >>> 3 is
                00011111 00000000 00000000 00001111    (左边永远加0) 
            注意事项:
1) 被操作数必须是int或long, byte和short要化做int
2) 被操作数是int时, 操作数不得大于32,否则取其modulo; 
3) 被操作数是long时, 操作数不得大于64,否则取其modulo; 
程序例
public class BitwiseDemo
{  static final int VISIBLE = 1;      //二进制位为:00000001
    static final int DRAGGABLE = 2;    //二进制位为:00000010
    static final int SELECTABLE = 4;  //二进制位为:00000100
    static final int EDITABLE = 8;    //二进制位为:00001000
    public static void main(String[] args)
    {  int flags = 0;                  //00000000   
        flags = flags | VISIBLE;         
  //              00000000
  //            00000001                此时Flags=00000001
        flags = flags | DRAGGABLE;       
//              00000001
  //      +    00000010              此时Flags=00000011
        if ((flags & VISIBLE) == VISIBLE)
        {
//            00000011
//          * 00000001        结果flags=00000001java64位
            if ((flags & DRAGGABLE) == DRAGGABLE)