安全性:
下面有关JAVA代码安全性的叙述错误的是()
A 字节码校验器加载查询执行所需的所有类
B 运行时由解释器执行代码
C 运行时,字节码被加载,验证,然后在解释器中执行
D 类加载器通过分离本机文件系统的类和从网络导入的类增加安全性
答案:A
解析:
类加载器加载程序运行所需要的所有类,它通过区分本机文件系统的类和网络系统导入的类增加安全性,这可以限制任何的特洛伊木马程序,因为本机类总是先被加载,一旦所有的类被加载完,执行文件的内存划分就固定了,
在这个时候,特定的内存地址被分配给对应的符号引用,查找表也被建立,由于内存划分发生在运行时,解释器在受限制的代码区增加保护,防止未授权的访问;
然后字节码校验器进行校验,主要执行下面的检查,类是否符合JVM规范的类文件格式,有没有违反访问限制,代码有没有造成堆栈的上溢或者下溢,所有操作代码的参数类型是否都是正确的,有没有非法的数据类型转换(例如将整型数转换成对象类型)发生;校验通过的字节码被解释器执行,解释器在必要时通过运行时系统执行对底层硬件的相应调用。
基础语法:
(1) a = i--
(2) a = --i
(3) a = 15%4
(4) a = 14 / 4
(5) a = (i^=7)
变量i的值为4,下列操作能够得到变量a的值为3的是 2.3.4.5
--i 是先执行i=i-1,然后再使用i的值, 这时的i 值就是表达式--i的值。
i-- 是先使用i的值作为表达式i--的值,然后,执行i=i-1操作。
#include"stdio.h"
void main()
{
int i=4,j,k;
j=i--; //i先赋值给j,然后i再执行i=i-1;
k=--i; //i先执行i=i-1,然后再赋值给k;
printf("i=%d,j=%d,k=%d",i,j,k);
}
运行结果为: i=2,j=4,k=2