基本程序设计

  • 从控制台读入:
  • 类(Class)的导入:
  • 明确导入:
  • 通配符导入:
  • 变量声明
  • 一般变量
  • 常量
  • 不同的数值类型:
  • 数值型字面值
  • 整型字面值
  • 浮点型字面值
  • 显示当前时间:UNIX时间戳
  • ⚠️手动实现各种取整,去除最后k位
  • 注意事项:

本文是《Java语言程序设计与数据结构(基础篇)》的笔记。

从控制台读入:

import java.util.Scanner;
Scanner input = new Scanner(System.in);
int tmp1 = input.nextInt();
long tmp2 = input.nextLong();

//System.out.println(tmp1);
//System.out.println(tmp2);
  • Java使用System.out表示标准输出设备,一般为显示器;而输入设备为System.in,一般为键盘。
  • 多次输入也只要定义一个Scanner即可。
  • 我们也可以不用导入java.util.Scanner,此时需要写
java.util.Scanner input = new java.util.Scanner(System.in);
  • Eclipse在程序中会有一个提示:要关闭输入,以防止可能的资源泄漏。但可以先忽略警告,因为程序结束时输入将自动关闭。
  • 如果输入了一个字符,会报错:Exception in thread "main" java.util.InputMismatchException

类(Class)的导入:

⚠️ 除非在程序中使用到了某个类,否则被导入包中的类的信息在编译时或运行时是不被读入的。导入语句只是告诉编译器在哪里可以找到这些类。明确导入和通配符导入在性能上是没有什么差别的。

  • 有些类,如Math类(在java.lang包里面)是被隐式导入的。所以不需要再手动导入。

明确导入:

如import java.util.Scanner;

通配符导入:

如import java.util.*;: 此时会导入一个包中所有的类。

变量声明

一般变量

int i,j,k;
int i=1,j=2;
  • 之所以要声明数据类型,是为了让编译器根据数据类型为变量分配合适的内存空间。

常量

final datatype NAME = value;

不同的数值类型:

类型名

存储空间

byte

8位带符号数字

short

16位带符号数字

long

64位带符号数字

float

32位,标准IEEE 754,正数范围 1.4E-45 ~ 3.4E38

double

64位,标准IEEE 754,正数范围 4.9E-324 ~ 1.7976E308

数值型字面值

整型字面值

  • 二进制整数字面值: 0B…。如0B11就是3。
  • 八进制:0…。如011就是9。
  • 十六进制:0X…。如0X11就是17。
  • 可以用下划线分开:println(123_456); == println(123456);

浮点型字面值

  • 一般情况下5.0是double类型的,而不是float类型
  • 只有0.5F才表示float类型。
  • ⚠️ 例如:
System.out.println(1.0F/3.0F);
System.out.println(1.0F/3.0);
System.out.println(1.0/3.0);

的输出为:

0.33333334
0.3333333333333333
0.3333333333333333

显示当前时间:UNIX时间戳

  • System类中的方法currentTimeMilis返回从GMT1970年1月1日00:00:00开始到当前时刻的好秒数。
  • System.out.println(System.currentTimeMillis);

⚠️手动实现各种取整,去除最后k位

  1. 向下取整(int)(x)
  2. 向上取整(int)(x+0.5)
  3. 去除最后k位(int)(x / (10^k))

注意事项:

  1. 注意Java中做除法的数的数据类型:
System.out.println(Math.pow(2, 1/2));
System.out.println(Math.pow(2, 1.0/2));

前者结果是1,后者结果才是ts import 引入 has no exported member_java,因为ts import 引入 has no exported member_java_02。见浮点型字面值的例子,它的结果是取类型大的那个。