赋值运算符对应了赋值运算,即赋予程序里的变量或对象一定的内容。简单的赋值运算是把一个表达式的值直接赋给一个变量或对象,使用的赋值运算符是“=”,其格式如下:
变量或对象=表达式
其中赋值号右边的表达式可以是常量、另一个变量或对象以及方法的返回值。下面是一些简单赋值运算的代码:
i=0;
j=i;
k=i+j*5;
MyFirstString=MyDouble.toString();
MySecondString=MyFirstString;
注意:当赋值号的左边是一个对象名时,赋值运算符将把右边表达式所得的对象的引用赋值给它,而不是为这个对象开辟新的内存空间并把右边对象的所有内容赋值给它。
在使用赋值运算时,可能会遇到等号左边的数据类型和等号右边的数据类型不一致的情况,这时需要把等号右边的数据类型转化成等号左边的数据类型。某些情况下系统可以自动完成这种类型转换,另一些情况下就要用到强制类型转换。
Java的类型转换有较严格的规定:凡是将变量从占用内存较少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换声明;而将变量从较长的数据类型转换成较短的数据类型时,则必须做强制类型转换。例如下面的代码中分别定义了16位的字节类型变量MyByte和32位的整数类型变量MyInteger:
byte MyByte=10 ;
int MyInteger=-1;
如果把MyByte的值赋给MyInteger,则可以直接写成:
MyInteger=MyByte;
而把MyInteger的值赋给MyByte,则必须写成MyByte=(byte)MyInteger ;
先把变量MyInteger中保存的数值的数据类型从int变成byte后才能赋给MyByte,其中,(byte) 就是在做强制类型转换。其一般格式是:
(数据类型)变量名或表达式
算术运算符用于对整型数和实型数的运算。按其要求的操作数的个数分为单目运算符和双目运算符两类。
单目运算符,如 +(单目加,取正值)、-(单目减,取负值)、++ (自加)、-- (自减)。
双目运算符,如+(加)、-(减)、*(乘)、/(除)、%(取余数或取模)。
1.单目运算符
单目运算符++、--可以位于操作数的前面,如++x 或--x, 也可以位于操作数的后面,如x++、x--。无论单目运算符位于操作数的前面或后面,操作数完成单目运算并把结果赋给操作数变量。但是如把++x或x++整体参加表达式运算时,++x和x++的整体值是不一样的。代码如下:
int x1=10, x2=10, x3=10, x4=10;
int y1,y2,y3,y4;
++x1; //x1加1,x1=11
x2++; // x2自增1,x2=11;
y1=++x1; //y1为12,x1为12
y2=x2++; //y1为11,x2为12
--x3; //x3减1,x3=9
x4--; // x4自减1, =9
y3=--x3; //y1为9,x3为9
y4=x4--; //y4为10,x4为11
2.双目运算符
双目运算符+、-、*、/,如两个操作数都是整型,结果是整型,否则是实型。举例如下:
7+3=10; 7+3.0=10.0;
7-3=4; 7-3.0=4.0;
7*3 =21; 7*3.0 =21.0;
5/2=2; 5.0/2=2.5; //整数相除“/”,商为整数;小数相除,商为小数
6 % 2=0; 6 % 4=2;
%运算符求整数除的余数,它要求两边操作数均为整型,结果也为整型。
关系运算符有==(等于)、!=(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)及instanceof (对象运算符)7种,在一个关系运算符两边的数据类型应一致,一个关系表达式的结果类型为布尔型,即关系式成立为true,不成立为false。
关系运算举例如下:
10>5; //结果为true
10.5>5; //结果为true
′A′==′B′; //结果为false
true>false; //结果为false
instanceof用来确定对象所属的类,在其它运算符中介绍。
逻辑运算符有4个,即!(非)、&&(与)、||(或)、^(异或)、|(非简洁或)、&(非简洁与)。这些运算符要求的操作数和结果值都是布尔型。
逻辑运算举例如下:
! false //结果为true
! true //结果为 false
false||true //结果为 true 同or
false||false //结果为 false
true||true //结果为 true
true&&false //结果为 false 同and
true&&true //结果为 true
true^false //结果为true
“&”和“|”被称为非简洁运算符,因为在利用它们做与、或运算时,运算符左右两边的表达式总会被运算执行,然后再对两表达式的结果进行与、或运算;而在利用“&&”和“||”做简洁运算时,运算符右边的表达式有可能被忽略而不加执行。例如:
int x = 3, y = 5 ;
boolean b = x > y && x++ == y-- ;
在计算布尔型的变量b的取值时,先计算&&左边的关系表达式x > y,得结果为假,根据逻辑与运算的规则,只有参加与运算的两个表达式都为真时,最后的结果才为真;所以不论&&右边的表达式结果如何,整个式子的值都为假,右边的表达式就不予计算执行了;最后3个变量的取值分别是:x为3,y为5,b为false。
如果把上题中的简洁与(&&)换为非简洁与(&),则与号两边的两个表达式都会被运算,最后3个变量的取值分别是:x为4,y为4,b为false。
同理,对于简洁或(|),若左边的表达式的运算结果为真,则整个或运算的结果一定为真,右边的表达式就不会再运算执行了。
1.三目条件运算符
Java中的三目条件运算符与C语言完全相同,使用形式是:
x ? y : z
其规则是:先计算表达式x的值,若x为真,则整个三目运算的结果为表达式y的值;若x为假,则整个运算结果为表达式z的值。参看下面的例子:
int x = 5, y = 8, z = 2 ;
int k = x < 3 ? y : z ; // x < 3为假,所以k取z的值,结果为2
int y = x > 0 ? x : -x ; // y为x的绝对值
2.复杂赋值运算符
复杂赋值运算符是在先进行某种运算之后,再把运算的结果做赋值。
其一般形式为:变量名<op=>表达式。就是将将变量的值与表达式的值进行op指定的运算后再赋给该变量。
3.括号与方括号
括号运算符()在某些情况下起到改变表达式运算先后顺序的作用;在另一些情况下代表方法或函数的调用。它的优先级在所有的运算符中是最高的。
方括号运算符[]是数组运算符,它的优先级也很高,其具体使用方法将在后面介绍。
4.对象运算符
对象运算符instanceof用来测定一个对象是否属于某一个指定类或其子类的实例,如果是则返回true,否则返回false。例如:
boolean b = MyObject instanceof TextField;
运算符的优先级决定了表达式中不同运算执行的先后顺序。如关系运算符的优先级高于逻辑运算符,x > y && ! z相当于( x > y ) && ( ! z )。运算符的结合性决定了并列的相同运算的先后执行顺序。如对于左结合的“+”,x + y + z等价于 ( x + y ) + z,对于右结合的“!”,!!x等价于 !( ! x )。运算符的优先级与结合性如表所示。

注释是程序不可少的部分。Java的注释符有两种:
一种是行注释符“//”,以“//”开头到本行末的所有字符被系统理解为注释,不予编译。如:
// This a test program of what is to be done
另一种注释符是块注释符“/*”和“*/”,其中“/*”标志着注释块的开始,“*/”标志着注释块的结束。“/*”和“*/”可以括起若干个注释行。如:
/*程序名:
项目名:
编写时间:
功能:
输入/输出: */