介绍Java中的assert用法

【JAVA】Assert.isTrue()来做判断,并抛出异常 是一种断言(Assertion)方法,通常用于测试或验证代码中的逻辑条件是否为真。在许多编程语言和测试框架中都有类似的断言方法,用于编写单元测试或确保代码中的条件符合预期。必须为真,否则会抛出一个断言错误,并显示指定的错误消息。这种断言方法对于确保代码中的逻辑正确性非常有用,尤其在编写单元测试时能够帮助捕捉潜在的问题。方法通常是测试框架中的一部分,如果你想使用它,需要确保你的项目中已经包含了对应的测试库,并按照该测试框架的规范来编写和运行测试代码。它用于在测试中验证某个条件是否为真。 阅读详情

      assert是在J2SE1.4中引入的新特性,assertion就是在代码中包括的布尔型状态,程序员认为这个状态是true。一般来说assert在开发的时候是检查程序的安全性的,在发布的时候通常都不使用assert。在1.4中添加了assert关键字和java.lang.AssertError类的支持。

      首先,我们有必要从一个例子说起assert

public class AssertTest
{
 public static void main(String[] args)
 {
  AssertTest at = new AssertTest();
  at.assertMe(true);
  at.assertMe(false);
   
 } 
 
 private  void assertMe(boolean boo)
 {
  assert boo?true:false; 
  System.out.println("true condition");
 }
 
}
程序中包含了assert的话,你要用javac -source 1.4 xxx.java来编译,否则编译器会报错的。要想让assert得部分运行的话,要使用java -ea xxx来运行,否则包含assert得行会被忽略。下面我们运行
javac -source 1.4 AssertTest.java
java -ea AssertTest
看看结果的输出是:
true condition
Exception in thread "main" java.lang.AssertionError
        at AssertTest.assertMe(AssertTest.java:13)
        at AssertTest.main(AssertTest.java:7)
当我们运行at.assertMe(true)得时候,由于assert boo?true:false相当于 assert true;因此没有任何问题,程序往下执行打印出true condition,但是执行at.assertMe(false)的时候相当于assert false,这个时候解释器就会抛出AssertionError了,程序就终止了。大家必须清楚AssertionError是继承自Error得,因此你可以不再程序中catch它的,当然你也可以在程序中catch它然后程序可以继续执行。例如:
public class AssertTest
{
 public static void main(String[] args)
 {
  AssertTest at = new AssertTest();
  try
  {
   at.assertMe(true);
   at.assertMe(false);
  }
  catch(AssertionError ae)
  {
   System.out.println("AsseriontError catched"); 
  }
  System.out.println("go on");
   
 } 
 
 private  void assertMe(boolean boo)
 {
  assert boo?true:false; 
  System.out.println("true condition");
 }
 
}

      assert还有另外一种表达的方式,就是assert exp1:exp2;其中exp1是个boolean返回值得表达式,而exp2可以是原始的数据类型或者对象都可以例如:
   boolean boo = true;
   String str = null;
    assert boo = false:str="error";
我们刚开始讲得assert exp1得形式,当exp1是false得时候,AssertionError得默认构造器会被调用,但是assert exp1:exp2这样的形式,当exp1为true的时候后面exp2被或略,如果false的话,后面的表达式的结果会被计算出来并作为AssertionError得构造器参数。看下面的例子:
public class AssertTest
{
 public static void main(String[] args)
 {
  AssertTest at = new AssertTest();
  at.assertMe(true);
  at.assertMe(false);
   
 } 
 
 private  void assertMe(boolean boo)
 {
  String s = null;
  assert boo?true:false:s = "hello world"; 
  System.out.println("true condition");
 }
 
}运行的时候会得到这样的结果
true condition
Exception in thread "main" java.lang.AssertionError: hello world
        at AssertTest.assertMe(AssertTest.java:14)
        at AssertTest.main(AssertTest.java:7)
Assert最好不要滥用,原因是assert并不一定都是enable的,下面两种情况就不应该用assert

  1. 不要再public的方法里面检查参数是不是为null之类的操作
    例如public int get(String s)
       {
           assert s != null;
       }
    如果需要检查也最好通过if s = null 抛出NullPointerException来检查
  2. 不要用assert来检查方法操作的返回值来判断方法操作的结果   
    例如 assert list.removeAll();这样看起来好像没有问题 但是想想如果assert 被disable呢,那样他就不会被执行了 所以removeAll()操作就没有被执行  可以这样代替
    boolean boo = list.removeAl();
    assert boo;

就说这么多吧,assert是scjp1.4的考试内容 所以还是有必要了解的

Junit单元测试之断言(Assert) Junit为我们提供了一些辅助函数,他们用来帮助我们确定被测试的方法是否按照预期的效果正常工作。 一、assertEquals 函数原型1: Assert.assertEquals([String message],expected,actual) 参数说明: message(可选):将会在发生错误时报告这个消息。 expected(必填):期望值,通常都是用户指定... 阅读详情

相关推荐

assert的用法总结

断言的用法

公号:一条coding 1万+

Java 断言 assert 你真的会用嘛?

1.1 什么是断言?断言是编程中常用的一种技术手段,它用于在程序执行时验证某些条件是否满足。如果条件成立,则程序继续执行;否则程序抛出异常或直接终止。Java 断言机制就是一个典型的断言实现,在代码中使用 assert 断言关键字定义一个条件表达式来验证程序假设的正确性。1.2 断言的作用断言的主要作用是在开发和调试阶段快速定位和解决问题,有效避免因为程序中存在非预期的逻辑错误而导致程序崩溃或产生误判的情况。

m0_71777195的博客 1万+

RK3568 解决MIPI屏幕开机只显示uboot logo的问题

之前写过一篇文章介绍了RK3568驱动MIPI屏幕的方法,这次产品迭代,硬件改版,选型的新的屏幕了。所以再次开启调试屏幕的过程。本以为会和上次一样会轻车熟路,事情总是事与愿违,同样的路,遇到新的坑。

fhqlongteng的博客 5425

Java: 断言(assert)

断言(assert)语句一半用于程序不准备通过捕获异常来处理的错误。例如:账号交易时,对于支出的金额为正数(收入+支出=纯收入)或者收入的金额为负数,程序必须立即停止执行,同时发现错误,当正式收益时,就可以避开错误,但仍保留断言语句在程序中,之后再次调试时,可以重新启动断言也可以不断发现新的问题和解决语句。 语法格式: assert booleanExpression; // 求值为b...

belien 5万+

告别卡顿!用LVGL+DMA刷新STM32F407的SPI屏幕,性能提升实战

本文详细介绍了如何通过LVGL+DMA技术优化STM32F407驱动SPI屏幕的性能,实现接近60FPS的流畅刷新。从硬件瓶颈分析到SPI与DMA的精细化配置,再到LVGL的双缓冲机制与局部刷新优化,提供了一套完整的性能提升方案。特别适合嵌入式GUI开发中面临卡顿问题的工程师参考。

weixin_42531588的博客 378

ZLMediaKit源码分析(二)推流创建

ZLMediaKit推流结构体创建是在RtspSession::onRecv()之后。如何触发onRecv()请参考上一篇文章这里不在赘述。

cliffordl的专栏 5074

2024Java基础知识面试题(总结最全面的面试题)

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。字节码。

BASK2311的博客 5072

自建邮局服务器| 批量邮件群发系统PowerMTA+oem(mumara,mailwizz, interspire)

世界顶级自建邮局服务器PowerMTA+oem(mumara,mailwizz, interspire) PowerMTA4.5(最好用的 群发邮件软件)是用于大批量多ip开发的邮件传递邮寄。可按每小时发送数近百万条电子邮件,发送IP地址和域可以详细配置,加上目前流行前端oem,mumara,mailwizz, interspire等,可定时发送,定时重复发送,实现全自动化 邮件群发 方案。 官网(powermta4.5下载) https://www.sparkpost.com/powermta/ 使用Po

ytrsexpo的博客 6503

java assert 用法介绍

断言语法规则: 1. assert ; 逻辑表达式返回boolean值。如果返回true,则继续执行;否则,将抛出AssertionError异常。 2. assert :; 在第二种形式中,抛出异常的同时还会打印信息表达式的值。信息表达是可以是任何类型的,包括基本数据类型与引用类型。 在Eclipse中,需要开启断言(Assert)才能有效,方法如下: Run ->

guyulei0726的博客 811

弹簧管压力表设计报告

精密机械课程设计 弹簧管压力表设计报告 2020年5月1日 目 录 第一章 设计任务概述... 3 1.1 课程设计目的... 3 1.2 设计任务... 3 1.3 技术指标... 3 第二章 压力表概述... 4 2.1 机械式压力表的组成部分... 4 2.2 工作原理... 4 第三章 压力表设计... 5 3.1 弹簧管参数设计... 5 3.2 曲柄滑块机构设计... ...

weixin_42163746的博客 6451

SAP BASIS运维之三方SSL证书导入

事情的起因是我司SAP使用的SSL证书即将要到期了(上一个的SAP BASIS也辞职了),需要进行证书的更换。如上图所示,我司的证书有效期到2024年4月30日到期,需要提前预防并更换,防止过期后导致接口和访问出现问题。9.在弹出的框中,选择我们在第5个步骤中导出的转换结果存储地址,并选择导出的转换文件,点打开。12.最后一步也是关键的一步,不然就会无法更新证书,再点击左上角的个人安全环境,点另存为。10.在打开后的弹窗中,输入我们在第4个步骤中设置的密码。6.经过以上步骤后,我们获得了最终的证书文件。

fegda的专栏 1885

介绍Java中的assert用法(转)

assert是在j2se1.4中引入的新特性,assertion就是在代码中包括的布尔型状态,程序员认为这个状态是true。一般来说assert在开发的时候是检查程序的安全性的,在发布的时候通常都不使用assert。在1.4中添加了assert关键字和java.lang.asserterror类的支持。       首先,我们有必要从一个例子说起assert   public class a...

ysj5125094的专栏 179

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3093

Java 断言 Assert 使用教程与最佳实践

介绍 Java 最鲜为人知的关键字 - assert 的用法、最佳实践、特殊用法以及替代工具。Java 老鸟也没用过。

未读代码 3741

基于自适应小波阈值算法的图像去噪

自适应小波阈值算法是一种基于小波变换的方法,它相对于传统的小波阈值去噪方法具有更好的性能和鲁棒性。该算法首先对图像进行小波变换,然后根据小波系数的大小确定一个自适应的阈值,将小波系数与阈值进行比较,大于阈值的系数被保留,小于阈值的系数被置零。在上述代码中,首先选取了小波函数sym4进行小波分解,然后根据标准差计算出阈值,使用wthresh函数进行阈值处理,最后进行反变换得到处理后的图像。该GUI界面与前面的自适应小波阈值算法代码结合,实现了图像的去噪,并提供了可视化的效果。

与其临渊羡鱼,不如退而结网 559

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java中的断言assert的用法

Java陷阱之assert关键字   一、概述         在C和C++语言中都有assert关键,表示断言。       在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。   二、语法          在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行...

m0_37768843的博客 3万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java中的assert用法

 assert是在J2SE1.4中引入的新特性,assertion就是在代码中包括的布尔型状态,程序员认为这个状态是true。一般来说assert在开发的时候是检查程序的安全性的,在发布的时候通常都不使用assert。在1.4中添加了assert关键字和java.lang.AssertError类的支持。      首先,我们有必要从一个例子说起assertpublic class Ass

dongliheng的专栏 2171

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

关于Java中的assert关键字

Java中有一个不太常用的关键字assert,是jdk1.4中加入的,平时开发中见的很少,不过在一些框架的源码里面的测试类里面,出现过不少它的踪迹。assert意为断言的意思,这个关键字可以判断布尔值的结果是否和预期的一样,如果一样就正常执行,否则会抛出AssertionError。 范例1: 下面的两处代码意思相同 是等同于的关系 范例2: 第二种用法,其实后面的表达式是允许我们自定义一个异常错误信息抛出。 执行 结果: 注意,在运行的时候,正常情况下assert是不会生效的,因为运行时assert是

qq_41810415的博客 1916

java assert基本用法

java assert基本用法 assert简介: java assert(断言) 一般断言在开发和测试的阶段进行开启,用于检查程序的基本正确性,在VM arguments里面输入-ea就可以开启了。如果没有这个参数,assert在程序中将不起作用。 assert基本语法: 1. a...

962

java assert的用法简介

assert的基本用法 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身、有的是通过库函数等。另外,从理论上来说,通过assertion方式可以证明程序的正确性,但是这是一项相当复杂的工作,目前还没有太多的实践意义。 在实现中,assertion就是在程序中的一条语句,它对一...

327

Java之assert关键字

一、概述   在C和C++语言中都有assert关键,表示断言。 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。   二、语法   在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语

nicknailo博客 3895

转载:java assert基本用法

原始路径:https://my.oschina.net/hongliangsun/blog/1546439 java assert基本用法 assert简介: java assert(断言) 一般断言在开发和测试的阶段进行开启,用于检查程序的基本正确性,在VM arguments里面输入-ea就可以开启了。如果没有这个参数,assert在程序中将不起作用。 assert基本语法: 1. assert expression1; 2. assert expression1: expression

黄道婆的专栏 1504

Java中的断言assert

一、概述 在C和C++语言中都有assert关键,表示断言。 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。 二、语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都 将忽略!),如果要开启断言检查,则需要用开关-e...

雨雾清影的个人博客 262
上一篇: 《Effective Java》读书笔记系列之三
下一篇: 应用双缓冲技术解决J2ME中的画面闪烁的问题
mingjava
博客等级 码龄24年 68粉丝 114原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值