01 |「变量、运算符、表达式、输入与输出」

前言

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

一、变量

1、 定义变量

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

  • 方式 1

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

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

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次方
    
3)逻辑类型
类型字节数表示范围举例
boolean1false、trueboolean f = false
4)字符类型
类型字节数表示范围举例
char20 ~ 65535char c = ‘A’

3、常量

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

4、数据类型转化

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

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

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

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

二、运算符

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
    

3)+= -= *= /=

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

三、表达式

1)表达式中全是常量

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

2)表达式中有变量

int b = a * 10 + 5 / 2;

四、输入与输出

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();  // 读入下一个双精度浮点数
        }
    }
    
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);
        }
    }
    

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输出
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个写代码的修车工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值