在线 Java 编译器

在浏览器中编写、编译并运行 Java 代码,适合学习、练习与快速验证。

Java 代码编辑器

标准输入(可选)
程序参数(可选)

输出

执行信息

状态与耗时:

标准输出(stdout)

就绪。程序输出将显示在此处。

标准错误(stderr)

(无错误)

使用说明

  • 编写一个包含 public static void main(String[] args) 入口方法的单文件 Java 程序。
  • 需要输入?把内容写到 标准输入 框中,它会通过 stdin 传给程序。
  • 程序参数以空格分隔。例如:hello world 会变为 args[0]=helloargs[1]=world
  • 点击“运行代码”即可在线编译并执行程序。
  • 超时:编译和运行各自有 2000ms 限制,请保持程序简洁。
  • 限制:不可访问网络,运行在沙箱中。长时间运行或交互式程序可能被终止。
  • 提示:使用 Scanner 读取输入,使用 System.out.println 输出。可加载下方示例快速开始。

示例

你好,世界
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}
从标准输入读取
import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String name = sc.nextLine();
    int n = sc.nextInt();
    System.out.println("Name: " + name);
    System.out.println("Twice: " + (2*n));
  }
}
试试标准输入:Alice\n7
程序参数
public class Main {
  public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
      System.out.println("arg[" + i + "] = " + args[i]);
    }
  }
}
试试参数:hello world
类与方法
class Greeter {
  String greet(String name) {
    return "Hello, " + name + "!";
  }
}

public class Main {
  public static void main(String[] args) {
    Greeter g = new Greeter();
    System.out.println(g.greet("Java"));
  }
}

Java 基础

变量与类型
Java 拥有基本类型(byte、short、int、long、float、double、char、boolean)与引用类型(类、数组)。自 Java 10 起,var 可用于推断局部变量类型。
public class Main {
  public static void main(String[] args) {
    byte b = 1;
    int i = 42;
    long l = 10000000000L;
    float f = 3.14f;
    double d = 2.71828;
    char c = 'A';
    boolean ok = true;
    var s = "Java"; // type inference

    System.out.println(b + " " + i + " " + l);
    System.out.println(f + " " + d);
    System.out.println(c + " " + ok + " " + s);
  }
}
流程控制
使用 if/elseswitchforwhile 控制程序流程。breakcontinue 可改变循环执行。
public class Main {
  public static void main(String[] args) {
    int n = 7;
    if (n % 2 == 0) {
      System.out.println("even");
    } else {
      System.out.println("odd");
    }

    String day = "MON";
    switch (day) {
      case "MON":
      case "TUE":
      case "WED":
      case "THU":
      case "FRI":
        System.out.println("weekday");
        break;
      case "SAT":
      case "SUN":
        System.out.println("weekend");
        break;
      default:
        System.out.println("unknown");
    }

    for (int i = 0; i < 3; i++) System.out.println("i=" + i);
    int j = 3;
    while (j > 0) { System.out.println("j=" + j); j--; }
  }
}
集合(List、Map)
集合框架提供了如 ListMap 等动态容器。可使用增强 for 循环遍历。
import java.util.*;

public class Main {
  public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("a"); list.add("b"); list.add("c");
    for (String s : list) System.out.println(s);

    Map<String,Integer> map = new HashMap<>();
    map.put("alice", 3); map.put("bob", 5);
    System.out.println("bob=" + map.get("bob"));
    for (Map.Entry<String,Integer> e : map.entrySet()) {
      System.out.println(e.getKey() + ":" + e.getValue());
    }
  }
}
异常(try/catch/finally)
使用 try/catch/finally 处理异常。优先捕获具体异常;使用 finally 做清理。
public class Main {
  static int parse(String s) {
    try {
      return Integer.parseInt(s);
    } catch (NumberFormatException e) {
      System.out.println("Not a number: " + s);
      return -1;
    } finally {
      System.out.println("Done parsing: " + s);
    }
  }

  public static void main(String[] args) {
    int a = parse("42");
    int b = parse("hello");
    System.out.println("a=" + a + ", b=" + b);
  }
}
字符串
字符串是不可变的。常见操作包括拼接、大小写转换、子串提取、替换与包含检查。
public class Main {
  public static void main(String[] args) {
    String s = "Java";
    String t = "Spring";
    String u = s + " " + t;
    System.out.println(u.toUpperCase());
    System.out.println(u.toLowerCase());
    System.out.println(u.substring(0, 4));
    System.out.println(u.replace("Spring", "World"));
    System.out.println(u.contains("Java"));
  }
}