基础语法

计算机中数据的最小单位

  • 计算机的最小组成单位是: 使用8个二进制位为一组,来保存数据,称之为一个字节(byte,简称B).
  • 其中每个二进制位称之为一位(bit,简称b),1 byte = 8 bit 简写1B = 8b

进制转换

  • 十进制转二进制:除二取余

十进制转二进制

  • 二进制转十进制:从右到左用二进制的每个数去乘以2的相应次方

十进制转二进制

八进制、十六进制介绍

  • 为了便于观察和表示二进制,推出了八进制和十六进制
  • 八进制:每3位二进制作为一个单元,最小数是0,最大位是7,共8个数字

  • 十六进制:每4位二进制作为一个单元,最小数是0,最大数是15,共16个数字,依次用0~9 A B C D E F 代表

数据类型

  • 引用数据类型 (除基本数据类型之外,如String)
  • 基本数据类型: byte short int long float double char boolean

注意:java中支持书写二进制、八进制和十六进制的数据,分别需要以0B或者0b、0、0X或者0x开头

类型转换

自动类型转换

什么是自动类型转换

  • 类型范围小的变量,可以直接赋给类型范围大的变量

为什么要进行自动类型转换

  • 存在不同类型的变量赋值给其他类型的变量

自动类型转换的底层原理

自动类型转换的其他形式

表达式的自动类型转换

  • 在表达式中,小范围类型的变量会自动转换成当前较大范围类型的类型再运算

注意事项:

  • 表达式的最终结果类型由表达式中的最搞类型决定
  • 在表达式中,byte、short、char是直接转换成int类型参与运算的

表达式的强制类型转换

问题

  • 类型范围大的数据或变量,不能直接赋值给类型范围小的变量,会报错

强制类型转换

  • 可以强行将类型范围大的变量、数据赋值给类型范围小的变量

强制类型转换的底层原理

注意事项

  • 强制类型转换可能会造成数据(丢失)溢出;
  • 浮点型强转成整形,直接丢掉小数部分,保留正数部分返回。

运算符

逻辑运算符

  • 可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果

短路逻辑运算符

注意:逻辑与“&”、逻辑或“|”:无论左边是false还是true,右边都要执行

基本运算符

案例: 求水仙花数

  • 水仙花数是一个三位数
  • 水仙花数的个位、十位、百位的数字立方和等于原数
    1
    2
    3
    4
    5
    6
    7
    8
    for (int i = 100; i <1000 ; i++) {
    int bai = i / 100; //百位
    int shi = i / 10 % 10; //十位
    int ge = i % 10 ; //个位
    if (i == ge*ge*ge+bai*bai*bai+shi*shi*shi){
    System.out.println(i);
    }
    }
    运行结果 153 370 371 407

案例:珠穆朗玛峰

  • 需求:世界最高山峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    double paperHeight=0.1;     //纸张厚度
    double peakHeight =8848860; // 山峰高度
    int count =0;
    while (paperHeight<peakHeight){
    paperHeight *= 2 ;
    count++;
    }
    System.out.println("折了"+count+"次");
    System.out.println("纸张最终厚度:"+paperHeight);

案例:猜数字游戏

  • 需求:随机生成一个1-100的数字,让用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏
    random
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int number = random.nextInt(100)+1;  //随机生成1-100的数
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入数字");
    while (true){
    int numberIn = scanner.nextInt();
    if (numberIn == number){
    System.out.println("您猜对了");
    break;
    }else if (numberIn > number){
    System.out.println("您输入的数大了,请重新输入");
    }else {
    System.out.println("您输入的数字小了,请重新输入");
    }
    }