• 变量、运算符、表达式、输入与输出


    前言

    编程可以让计算机进行复杂操作,实现人类与计算机的交互。

    一、变量

    1、 定义变量

    • 变量必须先定义再使用,不可重名。

    • 方式 1

      // 先定义再赋值
      int a;  // 定义
      a = 5;  // 赋值
      
      • 1
      • 2
      • 3
    • 方式 2

      // 边定义边赋值
      int a = 5;  // 边定义边初始化
      int b;  // 定义变量不赋值
      int c = a;  // 赋值变量,此时 c = 5
      int d = 10 / 2;  // 赋值一个算式
      
      • 1
      • 2
      • 3
      • 4
      • 5

    2、数据类型

    1)整数类型
    类型字节数表示范围举例
    byte1-128 ~ 127byte a = 123;
    short2-32768 ~ 32767short b = 12345
    int4-2147483648 ~ 2147483647 (109)int c = 123456789
    long8-263 ~ 263 - 1 (1018long d = 123456723423432L
    • byte:整数,占一个字节,8 位,可以表示 28 = 256 种情况(表示数的范围一般为一半负数一半非负数 -27 ~ 27 - 1);
    • short:整数,占两个字节,16 位,可以表示 216 = 65536 种情况(表示数的范围为 -215 ~ 215-1);
    • int:整数,占四个字节,32 位,表示数的范围为 -231 ~ 231-1 (表示数的范围的绝对值为 2.1*109);
    2)浮点类型
    类型字节数表示范围举例
    float单精度浮点型 4 字节有效数字为 6-7 位float e = 1.2F
    double双精度浮点型 8 字节有效数字为 15-16 位(10300double f = 1.2, g = 1.2D
    • 举例,1.234*105:有效数字为 4 位;

    • float有效数字为 6-7 位,即只能保证前 6-7 位的数字是精确的,后面位的数字是近似值;

    • double有效数字为 15-16 位,即只能保证前 15-16 位的数字是精确的,后面位的数字是近似值(Java 中不加 F 标识默认为 double 类型)。

    • 判断两个 double 类型的数是否相等?

      double x = 1, y = 2;
      if (x == y)  // 不要这样判断,会有误差
      if (Math.abs(x - y) < 1e-6)  // 判断两个数的差值小于一个很小的数,认为相等,1e-6:表示10的-6次方
      
      • 1
      • 2
      • 3
    3)逻辑类型
    类型字节数表示范围举例
    boolean1false、trueboolean f = false
    4)字符类型
    类型字节数表示范围举例
    char20 ~ 65535char c = ‘A’

    3、常量

    • 变量的值可以修改,常量的值不能修改;
    • 在变量前面加修饰符 final,表示该值不可以进行修改;
    • 常量的作用是在协同合作开发中,不希望其他人修改该值,将其设置为常量,方便同事间的协作(例如,两名同事各自负责一个函数,有一个全局变量,同事 A 不希望同 B 对其进行修改,可以将此变量设置为常量 );
      int x = 10;  // 变量x
      final int y = 10;  // 常量y
      
      • 1
      • 2
    • 总结:final 修饰的类不能被继承,修饰的方法不能被重写,修饰的变量不能被修改;

    4、数据类型转化

    • 不同数据类型间是可以进行相互转化的。

    • 显示转化(可以明显看到向哪个类型进行转换)

      int x = (int)'A';
      
      • 1
    • 隐式转化

      • 两个不同数据类型的变量作运算时,先转换为相同类型的变量,再作运算;
      • 转换的原则为:范围小的变量类型会优先转换为范围大的变量类型;
      double x = 12; y = 4 * 3.3;
      
      • 1

    二、运算符

    1)/

    • 注意点:如果左右两边是整数的话,向 0 的方向取整;
    • 向 0 取整向下取整 的区别
      • 向 0 取整:30 / 20 = 1-30 / 20 = -1
      • 向下取整:-30 / 20 = -2

    2)%

    • a%b:a/b 的余数是多少

    2)++ 和 - -

    • ++:先取值再 +1,++:先 +1 再取值;
      int a = 1;
      int b = a ++;  // 先取出a的值赋值给b,a再+1
      int c = ++ a;  // 先将a的值+1,再赋值给c
      
      • 1
      • 2
      • 3

    3)+= -= *= /=

    a = a +b; <=> a += b;  // 在a的基础上加上b
    a -= 5;  // 在 a 的基础上减去5
    a *= 2;  // a 乘某个数
    a /= 2;  // a 除某个数
    a %= 4;  // 将 a 变成对于某个数的整数
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、表达式

    1)表达式中全是常量

    int a = 6 + 3 * 4 / 2 - 2;
    
    • 1

    2)表达式中有变量

    int b = a * 10 + 5 / 2;
    
    • 1

    四、输入与输出

    1、输入

    1)输入数据规模较小
    • 输入数的个数(输入数据规模)在 105 以内可以用 Scanner;
      import java.util.Scanner;
      
      public class Main {
          public static void main(String[] args) throws Exception {
              Scanner sc = new Scanner(System.in);
              String str = sc.next();  // 读入一个字符串,读入时遇到空格、回车、制表符 停止,每次读入一个字符串
               String line = sc.nextLine();  // 读入一个字符串,直到遇到回车停止(读入一整行字符串),
              int x = sc.nextInt();  // 读入下一个整数
              float y = sc.nextFloat();  // 读入下一个单精度浮点数
              double z = sc.nextDouble();  // 读入下一个双精度浮点数
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    2)输入规模较大(超过105
    • BufferedReader 这种较快的输入方式,只有一个 API 为 readLine,只能读入字符串[浮点数也可以读进来],想要读入整数只能手动操作[先读入字符串,然后再手动将字符串转换为int]):int x = Integer.parseInt(br.readLine());(将字符串转换为 int)
      import java.io.BufferedReader;
      import java.io.InputStreamReader;
      
      public class Main {
          public static void main(String[] args) throws Exception {
              BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
              String str = br.readLine();  // 只有这一个api,读入字符串
              System.out.println(str);
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

    2、输出

    public class Main {
        public static void main(String[] args) throws Exception {
            System.out.println(123);  // 输出整数 + 换行
            System.out.println("Hello World");  // 输出字符串 + 换行
            System.out.print(123);  // 输出整数没有换行
            System.out.print("yxc\n");  // 输出字符串没有换行
            System.out.printf("%04d %.2f\n", 4, 123.456D);  // 格式化输出,float与double都用%f输出
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    【ARM 裸机】C 语言 led 驱动
    java计算机毕业设计政务大厅管理系统源码+数据库+系统+lw文档+mybatis+运行部署
    Linux内核详解与内核优化方案
    网购窗帘一定要注意的细节 - 好佳居窗帘十大品牌
    RabbitMQ
    SpringBoot+jSerialComm实现Java串口通信 读取串口数据以及发送数据
    C++常用格式化输出转换
    学习笔记1——SSM的基础知识
    C1 ARMv7-M Debug
    (高阶)Redis 7 第13讲 数据双写一致性 canal篇
  • 原文地址:https://blog.csdn.net/weixin_39903708/article/details/127583902