【问题标题】:What are assert statements in Java? [duplicate]Java 中的断言语句是什么? [复制]
【发布时间】:2010-08-26 06:27:35
【问题描述】:

可能重复:
What does assert do?

请用至少一个例子给我一些细节。

【问题讨论】:

标签: java assert


【解决方案1】:

试试这个:

public class AssertionTest {

  public static void main(String args[]) {
     boolean assertTest = true;
     assert assertTest;
     assertTest = false;
     assert assertTest;
  }
}

如果你编译并运行它,你应该知道断言语句是如何工作的。

更新:
正如 cmets 中正确指出的那样,编译后,您将其作为 java -ea AssertionTest 运行 - -ea 标志启用断言。

【讨论】:

  • 你必须使用标志运行它:-ea btw
  • @OscarRyz - 是的,正确 - 我错过了 - 我已经更新了我的答案
  • 为了便于记忆:-ea-enableassertions 选项的缩写形式。
【解决方案2】:

您使用assert 关键字来验证您认为您的代码是否属实。

中的断言不是代码验证的替代品,因为它可以在运行时被禁用(默认是禁用的)所以,如果断言被禁用并且你用它来控制你的逻辑,你会得到不想要的结果。

例如:

class SomeClass {
    public void someMethod( String input ) {
         // do something with the input... 
         String result = processs( input );
         assert result.startWith("OK");
         // continue with your code.. 
         return result;
     }
    ....
 }

在该代码中,程序对输入进行处理。您的假设是,结果字符串始终以 "OK" 开头。你提出断言,以确保发生这种情况,但你没有围绕它设置任何逻辑(如果没有发生,你不会做任何事情)

在启用断言的情况下测试代码时,如果您发现结果不是以“OK”开头,那么程序将停止执行。

要启用/禁用断言,您必须将标志 -ea 传递给 java

请参阅:http://download.oracle.com/javase/1.4.2/docs/guide/lang/assert.html 了解更多信息。

【讨论】:

  • in c # add System.diagnostics package namespace ConsoleApplication16 { class Program { static void Main(string[] args) { int value = 7; Debug.Assert(value >8, "value 必须小于 5"); Debug.WriteIf(value ==7, "值为 7"); } } }
  • 我只是给出了不同之处,这样你就可以意识到两种语言的不同之处而不会混淆它会更清楚或更好地理解或控制它你现在意识到了吗?
  • 你开始批评某人的回答不好公开
  • 感谢您的解释。但是如果你能给我一个例子来帮助我理解会更好。如果我用 c# refrence 来理解有什么问题
  • @Vijay 这很难解释。 1st C# 比较没有错。你没有添加任何评论,所以我也不知道你是否混淆了他们。 第二如果您用一种语言询问一件事,那么不加任何评论就提出另一件事是没有任何意义的。 3rd 不同的语言以不同的方式应用相同的功能。例如,我不知道 C#(你假设我知道)在我看来他们有一个类 Debug 和一个方法 Assert,但是 你为什么希望我这样做使用粘贴的代码 非常混乱。
【解决方案3】:

断言是 JavaTM 编程语言中的一个语句,它使您能够测试您对程序的假设。例如,如果您编写一个计算粒子速度的方法,您可能会断言计算出的速度小于光速。

每个断言都包含一个布尔表达式,当断言执行时您认为该表达式为真。如果不正确,系统将抛出错误。通过验证布尔表达式确实为真,断言确认了您对程序行为的假设,增加了您对程序没有错误的信心。

查看下面的链接以获取更多详细信息和示例 -

http://download.oracle.com/javase/1.4.2/docs/guide/lang/assert.html

http://www.roseindia.net/javacertification/scjp5/assertionsexample.shtml

【讨论】:

  • 断言检查在程序运行时执行期间必须为真的布尔类型表达式。断言工具可以在运行时启用或禁用。断言语句有两种形式 assert expression1 assert expression1 : expression2;第一种是断言的简单形式,第二种形式采用另一种表达方式。在这两种形式中,布尔表达式都表示必须评估为真正运行时的条件。例如 vijay(int a) { if(a>=0) { System.out.println("vijay"); } else { error } } vijay(float b) { assert (b>0) : not gretarer ; // 做 }
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2011-05-17
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多