Java 学习手记(三)运算符、表达式和语句

前言

本章所有知识点都和 C 语言大致相同,语句中需要稍注意新知识。在学习过程当中主要注重对概念的总结性复习。

基本知识

一、运算符和表达式

1.算术运算符和算术表达式

包括:加减运算符乘除运算符求余运算符

2.自增、自减运算符

++、-- 是单目运算符,放在操作元前后均可。

(1)++x (--x)表示在使用 x 之前,先使 x 的值增(减) 1

(2)x++(x--)表示在使用 x 之后,使 x 的值增(减)1

例:若x=5,对于 y=++x,y=6;对于 y=x++,y=5。

3.算数混合运算的精度

Java 在计算算术表达式的值时,表达式中精度最高数据对应精度进行运算。如:

表达式 5.0/2+10 的结果 12.5 是 double 型数据。

表达式 5.0F/2+10 的结果是 12.5 是 float 型精度。

4.关系运算符与关系表达式

关系运算符的运算结果是 boolean 型。运算符对应的关系成立时,运算结果是 true,否则是 false。(与 C 语言类似)

5.逻辑运算符与逻辑表达式(与 C 语言类似)

双目运算符:&&、||,分别表示逻辑与、逻辑或(也称作短路逻辑运算符);

单目运算符:!,表示逻辑非。

6.赋值运算符与赋值表达式

= 是双目运算符,左边的操作元必须为变量不能是常量或表达式

注意:不能将赋值运算符“=”与等号运算符“==”混淆

7.位运算符

四种运算:“按位与”--“&”、“按位或”--"|"、“按位非”--"~"、“按位异或”--"^"

例:

判断闰年的语句:

year%4==0&&year%100!=0||year%400=0

8. instanceof 运算符

双目运算符,左边操作元是一个对象,右边是一个类

当左边的对象是右边的类创建的对象时,该运算符运算结果是 true,否则是 false。

二、语句概述

和 C 语言一样,分号是语句不可缺少的部分。Java 中的语句可以分为以下五类:

1.方法调用语句,如:

System.out.println(" Hello");

2.表达式语句。赋值语句就是最典型的表达式语句。

3.复合语句。可以用{ }把一些语句括起来构成复合语句。如:

{ z=123+x;
System.out.println("How are you");
}

4.控制语句

5.package 语句和 import 语句。这两者与类、对象有关。

三、控制语句

Java 语言的控制语句有两类,即条件语句和 switch 开关语句。

1.条件控制语句

条件语句可以分为3种。

(1)if 语句

一般形式如下:

if (表达式)
{  若干语句
  }

if 后( )内表达式的值必须是 boolean 类型。

①若表达式值为 true,则执行紧跟着的复合语句

②若为 false ,则执行程序中 if 语句后面的其他语句

例:将变量 a、b、c 的数值按大小顺序进行互换。

public class Example3_1
{ public static void main(String args[])
{   int a=9,b=5,c=7,t;
    if(a>b)
    {
      t=a;a=b;b=t;
    }
    if(a>c)
    {
      t=a;a=c;c=t;
    }
    if(b>c)
    {
      t=b;b=c;c=t;
    }
  System.out.println("a="+a+",b="+b+",c="+c);
 }
}

(2)if-else 语句

if=else 语句的一般形式如下:

if(表达式)
{   若干语句
}
else
{  若干语句
}

同样,if 后面( )内表达式的值必须是 boolean 型的。若该值为 true ,则执行紧跟着的复合语句;若该值为 false,则执行 else 后面的复合语句。

应用举例:

public class Example3_2
{  public static void main(String args[ ])
     {  int math=65,english=85;
        if (math>60)
        {
           System.out.println("数学及格了");
        }
        else 
        {  System.out.println("数学不及格");
        }
        if (english>90)
        {  System.out.println("英语是优");
        }
        else
        {
           System.out.println("英语不是优");
        }
    System.out.println("我在学习控制语句");
}

(3)if 语句的扩充形式

if (表达式1)
   语句
else if(表达式2)
   语句
……
else if(表达式n)
   语句
else 
   语句

2.switch 开关语句

一般格式定义如下(其中 break 语句是可选的):

switch (表达式)
{
   case 常量1:
        若干个语句
        break;
   case 常量2:
        若干个语句
        break;
   ……
   case 常量n
        若干个语句
        break;
   default:
        若干语句
}

switch 语句首先计算表达式的值。

若表达式的值和某个 case 后面的常量值相等,就执行该 case 中的若干个语句直到碰到 break 语句为止。

若某个 case 中没有使用 break 语句,一旦表达式的值和该 case 后面的常量值相等,程序不仅执行该 case 中的若干个语句,且将继续执行后继的 case中的若干个语句直到碰到 break 语句为止。

注意:

(1)switch 语句中表达式的值必须是 int 型、char 型或枚举类型;

(2)常量值 1 到常量值 n 也必须是 int 型、char 型或枚举类型常量,而且要互不相同。

应用举例:

public class Example3_3
{  public static void main(String args[])
   {   int x=96,y=1;
       switch(x+y)
       {
             case 1:
               System.out.println(x+y);
               break;
             case 'a':
               System.out.println(x+y);
               break;
             case 10:
               System.out.println(x+y);
               break;
           default: System.out.println("没有般配的"+(x+y));
       }
   }
}

四、循环语句

1. for 循环

for 语句由关键字 for、括号中用分号分隔的 3 个表达式,以及一个复合语句组成。其中,第二表达式必须是一个值为 boolean 型数据的表达式。复合语句则称为循环体

举例:计算8+88+888+8888……的前 12 项和。

public class Example3_4
{  public static void main(String args[ ])
   {   long sum=0,a=8,item=a,n=12,i=1;
       for(i=1;i<=n;i++)
       {
          sum=sum+item;
          item=item*10+a;
       }
   System.out.println(sum); 
   }
}

2.while 循环

一般格式:

while(表达式)
{
   若干语句
}

3.do-while 循环

一般格式:

do
    {
若干语句
    }
while (表达式);

另:

do-while 循环和 while 循环的区别:do-while 的循环体至少被执行一次。

举例:用 while 语句计算 1+1/2!+1/3!+1/4!+……的前 20 项和。

class Example3_5
{  public static void main(String args[ ])
   {  double sum=0,a=1;
      int i=1;
   while(i<=20)
   {  sum=sum+a;  
      i=i+1;
      a=a*(1.0/i);
   }
   System.out.println("sum="+sum);
   }
}

五、break 和 continue 语句

break 和 continue 语句是用关键字 break 或 continue 加上分号构成的语句。

1.如果在某次循环中执行了 break 语句,那么整个循环语句结束;

2.如果在某次循环中执行了 continue 语句,那么本次循环结束,即不再执行循环体中 continue 语句后面的语句,而转入下一次循环。

class Example3_6
{  public static void main(String args[ ])
   {   int sum=0,i,j;
       for(i=1;i<=10;i++)
        {
          if(i%2==0)                        \\计算1+3+5+7+9
            continue;
          sum=sum+i;
        }
   System.out.println("sum="+sum);
   for(j=2;j<50;j++)                         \\求50以内的素数
   {  for(i=2;i<=j/2;i++)
      {  if(j%i==0)
         break;
      }
   if(i>j/2)
  {  System.out.println(""+j+"是素数");
            }
         }
   }
}

六、数组与 for 语句

JDK 1.5 对 for 语句进行了改进,以便更好地遍历数组。格式如下:

for(声明循环变量:数组的名字)       \\“声明循环变量”必须是变量声明,不能使用已经声明过的变量
{
  ……
}

其中,声明的循环变量的类型必须和数组的类型相同

举例:

public class Example3_7
{  public static void main(String args[ ])
   {  int a[]={1,2,3,4};
      char b[]={'a','b','c','d'};
      for (int i:a)                     \\循环变量i依次取数组a的每一个元素的值
      { 
           System.out.println(i);
      }
      for (char ch:b)                   \\循环变量ch依次取数组b的每一个元素的值
      {
           System.out.println(ch);
      }
   }
}

例中第一个 for 语句不可以分开写成如下形式:

int i=0;
for(i:a)
{  System.out.println(i);
}

七、枚举类型与 for、switch 语句

对以下枚举类型:

enum WeekDay
{  sun,mon,tue,wed.
   thu,fir,sat
}

1.声明了一个枚举类型后,就可以用该枚举类型声明一个枚举变量,该枚举变量只能取枚举类型中的常量。

①通过使用枚举名和“.”运算符获得枚举类型中的常量,如:

WeekDay day=WeekDay.mon;

②枚举类型可以用如下形式返回一个数组:

枚举类型的名字.values();

该数组元素的值和该枚举类型中的常量依次对应,如:

WeekDay a[ ]=WeekDay.values();

那么,a[0]到a[6]的值依次为sun、mon、tue、wed、thu、fri、sat。

2.枚举类型与 for 语句

举例:从红、蓝、绿、黄、黑颜色中取出3种颜色排列的各种排法。

enum Color
 {  red,blue,green,yellow,black
 }
public class Example3_9
{  public static void main(String args[ ])
   {
     for(Color a:Color.values())
      for(Color b:Color.values())
       for(Color c:Color.values())
       { if(a!=b&&a!=c&&b!=c)
           System.out.println(a+","+b+","+c);
       }
   }
}

3.枚举类型与 switch 语句

举例:

enum Fruit
{  苹果,梨,香蕉,西瓜,芒果
}
public class Example
{ public static void main(String args[ ])
  { double price=0;
    boolean show=false;
    for(Fruit fruit:Fruit.values())
    {  switch(fruit)
       { case 苹果:price=1.5
                   show=true;
                   break;
         case 芒果:price=6.8
                   show=true;
                   break;
         case 香蕉:price=2.8
                   show=true;
                   break;
         default:show=false;
       }
      if(show)
        System.out.println(fruit+"500克的价格:"+price+"元");
    }
  }
}

八、小结

1.Java 提供了丰富的运算符;

2.Java 语言常用的控制语句、循环语句与 C 语言的很类似;

3.Java 改进了对数组的循环。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值