一次就让你学懂java运算符

运算符相关概念

运算符:首先是它就是一个符号,是什么符号呢,对变量和常量进行操作的符号。
表达式:常量或变量被运算符连起来的式子,当然是连起来要符合java语法的式子
运算符我们会碰到哪些嘞:

算术运算符

+、-、*、/、%(取余) 区别: /获取两个数据相除的商,%获取两个数据相除的余数 例子:6/4=1 ;6%4=2

注意:整数相除只能得到整数,想获得小数就得有浮点数的参与。
System.out.println(6/4); //结果为1 System.out.println(6/4.0); //结果为1.5
(1)字符参与加法运算:字符在计算机中存储所表示的数据值来运算
为什么字符会有数值:ASCII码是美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值
‘a’ 97
‘A’ 65
‘o’ 48

     int a=5;
     char ch='a';
     System.out.println(a+ch); //结果为102

(2)字符串参与加法运算:实质是字符串的拼接,结果一定是字符串,但
System.out.println(10+20+"hello"); //结果:30hello System.out.println("hello"+10+20); //结果:hello1020
拼接也要考虑从左往右的运算,第一个先做了整数的加法,后续又继续了字符串的拼接。第二个先做了字符串的拼接hello10,再继续也是字符串拼接hello1020。

自增自减运算符

++,–
作用:就是自己+1或是-1
怎么用:单独使用一个变量的时候放在变量前或放在变量后面都是可以。

    public static void main(String[] args) {
      int a=10;
      int b=10;
      //a++;
      //b--;
      ++a;
      --b;
        System.out.println("a="+a);//a=11
        System.out.println("b="+b);//b=9                                    
    }

但是参与其他操作时,
++在变量后面,先把变量a值赋给b后再自身加1
++在变量前面,先把变量a自身加1,再赋值给b.

    int a=10;
    int b=a++;
        System.out.println("b="+b);//结果:b=10
int a=10;
      int b=++a;
        System.out.println("b="+b);//结果:b=11

扩展赋值运算符:

基本的赋值运算符=
扩展的赋值运算符+=、-= :把运算符左边的数据和右边的数据进行运算,然后把结果赋值给左边

 int a=10;
     a += 20;//左边值a上一步已被赋值为10
     System.out.println("a="+a);//结果为30

区别:a+=20 与 a=a+20
a+=20等同于a=(a的数据类型)(a+20),扩展的赋值运算符隐含了强制类型转换。

 short a=1;
       a+=4;//a+4 short类型a参与运算首先会提升为int类型,结果也为int类型,但是扩展运算符会将其强制转换为short类型。结果不会报错。
   System.out.println(a);
short a=1;
   a=a+4;//a+4 short类型a参与运算首先会提升为int类型,结果也为int类型,但是a是个short类型,把int类型的值赋给short类型就会报错。
   System.out.println(a);

关系运算符

==,!=,>=,<=
关系运算符操作完成的结果是布尔值。

逻辑运算符

用于连接关系表达式,JAVA中不能写成x<3<6,要写成x>3&&x<6.
&&:逻辑与,有false则false
||:逻辑或,有true则true
!:逻辑非,true则false,false则true
用法:

  int a=1;
  int b=2;
  int c=3;
  System.out.println((a>b)&&(a>c));//false&&false  结果:false
  System.out.println((a<b)||(a>c));//true||false  结果:true
  System.out.println(!(a<b)); //结果为false 

三元运算符

关系表达式?表达式1:表达式2;
执行流程:A:计算关系表达式的值,看结果是true还是false.B:如果是true,表达式1就是结果;如果是false,表达式2就是结果。

        int a = 1;
        int b = 2;
        int c = (a>b)?a:b;
        System.out.println("c:"+c);//因为a>b为false,所以结果为c:2

三元运算符练习题:比较两个整数是否相同

        int a = 2;
        int b = 2;
        boolean c = (a==b)?true:false;
        System.out.println("c:"+c);//结果为true

Scanner键盘录入学习

步骤:
1.导包:import java.util.Scanner;
2.创在这里插入代码片建键盘录入对象: Scanner sc=new Scanner(System.in)
3.获取数据: int i =sc.nextInt();

package homework2;
import java.util.Scanner;
public class demo1 {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);

        System.out.println("请输入第一个整数");
        int b = sc.nextInt();

        System.out.println("请输入第二个整数");
        int a = sc.nextInt();

        int sum=a+b;
        System.out.println(sum);
    }
}

流程控制语句

顺序结构

Created with Raphaël 2.2.0 开始 语句A 语句B 语句C 结束

选择结构(if语句)

if语句格式1

if(关系表达式){
 语句体;
}

Created with Raphaël 2.2.0 开始 关系表达式 语句体 其他语句 yes no

先执行关系表达式的运算,看是true还是false;如果是true就执行语句体,如果是false就不执行语句体。

if语句格式2

if(关系表达式){
  语句体1;
}else{
  语句体2;
}

执行流程:
首先判断关系表达式看结果是 true还是false,true执行语句体1,false执行语句体2.

  import java.util.Scanner;

public class demo1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入a");
        int a=sc.nextInt();
        if(a%2==0){
            System.out.println("a是偶数");
        }else{
            System.out.println("a是奇数");
        }
    }
}

if语句格式3

if(关系表达式1){
语句体1;
}else if(关系表达式2){
  语句体2;
}
else if(关系表达式3){
  语句体3}

……
else{
语句体n+1}

import java.sql.SQLOutput;
import java.util.Scanner;

public class demo1 {
  public static void main(String[] args) {
        System.out.println("请输入数值:");
	Scanner sc=new Scanner(System.in);
	int a=sc.nextInt();
	int b=0;
	if(a<100 && a>0){
   		 b=a;
    	System.out.println("您输入的数绝对值是它本身哦:");
	}else if(a==0){
    	b=0;
	    System.out.println("您输入的数既不是整数也不是负数,但绝对值也是它本身尼");
	}else if(a<0 && a>-100){
	    b=-a;
	    System.out.println("您输入的数绝对值是它的相反数");
	}else{
	    System.out.println("抱歉呢,您输入的数不在我计算范围之内,出错撩");
	}
        System.out.println("b="+b);
    }
}

if语句比较两个最大值

import java.util.Scanner;

public class demo2 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in) ;
        System.out.println("请输入第一个整数");
        int a=sc.nextInt();
        System.out.println("请输入第二个整数");
        int b=sc.nextInt();
        int max;
        if(a>b){
           max=a;
        }
        else{
            max=b;
        }
        System.out.println("max="+max);
    }
}

测试数据是否严谨,应考虑到以下情况:
1.正确数据
2.边界数据
3.错误数据

if语句成绩对应级别

import java.util.Scanner;

public class demo2 {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的成绩");
        int i=sc.nextInt();
        if(i>100||i<0){
            System.out.println("输入有误");
        }else if(i>=80 && i<=100){
            System.out.println("你很优秀欸");
        }else if(i<80 && i>=60){
            System.out.println("很不错嘛");
        }else if(i<60){
            System.out.println("还需努力哦同学");
        }
    }
}

选择结构(switch语句)

句式:
表达式可以是byte,short,int,char,DK5以后可以是枚举,JDK7以后可以是字符串。
case后的值是用来与表达式的值进行匹配的。
break表示终端。
default是当所有的值和表达式不匹配时就执行default对应的内容。
步骤:
计算表达式的值,再那这个值与case后面的值进行比对,有匹配就执行对应的语句,遇break中断。若所有的case均不匹配则就执行default语句。

switch(表达式){
case 值1:
 语句体1;
break;
case 值2:
 语句体2;
 break;
case 值3:
 语句体3;
 break;
……
default:
 语句体n+1;
 break;
 }

import java.util.Scanner;

public class demo2 {
    public static void main(String[] args) {
  Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个整数1-12");
        int month=sc.nextInt();
        switch(month){
            case 1:
                System.out.println("1月");
                break;
            case 2:
                System.out.println("2月");
                break;
            case 3:
                System.out.println("3月");
                break;
            case 4:
                System.out.println("4月");
                break;
            case 5:
                System.out.println("5月");
                break;
            case 6:
                System.out.println("6月");
                break;
            case 7:
                System.out.println("7月");
                break;
            case 8:
                System.out.println("8月");
                break;
            case 9:
                System.out.println("9月");
                break;
            case 10:
                System.out.println("10月");
                break;
            case 11:
                System.out.println("11月");
                break;
            case 12:
                System.out.println("12月");
                break;
            default:
                System.out.println("你输入的数据有误");
                        break;
        }
    }
}

作业

训练案例1

键盘录入一个int类型的数据,使用三元运算符判断这个数是奇数还是偶数

import java.util.Scanner;
public class zuoye1 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入数值:");
        int i=sc.nextInt();
        String c= ((i%2)==0)?"偶数":"奇数";
        System.out.println("数值是"+c);
    }
}

训练案例2

定义一个int类型的变量,初始化值为123,求这个数的个位,十位,百位分别是多少,输出结果:123的个位是3,十位是2,百位是1

import java.util.Scanner;
public class zuoye2 {
    public static void main(String[] args) {
        int i = 123;
        int b=0;
        Scanner sc = new Scanner(System.in);
        System.out.println("你想要123的哪个位数呢,请输入个位数,十位数或百位数,有惊喜哦");
        String a = sc.nextLine();
        switch(a){
            case "个位数":
                 b=i%10;
                break;
            case "十位数":
                 b=(i/10)%10;
                break;
            case "百位数":
                 b=i/100;
                break;
            default:
                System.out.println("输入有误");
        }
        System.out.println(a+b);
    }
}

训练案例3

键盘录入一个长方形的长和宽(长和宽为int类型),计算长方形的面积和周长

import java.util.Scanner;

public class 作业3 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入长方形的长:");
        int L=sc.nextInt();
        System.out.println("请输入长方形的宽:");
        int W=sc.nextInt();
        System.out.println("___________________________");
        int S=L*W;
        System.out.println("长方形的面积:"+S);
        System.out.println("___________________________");
        int C=2*(L+W);
        System.out.println("长方形的面积:"+C);
    }
}

拓展训练案例1

小明左、右手中分别拿两张纸牌(比如:黑桃10和红桃8,数字10和8可通过键盘录入),要求编写代码交换小明手中的牌.

import java.util.Scanner;

public class zuoye4 {
    public static void main(String[] args) {
        int left=0;
        int right=0;
        int temp=0;
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入小明左手的牌:");
        left=sc.nextInt();
        System.out.println("请输入小明右手的牌:");
        right=sc.nextInt();
        System.out.println("互换前小明手中的纸牌");
        System.out.println("左手的纸牌:"+left);
        System.out.println("右手的纸牌:"+right);
        System.out.println("_____________________________");
        System.out.println("互换后小明手中的纸牌");
        temp=left;
        left=right;
        right=temp;
        System.out.println("左手的纸牌:"+left);
        System.out.println("右手的纸牌:"+right);
    }
}

拓展训练案例2

1.键盘录入学员张浩的3门课程(Java、SQL、Web)的成绩
2.编写程序实现:
(1)Java课程和SQL课程的分数值差
(2)3门课程的平均分

import java.util.Scanner;

public class zuoye5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入java成绩:");
        int java = sc.nextInt();
        System.out.println("请输入SQL成绩:");
        int SQL = sc.nextInt();
        System.out.println("请输入Web成绩;");
        int Web = sc.nextInt();
        System.out.println("java SQL Web");
        System.out.println(java+"  "+SQL+"  "+Web);
        int sub=java-SQL;
        double ave=(java+SQL+Web)/3;
        System.out.println("Java和SQL的成绩差:"+sub);
        System.out.println("三门课的平均分是:"+ave);
    }
}
	/*结果
	请输入java成绩:
	100
	请输入SQL成绩:
	60
	请输入Web成绩;
	80
	java SQL Web
	100  60  80
	Java和SQL的成绩差:40
	三门课的平均分是:80.0*/

拓展训练案例3

商场推出幸运抽奖活动,抽奖规则如下:
(1)键盘录入四位数字(1000-9999的数字),作为顾客的会员卡号
(2)该会员卡号(键盘录入的四位数字)各位数字之和大于20,则为幸运客户

import java.util.Scanner;
public class zuoye6 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入4位会员卡号:");
        int cardID=sc.nextInt();
        int a=cardID/1000;
        int b=(cardID/100)%10;
        int c=(cardID/10)%10;
        int d=(cardID%10);
        int sum=a+b+c+d;
        String y=(sum>20)?"是幸运客户":"不是幸运客户";
        System.out.println("会员卡号"+cardID+"各位之和:"+sum);
        System.out.println("会员卡号"+cardID+y);
    }
}

拓展训练案例4

根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为 3000元, 应涨工资 5000元,涨后工资 8000元".

import java.util.Scanner;

public class zuoye7 {
    public static void main(String[] args) {
        int y=0;
        int a=0;
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入工龄");
        int workAge=sc.nextInt();
        System.out.println("请输入基本工资");
        int salary=sc.nextInt();
        if (workAge>=0 && workAge<1){
            a=200;
        }else if(workAge>=1 && workAge<3){
            a=500;
        }else if(workAge>=3 && workAge<5){
            a=1000;
        }else if(workAge>=5 && workAge<10){
            a=2500;
        }else if(workAge>=10 && workAge<15){
            a=5000;
        }
        y=salary+a;
        System.out.println("您目前工作了"+workAge+"年,基本工资为"+salary+"元,应涨工资"+a+"元,涨后工资"+y);
    }
}
/*结果:
请输入工龄
10
请输入基本工资
3000
您目前工作了10年,基本工资为3000元,应涨工资5000元,涨后工资8000*/

拓展训练案例5

模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果

import java.util.Scanner;

public class zuoye8 {
    public static void main(String[] args) {
        int y = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数据:");
        int a = sc.nextInt();
        System.out.println("请输入第二个数据:");
        int b = sc.nextInt();
        System.out.println("请输入您要进行的运算(0:表示加法运算,1:表示减法运算,2:表示乘法运算,3:表示除法运算):");
        int c = sc.nextInt();
        switch (c) {
            case 0:
                y = a + b;
                System.out.println(a + "+" + b + "=" + y);
                break;
            case 1:
                y = a - b;
                System.out.println(a + "-" + b + "=" + y);
                break;
            case 2:
                y = a * b;
                System.out.println(a + "*" + b + "=" + y);
                break;
            case 3:
                y = a / b;
                System.out.println(a + "/" + b + "=" + y);
                break;
        }
    }
}

拓展训练案例6

键盘录入月份,输出对应的季节

import java.util.Scanner;

public class zuoye9 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个整数1-12");
        int month=sc.nextInt();
        switch(month){
            case 1:
                System.out.println("冬季");
                break;
            case 2:
                System.out.println("冬季");
                break;
            case 3:
                System.out.println("春季");
                break;
            case 4:
                System.out.println("春季");
                break;
            case 5:
                System.out.println("春季");
                break;
            case 6:
                System.out.println("夏季");
                break;
            case 7:
                System.out.println("夏季");
                break;
            case 8:
                System.out.println("8夏季");
                break;
            case 9:
                System.out.println("秋季");
                break;
            case 10:
                System.out.println("秋季");
                break;
            case 11:
                System.out.println("秋季");
                break;
            case 12:
                System.out.println("秋季");
                break;
            default:
                System.out.println("你输入的数据有误");
                break;
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值