acm选手的java速成笔记

java入门

JDK

  • JDK:java程序运行平台(J2SE标准版,J2EE企业版)
    • 包括:
      • 开发工具
        • 编译器java.exe
        • 解释器javac.exe
      • JRE:java核心运行环境
        • JVM:java虚拟机
          • 字节码指令:中间代码
        • 类库
        • 核心文件
      • 附加库
      • 头文件
      • 源代码

运行过程

public class Hello {
    public stastic void main (String args[]) {
        System.out.println("Hello");
    }
}
  • 源文件
    • 除字符串一律英文字符
    • 大小写敏感
    • public与文件名相同
  • 编译
    • javac.exe进行编译
    • .class字节码文件
  • 运行
    • 一个java程序必须含有 public stastic void main (String args[])方法
    • java.exe进行解释执行
  • 反编译
    • javap.exe反编译器
  • 注释同c++

数据类型

整数

  • boolean
    • true
    • false
    • 进行逻辑运算时可以看做0/1
  • int(4byte)
  • byte(1byte)
  • short(2byte)
  • long(8byte)
    • 0x3f3f3f3fL
    • 常量后L
  • 没有unsigned

字符

  • Unicode表(非ASCII)
  • char(2byte)
    • char x = 'a'; / char x = 97;
  • 转义同c++
    • 可以十六进制转义
      • \u0041 A, \u0061 a
  • 用强制类型转换来获得序号
    • (int)'a'; // 97

浮点

  • float(4byte)
    • 必须常量后f/F
    • 8位有效数字
  • double(8byte)
    • 可省常量后d/D
    • 16位有效数字

类型转换

  • 顺序表:
    • byte | short | char | int | long | float | double
    • 由小到大转换不损失精度

IO

  • Input
    • Scanner
      • Scanner reader = new Scanner(System.in);
      • int x = reader.nextint();
      • reader可自定义
  • Output
    • System.out.println()
      • 换行
    • System.out.print()
      • 不换行
    • System.out.println("Hel" +
      "lo")
      • 不支持字符串内换行
    • System.out.printf("%d", x);
      • 同c++

数组

  • 声明
    • int方法
      • int [] a == int a[];
      • int [][] a == int a[][];
      • int [] a, b == int a[], b[];
      • int [] a, b[] == int a[], b[][];
      • 这种方式不允许在括号内定义元素个数
    • new方法
      • a = new int[4] == int a[4]
      • 本质上是malloc分配空间
      • a = new int[3][4] == int a[3][4] == int a[][] = new a[3][4]
      • 括号内允许变量
  • 使用同c++
  • length
    • a.length == 含有元素个数,同strlen(s)
  • 初始化同c++
  • 数组名都直接存放引用
    • 输出char型数组的引用:System.out.println("" + a);

运算符

同c++

控制语句

基本同c++

  • for(生命循环变量:数组名字)
    • int a[] = {1, 2, 3, 4};
      for(int i : a) Ststem.out.println(i);
  • hasNext(Byte/Int/Long……)判断数据类型是否满足
while(reader.hasNextInt()) {
    int x = reader.NextInt(); 
}
上一篇:ACM模板


下一篇:2021_GDUT_ACM寒训_动态规划基础