1. 首先记录一个异常ArithmeticException
出现异常的运算条件时,会抛出此异常,比如,除以0的时候。
2. 判断方法的执行结果( )
public static void main(String [] args){
try {
Object x[] = new String[3];
x[0] = new Integer(0);
} catch(NullPointerException e) {
System.out.println("NullPointerException");
} catch(ArrayStoreException e) {
System.out.println("ArrayStoreException");
} catch(Exception e) {
System.out.println("Exception");
}
}
A、NullPointerException
B、ArrayStoreException
C、Exception
D、无输出
这个,当时想错了,正确答案是:B
当你试图将错误类型的对象存储到一个对象数组时抛出的异常
3. 下面关于变量及其范围的陈述哪些是对的? ( )
A、实例变量是类的成员变量
B、实例变量用关键字 static 声明
C、在方法中定义的局部变量在该方法被执行时创建
D、局部变量在使用前必须被初始化
答案是ACD,用static声明的是类变量。
4. 有关ORACLE存储过程说法正确的是?( )
A、可以在查询语句中调用储存过程
B、存储过程是一次编译多次使用
C、存储过程通过传出参数的形式对外提供数据传递
D、存储过程中不能调用其他的存储过程
答案是:BC,算是概念性的东西。
5. 下面有关java代码安全性的叙述哪些是对的是?( )
A、字节码校验器加载查询执行需要的所有类
B、运行时解释器执行代码
C、在运行时,字节码被加载,验证然后在解释器里面运行
D、类加载器通过分离本机文件系统的类和从网络导入的类增加安全性
答案是BCD。类加载器(class loader)加载程序运行所需要的所有类,它通过区分本机文件系统的类和网络系统导入的类增加安全性,
这可以限制任何的特洛伊木马程序,因为本机类总是先被加载,一旦所有的类被加载完,执行文件的内存划分就固定了,
在这个时候特定的内存地址被分配给对应的符号引用,查找表(lookuo table)也被建立,由于内存划分发生在运行时,
解释器在受限制的代码区增加保护防止未授权的访问;然后字节码校验器(byte code verifier)进行校验,
主要执行下面的检查:类符合JVM规范的类文件格式,没有违反访问限制,代码没有造成堆栈的上溢或者下溢,
所有操作 代码的参数类型都是正确的,没有非法的数据类型转换(例如将整型数转换成对象类型)发生;
校验通过的字节码被解释器(interpreter)执行,解释器在必要时通过运行时系统执行对底层硬件的合适调用。后三个答案是SL275中的原话。
6. DDL,DML
DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
DML(data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。
这里有个TRUNCATE 需要需要注意下,TRUNCATE是一个DDL语言:
语法:TRUNCATE TABLE table;
表格里的数据被清空,存储空间被释放。
运行后会自动提交,包括之前其它未提交的会话,因而一旦清空无法回退。
只有表格的创建者或者其他拥有删除任意表格权限的用户(如DBA)才能清空表格。
下面讲一下truncate命令和delete的区别:
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
4、TRUNCATE不能触发任何DELETE触发器。
5、不能授予任何人清空他人的表的权限。
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
7、不能清空父表。 TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE 在默认是 DROP STORAGE
当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。
REUSE STORAGE不会缩短表或者调整NEXT参数在特殊情况下使用 REUSE ST
DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。
并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
7. trim,ltrim,rtrim
参考网址:
http://www.adp-gmbh.ch/ora/sql/trim.html
http://www.cnblogs.com/lanzi/archive/2013/01/14/2859666.html
trim ( string-to-be-trimmed );
trim ( trim-char from string-to-be-trimmed );
trim ( [ leading | trailing | both ] [ trim-char ] from string-to-be-trimmed );
ltrim ( string-to-be-trimmed [, trimming-char-set ] );
rtrim ( string-to-be-trimmed [, trimming-char-set ] );
示例:
#1
select '>' ||
trim (' removing spaces at both sides ') ||
'<' "Spaces removed"
from dual;
Spaces removed
-------------------------------
>removing spaces at both sides<
#2
select '>' ||
trim (both from ' removing spaces at both sides ') ||
'<' "Spaces removed"
from dual;
Spaces removed
-------------------------------
>removing spaces at both sides<
#3
select '>' ||
trim (both '*' from '***removing stars at both sides***') ||
'<' "Stars removed"
from dual;
Stars removed
------------------------------
>removing stars at both sides<
#4
select '>' ||
trim (leading from ' removing leading spaces ') ||
'<' "Leading spaces removed"
from dual;
Leading spaces removed
----------------------------
>removing leading spaces <
#5
select '>' ||
ltrim (' removing leading spaces ') ||
'<' "Leading spaces removed"
from dual;
Leading spaces removed
----------------------------
>removing leading spaces <
#6
select '>' ||
rtrim (' removing ? trailing ! punctuation !?!!??..', '!?.') ||
'<' "Trailing punctuation removed"
from dual;
Trailing punctuation removed
---------------------------------------
> removing ? trailing ! punctuation <