计算机程序是由许多语句组成的,而语句是由更基本的表达式和运算符组成的。计算机最基本的用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一种丰富的运算符来操纵变量。可以把运算符分为以下几种
算术运算符
自增自减运算符
关系运算符
逻辑运算符
赋值运算符
条件运算符
位运算符
1.1 算术运算符
算术运算符用在数学表达式中,其作用和在数学中的作用基本一样。
1.2自增自减运算符
自增(++)和自减(–)是两个特殊的运算算术符,自增自减运算符只需要一个操作数
++:自增,操作数的值增加1
–:自减,操作数的值减少1
例:
public class HelloJava{
public static void main (String []args) {
int a = 10;
int b = 20;
b = ++a;
System.out.println("a=" +a+ ",b="+b);
}
}
运行结果:
1.3关系运算符
关系运算符也称为比较运算符,用于对两个操作数进行关系运算,以确定两个操作数之间的关系。
==:比较两个操作数的值是否相等,如果是,条件为真
!= :比较两个操作的数值是否不相等,如果是,条件为真
>:比较左操作的值是否大于右操作的值,如果是,条件为真
<:比较左操作的值是否小于右操作的值,如果是,条件为真
>= :比较左操作数的值是否大于或等于右操作的值,如果是,条件为真
<= :比较左操作数的值是否小于或等于右操作的值,如果是,条件为真
例:
public class HelloJava{
public static void main (String [] args) {
int a=10,b=20;
if (a>b) {
System.out.println("a>b");
}
if (a<b) {
System.out.println("a);
}
if (a==b) {
System.out.println("a=b");
}
}
}
运行结果:
1.4逻辑运算符
逻辑运算符主要用来把各个运算的变量连接起来,组成一个逻辑表达式,以判断某个表达式是否成立,判断的结果是true或false。
&&:逻辑与运算符。当且仅当两个操作数都为真,结果才为真
|| :逻辑或操作符。如果任何两个操作数任何一个为真,结果为真
!:逻辑非运算符。用来反转操作数的逻辑状态。如果操作数为真,结果为假
例:
public class HelloJava{
public static void main (String []args) {
boolean flag = true;
System.out.println(!flag);
}
}
运行结果:
1.5赋值运算符
赋值运算符的主要功能是为各种不同类型的变量赋值,简单的赋值运算由等号(=)来实现,就是把等号右边的值赋予等号左边的变量
=:简单赋值运算符,把右操作数的值赋给左操作数
+=:加和赋值运算符,把左操作数和右操作数相加赋给左操作数
-=:减和赋值运算符,把左操作数和右操作数相减赋给左操作数
*=:乘和赋值运算符,把左操作数和右操作数相乘赋给左操作数
/=:除和赋值运算符,把左操作数和右操作数相除赋给左操作数
%=:取模和赋值运算符,把左操作数和右操作数取模后赋给左操作数
例:
public class HelloJava{
public static void main (String [] args) {
int a =10;
int b =20;
System.out.println("a=" + a + ", b=" + b);
a += b;
System.out.println("a += b, a=" +a);
}
}
运行结果:
1.6条件运算符
条件运算符(?:)也称为三元运算符
**语法格式:布尔表达式?表达式1:表达式2**
运算过程为:如果布尔表达式的值为true,则返回表达式1的值;否则返回表达式2的值
例:
public class HelloJava{
public static void main (String [] args){
int score=90;
String mark = (score >= 60 ? "及格" : "不及格";
System.out.println("考试成绩结果:"+ mark);
}
}
运行结果:
1.7位运算符**
位运算符主要用来对操作数的每个二进制位进行运算,其操作数的类型是整数类型以及字符串类型,运算的结果是整数类型
在实际的程序设计中,根据输入数据和中间结果的不同情况需要选择不同的语句执行,在这种情况下,必须根据某个变量或表达式的值做出判断,以决定执形哪些和跳过哪些语句不执行。Java中有两种分支结构,分别是if语句和switch语句。
2.1 if语句
一个if语句包含一个布尔表达式和一条或多条语句
**语法格式:
if(布尔表达式)
{
语句 //如果布尔表达式为true将执行语句
}**
例:
public class HelloJava {
public sstatic void main (String [] args) {
int x =10;
if (x < 20) {
System.out.println("这是if语句");
}
}
}
运行结果:
2.2 if…else语句
if语句后面可以跟else语句,当if语句的布尔表达式值为false,else语句会被执行。
**语法格式:
if(布尔表达式){
语句1 //如果布尔表达式的值为true将执行语句
}else{
语句2 //如果布尔表达式的值为false将执行语句
}**
if …else表示判断两种情况:
1.满足if的条件
2.不满足if的条件,此时执行else语句
例:
public class HelloJava{
public staic void main (String [] args) {
int x =30;
if (x < 20){
System.out.println("这是if语句");
}else{
System.out.println("这是else语句");
}
}
}
2.3 If … else if …else 语句
if语句后面可以跟else if…else语句,这种语句可以检测多种可能的情况,也称为多条件判断语句或多分支语句。
注:
1.if语句至多有一个else语句,else语句在所有的else if语句之后
2.if语句可以有若干else if语句,它们必须在else语句之前
3.一旦其中有一个else if语句检测为true,其他的else if以及else语句都将被跳过
**语法格式:
if (布尔表达式 1){
语句1 //如果布尔表达式 1 的值为true 执行的代码
}else if{ (布尔表达式 2) {
语句2 //如果布尔表达式 2 的值为true 执行的代码
}else if{ (布尔表达式 3){
语句3 //如果布尔表达式 3 的值为true 执行的代码
}else{
语句4 //如果以上布尔表达式都不为true执形的代码
}**
例:
public class HelloJava{
public static void main (String [] args) {
int x = 30;
if (x==10) {
System.out.print("Value of X is 10");
}else if(x==20) {
System.out.print("Value of X is 20");
}else if(x==30) {
System.out.print("Value of X is 30");
}else{
System.out.print("这是else语句");
}
}
}
运行结果:
2.4嵌套的 if…else语句
使用嵌套的 if…else语句是合法的,也就是说可以在一个if或者else if 语句中使用if或者else if 语句
语法格式:
if(布尔表达式 1){
语句1 // 如果布尔表达式 1 的值为true执形代码
if(布尔表达式 2){
语句2 //如果布尔表达式 2 的值为true执形代码
}
}
例:
public class HelloJava{
public static void main (String [] args) {
int x = 30;
int y = 10;
if( x == 30) {
if(y == 10 ) {
System.out.print("X = 30 and Y = 10");
}
}
}
}
运行结果:
2.5 switch语句
switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支,switch本身只能够支持int、char型,在JDK1.5之后可以使用enum型,在JDK1.7之后可以使用String型
语法格式:
switch(expression){
cass value:
语句
break ;//可选
case value:
语句
break ;//可选
://可以有任意数量的case语句
default ://可选
语句
}
switch语句有以下规则:
1.switch语句中的变量类型可以是byte、short、int或char。从Java SE7开始,switch支持字符串类型。case标签必须为字符串常量或字面量
2.switch语句可以拥有多个case语句,每个case后面跟一个要比较的值和冒号。
3.case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或字面量。
4.当变量的值与case语句的值相等时,case语句之后的语句开始执行,直到break语句出现才会跳出switch语句
5.当遇到break语句时,switch语句终止。程序跳转到switch语句后面的语句执行。case语句不是必须包含break语句。如果没有break语句,程序会继续执行下一条case语句,直到遇到break语句
6.switch语句可以包含一个default分支,该分支必须是switch语句的最后一个分支。default在没有case语句的值和变量值相等的时候执行。default分支不需要break语句。
例:
public class HelloJava{
public static void main (String [] args) {
char grade= 'C';
switch (grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
case 'C':
System.out.println("良好");
break;
case 'D':
System.out.println("及格");
case 'E':
System.out.println("你需要在努力");
break;
default:
System.out.println("未知等级");
}
System.out.println("你的等级是" + grade);
}
}
顺序结构的程序语句只能被执行一次,如果想要使用同样的操作执行多次,就需要使用循环结构。java中有三种主要的循环结构,分别是,while循环do while循环for循环。
3.1while语句
while语句是最基本的循环,只要布尔表达式为true。循环体会一直执行下去
语法格式:
while (布尔表达式){
语句//循环内容
}
例:
public class HelloJava{
public static void main (String [] args) {
int x = 10;
while (x < 20) {
System.out.print("value of x :" + x);
x++;
System.out.print("\n");
}
}
}
运行结果
3.2 do …while语句
对于while语句而言,如果不满足条件,则不能进入循环。do while 循环和while循环相似,不同的是 do while 循环至少会执行一次。
语法格式:
do {
语句
}while(布尔表达式);
例:
public class HelloJava{
public static void main (String [] args) {
int x = 1;
do {
System.out.println("x = " + x);
x++;
} while (x <= 4);
}
}