网站首页 > java教程 正文
问:assert有什么作用?
答:断言(assert)作为一种软件调试的方法,提供了一种在代码中进行正确性检查的机制,目前很多开发语言都支持这种机制。它的主要作用是对一个boolean表达式进行检查,一个正确运行的程序必须保证这个boolean表达式的值为true,若boolean表达式的值为false,则说明程序已经处于一种不正确的状态下,系统需要提供告警信息并且退出程序。在实际的开发中,assert主要用来保证程序的正确性,通常在程序开发和测试时使用。为了提高程序运行的效率,在软件发布后,assert检查默认是被关闭的。
assert包括两种表达式,分别为assertexpression1与assertexpression1:expression2,其中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象,基本类型包括boolean、char、double、float、int和long。以下是对这两个表达式的应用。
对于上述代码,当执行指令javacTest.Java与javaTest时,程序的输出结果为:
assert1 ok
assert2 ok
对于上述代码,当执行指令javacTest.Java和java-eaTest时(注意:Java-eaTest的意思是打开-ea开关),程序的输出结果为:
assert的应用范围很多,主要包括:
①检查控制流;
②检查输入参数是否有效;
③检查函数结果是否有效;
④检查程序不变量。
虽然assert的功能与if判断类似,但二者存在着本质的区别:assert一般在调试程序时使用,但如果不小心用assert来控制了程序的业务流程,那在调试结束后去掉assert就意味着修改了程序的正常逻辑,这样的做法是非常危险的;而if判断是逻辑判断,本身就是用以控制程序流程的。
需要注意的是,在Java语言中,assert与C语言中的assert尽管功能类似,但也不完全一样,具体表现为两个方面的不同:①Java语言中是使用assert关键字去实现其功能,而C语言中使用的是库函数;②C语言中的assert是在编译时开启,而Java语言中则是在运行时开启。
猜你喜欢
- 2024-11-05 Java 进阶之异常处理(java中异常处理)
- 2024-11-05 为什么Java中的const关键字没有实现?
- 2024-11-05 Spring Boot 内置工具类(springboot 工具类调用service)
- 2024-11-05 深入理解Java:注解(Annotation)基本概念(3-1)
- 2024-11-05 Spring Boot集成validation用于优雅的校验API参数的合法性
- 2024-11-05 java初学者,如何学习java?(java该怎么学)
- 2024-11-05 Nacos网关gateway的断言,自定义断言,过滤器使用
- 2024-11-05 恕我直言,在座的各位根本不会写 Java!
- 2024-11-05 JAVA 命令之标准选项(java怎么选择)
- 2024-11-05 Java锁与线程的那些“不可描述”的事儿
你 发表评论:
欢迎- 最近发表
-
- 五,网络安全IDA Pro反汇编工具初识及逆向工程解密实战
- 「JAVA8」- Lambda 表达式(java lambda表达式原理)
- 深入探讨Java代码保护:虚拟机保护技术的新时代
- Nginx反向代理原理详解(图文全面总结)
- 逆向拆解日本IT,哪些Java技术栈薪资溢价高
- mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比
- Spring Boot集成ProGuard轻松实现Java 代码混淆, Java 应用固若金汤
- 从 Java 代码逆向工程生成 UML 类图和序列图
- 人与人相处:尊重是标配,靠谱是高配,厚道是顶配
- Windows系统安装日期如何修改(windows10怎么修改安装日期)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)