如果您有启动您的程序-enableassertions(或-ea简称),那么这种说法assert cond;相当于if (!cond) throw new AssertionError();如果不使用此选项启动程序,则assert语句将无效。例如assert d >= 0 && d <= s.length();,如张贴在你的问题,相当于if (!(d >= 0 && d <= s.length())) throw new AssertionError();(如果您启动的-enableassertions是。)Java语言规范assert正式为:14.10。该声明说:14.10。的assert声明的断言是一个assert含有一个布尔表达式语句。一个断言启用或者禁用。如果启用了断言,则断言的执行将导致对布尔表达式进行求值,并且如果表达式的求值为,则会报告错误false。如果断言被禁用,则断言的执行不起作用。当“启用或禁用”控制与-ea开关和“报告错误”意味着AssertionError被抛出。最后,一个鲜为人知的功能assert:您可以: "Error message"像这样追加:assert d != null : "d is null";指定应该抛出什么AssertionError的错误消息。