Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的断言语句是什么?_Java_Assert - Fatal编程技术网

Java中的断言语句是什么?

Java中的断言语句是什么?,java,assert,Java,Assert,可能重复: 请至少举一个例子给我一些细节。断言是JavaTM编程语言中的一条语句,它使您能够测试您对程序的假设。例如,如果编写了计算粒子速度的方法,则可以断言计算的速度小于光速 每个断言都包含一个布尔表达式,您认为该表达式在断言执行时为真。如果不正确,系统将抛出错误。通过验证布尔表达式是否为真,断言确认了您对程序行为的假设,增加了您对程序没有错误的信心 查看下面的链接了解更多详细信息和示例- 试试这个: public class AssertionTest { public stati

可能重复:


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

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

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

查看下面的链接了解更多详细信息和示例-

试试这个:

public class AssertionTest {

  public static void main(String args[]) {
     boolean assertTest = true;
     assert assertTest;
     assertTest = false;
     assert assertTest;
  }
}
如果编译并运行该语句,您应该知道断言语句是如何工作的

更新:

正如注释中正确指出的那样,编译后,您可以将其作为
java-ea AssertionTest
-运行
-ea
标志启用断言。

您可以使用
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


请参阅:了解更多信息。

搜索作业或面试问题,这对谷歌来说并不难……Java中没有“断言”语句。有一个“assert”语句,它被记录在案。重复queston!断言检查在程序运行时执行期间必须为true的布尔类型表达式。可以在运行时启用或禁用断言功能。断言语句有两种形式assert expression1 assert expression1:expression2;第一种是断言的简单形式,第二种形式采用另一个表达式。在这两种形式中,布尔表达式都表示必须计算为true runtime的条件。示例vijay(inta){if(a>=0){System.out.println(“vijay”);}else{error}}}vijay(float b){assert(b>0):not gretarer;//是否必须使用标志:-ea运行它btw@OscarRyz-是的,正确-我错过了-我更新了我的答案以便于记忆:
-ea
-enableassertions
选项的缩写形式。在c#中添加System.diagnostics包名称空间控制台应用程序16{class Program{static void Main(string[]args){int value=7;Debug.Assert(value>8,“value必须小于5”);Debug.WriteIf(value==7,“value为7”);}我只是给出了不同点,这样你就可以意识到两种语言有多大的不同,没有混淆,它会让你更清楚、更好地理解或控制它。你现在意识到了吗?公布你的答案是不好的,你开始批评一些人,感谢他们的解释。但如果你能给我一个例子,让我理解,那就更好了.如果我拿着c#有什么问题refrence@Vijay这很难解释。第一,C#比较没有问题。你没有添加任何注释,所以我不知道你是否混淆了它们。第二,如果你用一种语言问一件事,没有任何注释就带另一件事是没有任何意义的。第三,不同ent语言以不同的方式应用相同的功能。例如,我不知道C#(你假设我知道),在我看来,他们有一个类
Debug
,带有一个方法
Assert
,但你为什么希望我使用粘贴的代码呢?这非常令人困惑。