Java第二周第一天

学习进程

一,复习

java    源文件  --> 程序员
    javac 文件名 --> 编译 
.class 字节码文件 --> 机器
    java 类名 --> 执行
    JVM(解释器) --> 汇编语言
公开类的类名必须与文件名一致
​
​
编译型(不能跨平台)              解释型(跨平台)    html/js
可执行文件.exe                   解释器翻译(渲染)
有符号数字:
    最高位是符号位
八大类型的取值范围
byte(字节)        1字节=8位  -128~127
short(短整型)  2字节=16位 -32768~32767
char(字符型)       2字节=16位 0~65535
                使用单引号包裹'', 使用unicode+16进制的数字 \uXXXX, 本质是数字
int(整型)     4字节=32位 -2147483648~2147483647
long(长整型)       8字节=64位 -2^63~2^63-1
float(单精度浮点)4字节=32位
double(双精度) 8字节=64位
boolean(布尔类型) JVM决定     true/false
变量的命名规则和规范
可以包含数字,字母,下划线,美元符
        不能以数字开头
        不能是关键字保留字
        不能是特殊字面量常量true, false, null
​
规范:
变量(方法名) --> 骆驼命名法(驼峰命法)Camel Case 第一个单词全小写,后续单词首字母大写
                studentName
类--> 帕斯卡命名法(大驼峰) Pascal Case 首字母大写
                StudentName
​
​
​

练习

//导包
import java.util.Scanner;
​
public class Test03{
    public static void main(String[] args){
    //创建扫描器对象
    Scanner sc = new Scanner(System.in);
    //输入姓名
    System.out.println("请输入姓名:");
    String name = sc.next();
    //输入年龄
    System.out.println("请输入年龄:");
    int age = sc.nextInt();
    //输入性别
    System.out.println("请输入性别:");
    char gender = sc.next().charAt(0);
    //打印姓名年龄性别
    System.out.println("姓名\t年龄\t性别");
    System.out.println(name + "\t" + age + "\t" + gender);
    }
}

二,运算符

1.算术运算符

1.1一元运算符

++  自加1
--  自减1
​
前置: 先计算,再使用
后置: 先使用,再计算
​

1.2二元运算符

+,-,*,/,%(模,取余数)

2.赋值运算符

=,+=,-=,*=,/=,%=

short num = 0;
            num += 5;  // num = (short)(num + 5);
​

3.关系运算符

关系运算:结果是boolean ==,!=,>,>=,<,<=

4.逻辑运算符

逻辑运算:表达式和结果是boolean ! 逻辑非 && 逻辑与(短路) --> 左右两边同时为true,整个表达式的结果true || 逻辑或(短路) --> 左右两边只要有任意一边为true,整个表达式的结果true

    逻辑与短路:  false && 短路
    逻辑或短路:  true || 短路

5.位运算符

    >>:     向右位移(缩小)
    >>>:    带符号向右位移
    <<:     向左位移(放大)
    ~:      按位取反
    &:      按位与
    |:      按位或
    ^:      按位异或(相同为0,不同为1)

演示代码片段:

//import java.util.Scanner;
    /**
    演示算数运算符
    */
public class Demo1 {
    public static void main(String args[]){
        //演示+号运算
        String str = "10";
        int aa = 5;
        //                        "1510205"
            System.out.println(aa + 10 + str + 20 + aa);
        
        
            //自增和自减
            int num = 10;
            //自增
            num++; // num = num + 1;
            System.out.println(num);
            //演示前置与后置的区别
            //后置: 先使用,再自增
            //前置: 先自增,再使用
            //num = 11
            int result = num++ + num + ++num + num;
            
            System.out.println(result+":" + num);//49:13
                
            //演示模运算
            num = 10;
            result = num % 3; // 10 / 3 = 3..1
            System.out.println(result);//49:13
            
            //演示复合赋值运算符
            num = 10;
            num += 5; // num = (int)(num + 5);
            System.out.println(num);//15
            
            short s1 = 10;
            short s2 = 20;
            short s3 = (short)(s1 + s2);//寄存器int
            System.out.println(s3);//30
            
            s1 = 10;
            //s1 = (short)(s1 + 5;)
            s1 += 5;
            System.out.println(s1);//15
            
            float a = 12.5F;
            double b = a + 1.0;
            
            //演示关系运算符
            s1 = 10;
            s2 = 20;
            boolean flag = s1 == s2;
            System.out.println(flag);//false
            
            Scanner sc = new Scanner(System.in);
            //用户输入数字,判断数字是否是0-10的区间
            System.out.println("请输入0-10的数字");//false
            num = 5 * 2 << 1;
            //55
            //      true           false
            flag = num >= 0 &&  num <= 10;
            System.out.println(flag);//input=55  --> output=false
            
            //
            num = 10;
            //&&和||会发生逻辑短路
            //      false              短路
            flag = num > 10 && ++num > 10;
            //         true           短路
            flag = num > 0 || ++num > 10;
            System.out.println(flag + ":" + num);//flag = true, num = 10
            
            //演示位运算符
            num = -4;
            //   0101
            //   0010
            result = num >>> 1;
            System.out.println("result = " + result);//
            
            num = 5;
            //0101
            //1010
        //  result = num * 2;
        //  result = num << 1;
            System.out.println("result = " + (num << 1));//10
            
            //按位取反
            num = 5;
            // 101
            // 010
            System.out.println("result = " + ~num);//-6
            
            //演示按位与
            num = 5;
            int num1 = 3;
            //  101
            //  011
            //&-----
            //   001
            result = num & num1;
            System.out.println("result = " + result);//1
                
            //演示按位或
            num = 5;
            num1 = 3;
            //  101
            //  011
            // |-----
            //  111   1000-1
            result = num | num1;
            System.out.println("result = " + result);//7
            
            num = 0;
            num1 = 3;
            //按位操作不会短路
            //   000
            //   011
            //&----
            //   000
            result = num & ++num1;
            System.out.println("result = " + result  + ", num1 = "+ num1);//
            
            //演示按位异或: 相同为0,不同为1
            num = 5;
            num1 = 3;
            //  101
            //  011
            //^----
            //  110  ==> 6
            result = num << num1;
            System.out.println("result = " + result );//6
                
            num = -16_1061_2736;
            num = num << 1;
            System.out.println("num = " + num );//
            
    }
}
​
​

运算符优先级: . > () > 单目 > 算术 > 关系 > 逻辑 > 赋值

随机数算法: (int)(Math.random() * (max - min + 1) + min);

三,分支结构

1.if语句

if(条件){
    逻辑体;
}
​
​
if(条件){
    逻辑体1;
}else{
    逻辑体2;
}
​
​
if(条件1){
    逻辑体1;
}else if(条件2){
        逻辑体2;
      }else{
        逻辑体3;
       }

2.三目运算符

语法:变量 = 逻辑表达式 ? 结果1 : 结果2;

3.switch语句

变量的类型可以是: byte,short,char,int,String,枚举

语法:

switch(变量){ case 常量1: break; //如果没有break将贯穿执行 case 常量2: break; default: //用来表示else的逻辑 break; }

课后练习

1.习题一:幸运抽奖

需求:随机生成一个4位数字,分解并计算出各位数之和,如果大于24则输出中奖信息 要点: 随机数生成可使用Math.random(),该方法能得到一个0到1(不包含1)之间的浮点数 如生成一个0到9(包含9)之间的数组 int num = (int)(Math.random() * 10); 要想生成任意区间的数字,参考公式为: int rand = (int)(Math.random() * (max - min + 1) + min); 其中min为最小值,max为最大值 分解出各位数算法: 假设 num = 9527 个位: num / 1 % 10 十位: num / 10 % 10 百位: num / 100 % 10 千位: num / 1000 % 10

/**
   随机生成一个4位数,分解并计算出各位数字之和
   */
​
​
public class Test02{
    public static void main(String[] args){
        //生成一个四位数1000~9999
        int max = 9999, min = 1000;
        int rand = (int)(Math.random()*(max-min+1)+1);
        System.out.println("生成一个随机的四位数:" + rand);
        //分解各位数
        int ge = rand % 10;
        int shi = rand / 10 % 10;
        int bai = rand / 100 % 10;
        int qian = rand / 1000 % 10;
        //计算各位数之和
        int sum = ge + shi + bai +qian;
        System.out.println(ge + "+" + shi + "+" + bai + "+" + qian + "=" + sum);
        //如果大于24则输出中奖信息
        if (sum > 24)
        {
            System.out.println("恭喜你中奖了" );
        }   
    }
}

2.习题二:最大日期判断

需求:控制台接收用户输入年份和月份,计算并打印出该月最大天数为多少 要点: 使用if和switch结构计算 闰年条件: 1.年份能被4整除,不能被100整除 2.年份能被400整除

/*
    需求:控制台接收用户输入年份和月份,计算并打印出该月最大天数为多少
    
    要点:使用if和switch结构计算
    闰年条件:
        1.年份能被4整除,不能被100整除
        2.年份能被400整除
​
​
​
  */
import java.util.Scanner; 
​
public class Test03{
    public static void main(String[] args){
​
      Scanner sc = new Scanner(System.in);
      //请输入年份
      System.out.println("请输入年份:" );
      int year = sc.nextInt();
      //请输入月份
      System.out.println("请输入月份:" );
      int month = sc.nextInt();
      //计算该月最大天数
      if (month == 4 || month == 6 || month == 9 || month == 11)
      {
            System.out.println("该月最大天数为:30天");
      }else if (month == 2){
          if(year % 4 == 0 && year % 100 != 0 || year % 400 ==0){
            System.out.println("该月最大天数为:29天");
          }else {
              System.out.println("该月最大天数为:28天" );
          }
      }else{
         System.out.println("该月最大天数为:31天");
      }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值