java基础(二)基本数据类型、if...else、switch

目录

1、java8种基本数据类型

2、if..else

3、Switch

4、案例练习

5、思考题


1、java8种基本数据类型

int          4B(4字节)    32b(32位) 所有的字面值是整数的,类型默认是int

char       2B  2字节        16b

short      2B  2字节        16b

long       8B  8字节         64b

float       4B  4字节         32b

double   8B  8字节         64b         java程序里面所有字面值是小数的,默认类型都是double

byte       1B  1字节         8b

boolean 1B  1字节         8b

类型转换:
       隐式类型转换:指编译器自己帮我们转换了
             如果将一个小类型的数据赋值给一个大数据类型数据时,编译器就会自动               帮我们转换
             所占字节数少的就是小类型,所占字节数多的就是大字节
             byte->char->short->itn->long->double

       显式类型转换(强制类型转换):将某个数据转换成指定类型(类型)数据
                   存在数据丢失的危险

        //显式转换
        int pi  = (int)3.12;
        System.out.println(pi);
        //隐式类型转换:
        double d = 3; //不会造成数据丢失的,编译器会自动的进行转换,将3转换成double的3.0,将3.0赋值给d
        byte b = 1;
        int c = b;//先读取b值是byte类型,需要自动的将byte类型的1转换成int类型的1
        double result = 1+2*3.0; //在一个表达式里面,如果出现类型不一致,编译器会自动将小数据类型转换成大数据类型

2、if..else

条件运算符
&&   与     条件1 && 条件2   当两个条件同时满足时,整个表达式成立 true
||      或     条件1 || 条件2      当一个条件成立,整个表达式成立 true
!    非     !条件         条件不成立,表达式就成立;条件成立,表达式就不成立

练习:判断一个年份是否是闰年?
如果一个年份能被四整除但是不能被100整除,那么这个年份就是闰年;或者能被400整除是闰年 

        int year = 2013;
        if ((year%4==0 && year%100!=0) || year%400==0){
            System.out.println(year+":这是闰年");
        }else {
            System.out.println(year+":这是平年");
        }
        
        //运行结果是:  2013:这是平年

练习:输入一个数字[0-100]之间,判断这个分数对应的等级
     数字:[90,100]         打印A
                [80,90)          打印B
                [70,80)          打印C
                [60,70)          打印D
                [0,60)            打印E

        //java中输入数据
        //创建一个读取器、扫描器,用来从控制台读取数据
        Scanner sc = new Scanner(System.in);

        //利用扫描器从控制台读取一个整数,然后将这个数字赋值给grade
        System.out.println("请输入一个分数[0,100]:");
        int grade = sc.nextInt();
        //方式一:
        if (90 < grade && grade <= 100){
            System.out.println("A");
        }else if (80 <= grade && grade < 90) {
            System.out.println("B");
        }else if (70 <= grade && grade < 80) {
            System.out.println("C");
        }else if (60 <= grade && grade < 70) {
            System.out.println("D");
        }else if (0 <= grade && grade < 60) {
            System.out.println("E");
        }

        //方式二:
        if (90 < grade && grade <= 100){
            System.out.println("A");
        }else if (80 <= grade) {
            System.out.println("B");
        }else if (70 <= grade) {
            System.out.println("C");
        }else if (60 <= grade) {
            System.out.println("D");
        }else if (0 <= grade) {
            System.out.println("E");
        }

3、Switch

   switch(变量){
      case 值1:分支1要执行的代码;break;
      case 值2:分支2要执行的代码;break;
      ....
      case 值n:分支n要执行的代码;break;
      default:除开以上情况以外的执行这里的代码
  }
 
  switch:选择
  case:分支
  break:打断
  default:默认
  执行逻辑:用变量的值与下面每一个case后面的值进行比较,如果一样就执行该case后面      的代码
  如果所有的case后面的值都与变量不一样,就执行default后面的代码

案例:要求用户输入一个数字[1,7],判断那一天限哪些号
输入       输出
1            1,6
2            2,7
3            3,8
4            4,9
5            5,0
6/7       不限号

        //1 创建扫描器
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字[1,7]");
        int day = sc.nextInt();
        switch (day){
            case 1: System.out.println("限号:1,6");break;
            case 2: System.out.println("限号:2,7");break;
            case 3: System.out.println("限号:3,8");break;
            case 4: System.out.println("限号:4,9");break;
            case 5: System.out.println("限号:5,0");break;
            default:System.out.println("周末不限号");

        }
        //注意:分支不能出现重复的

4、案例练习

1、交换两个变量的值:例如 int a = 10,b = 20, 交换值 a = 20,b = 10

        // 方式一:利用第三个变量进行值得交换
        int a = 10;
        int b = 20;
        int c = a;   //c:10  a:10
        a = b;       //a:20  b:20
        b = c;       //b:10  C:10
        System.out.println("a = "+a+";b = "+b);

        //方式二:不用第三个变量实现两个变量值得交换
        int n = 10;
        int m = 20;
        n = n + m;   //n:30  m:20
        m = n - m;   //m:10  n:30
        n = n - m;   //n:20  m:10
        System.out.println("n = "+n+";m = "+m);

        //方式三:
        int i = 10;     //i:   01010
        int j = 20;     //j:   10100
        i = i ^ j;      //i:   11110
        j = i ^ j;      //j:   01010     10
        i = i ^ j;      //i:   10100     20
        System.out.println("i = "+i+";j = "+j);

2、要求根据一个年份和一个月份,判断这个月有多少天?(考虑闰年情况)

方式一:
利用switch来实现
思路:不管闰年还是平年都按照平年来计算,然后当月份是2月份的时候在判断闰年
           每一个case后面都可以加上{},在里面编写多条代码

         int year = 2012;
         int month = 4;   //考虑闰年
         switch (month){
            case 1: System.out.println(31);break;
            case 2: {
                //判断闰年还是平年
                if ((year%4 == 0 && year%100 != 0) || year%400 == 0){
                    System.out.println(29);
                }else{
                    System.out.println(28);
                }
            };break;
            case 3: System.out.println(31);break;
            case 4: System.out.println(30);break;
            case 5: System.out.println(31);break;
            case 6: System.out.println(30);break;
            case 7: System.out.println(31);break;
            case 8: System.out.println(31);break;
            case 9: System.out.println(30);break;
            case 10: System.out.println(31);break;
            case 11: System.out.println(30);break;
            case 12: System.out.println(31);break;
        }

方式二:
        1.每一个case不一定必须按照顺序罗列
        2.break  打断、中断:如果匹配到某个case,程序会执行它后面的代码
           执行完成后如果有break那么就不再执行其他case,如果没有break它会继续执行
           下一个case后面的代码,知道遇到一个break或者整个switch结束才会停止

        //如果有分支要执行相同的代码,前几个分支可以不用写代码、break
        //只需要在最后一个分支写上共同的代码、break
        switch (month){
            case 2: {
                //判断闰年还是平年
                if ((year%4 == 0 && year%100 != 0) || year%400 == 0){
                    System.out.println(29);
                }else{
                    System.out.println(28);
                }
            };break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(30);break;
            default:
                System.out.println(31);

        }

3、 编写程序模拟ATM机操作

/**
 * 编写程序模拟ATM机操作
 * 1.输入密码,验证密码
 * 2.显示主界面
 * 3.选择相应的操作,进行下一步操作
 * 4.退卡
 */
public class ATM_Test {
    public static void main(String[] args) {
        //余额
        int money = 1000000;
        Scanner sc = new Scanner(System.in);
        //输入密码
        System.out.println("please input your password");
        int pwd = sc.nextInt();//读取到密码
        //判定密码是否正确
        if (pwd==123456){
            //验证成功
            System.out.println("欢迎使用");
            //显示主页面
            System.out.println("[1] 取钱");
            System.out.println("[2] 存钱");
            System.out.println("[3] 查询");
            System.out.println("[0] 退卡");
            System.out.println("请选择您的操作");
            int choose = sc.nextInt();
            switch (choose){
                case 1: {
                    System.out.println("请输入取款金额");
                    int getMoney = sc.nextInt();
                        if (getMoney>money){
                            System.out.println("余额不足");
                        }else {
                            System.out.println("请取走你的钞票");
                            money-=getMoney;
                            System.out.println("余额为:"+money);
                    }
                }
                    break;
                case 2: {
                    System.out.println("请输入存款金额");
                    int getMoney = sc.nextInt();
                    money += getMoney;
                    System.out.println("余额为:"+money);
                }
                    break;
                case 3: {
                    System.out.println("查询余额");
                }
                    break;
                case 0:
                    System.out.println("退卡");
                    break;
                default:
                    System.out.println("你的操作有误");
            }
        }else {
            //验证失败
            System.out.println("密码错误");
        }
    }
}

5、思考题

现有一堆砝码、重量任意(整数:克),要求使用最少的砝码能将[1,100]之前所有的重量都能称出来

最优:没有重复重量的代码、数量尽量少

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值