Oracle Certified Java Programmer 经典题目分析(二)
...接上篇
what is reserved(保留) words in java?
A. run
B. default
C. implement
D. import
Java 关键字列表 (依字母排序 共51组),所有的关键字都是小写,在MyEclipse中都会显示不同的颜色:
abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if,
implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch,
synchronized, this, throw, throws, transient, try, void, volatile, while
用于类的接口声明:class extends implements interface
包引入和包声明:import package
数据类型:boolean byte char short int long float double
某些数据类型的可先值:false true null
流程控制:break case continue default for do while if else return switch
异常处理:catch finally throw throws try
修饰符:abstract final native private protected public static synchronized transient volatile
操作符:instanceof
创建对象:new
引用:this super
方法返回类型:void
Java 保留字列表 (依字母排序 共14组) :
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var , goto ,const,null
总结:
正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的。Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
1)public class Test{
2) public static void main(String[] args){
3) String foo=args[1];
4) Sring bar=args[2];
5) String baz=args[3];
6) }
7) }
java Test Red Green Blue
what is the value of baz?
A. baz has value of ""
B. baz has value of null
C. baz has value of "Red"
D. baz has value of "Blue"
E. baz has value of "Green"
F. the code does not compile
G. the program throw an exception
本题考查Java的不定长参数列表相关知识,如果一个方法的参数定为不定参数的话,这个参数可以根据参数个数动态生成一个数组,然后传入方法执行。main方法是一个典型的具有不定长参数列表的方法,一般来说不定长参数列表有两种形式:
1)public static void test(Object... objs){...}
2)public static void main(String[] args){...}
使用不定长参数也要注意两点:
1)方法的参数列表中最多只有一个不定长度的参数。因为如果有多于一个不定长度的参数,当真正调用这个方法的时候,JVM、将不知道前面的不定长度参数有多长, 下一个参数是从哪里开始;
2)不定长度的数组的位置必须是最后一个参数,不然不能通过编译。 因为如果不是最后一个参数作为不定长参数,那么编译器不知道不定长度参数的长度,无法确定从哪里开始下一个参数。
which three are valid declaraction of a float?
A. float foo= -1;
B. float foo=1.0;
C. float foo=42e1;
D. float foo=2.02f;
E. float foo=3.03d;
F. float foo=0x0123;
float是单精度类型,精度是6位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字节的存储空间 ,double是双精度类型,精度是15位有效数字,取值范围是10的-308次方到10的308次方,double占用8个字节的存储空间,当你不声明的时候,默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f;对于本题B会默认double类型,E会自动提升类型自不必说,C超出float定义范围也不合法。
1)public class Foo{
2) public static void main(String args[]){
3) String s;
4) System.out.println("s="+s);
5) }
6) }
what is the result?
A. The code compiles and “s=” is printed.
B. The code compiles and “s=null” is printed.
C. The code does not compile because string s is not initialized.
D. The code does not compile because string s cannot be referenced.
E. The code compiles, but a NullPointerException is thrown when toString is called.
在Java中出于域安全性的考虑,成员变量在申明的时候没有初始化,编译时会自动帮你初始化,基本类型初始化为0,引用类型初始化为null,字符会初始化为' ';在变量作为局部变量时,如果声明时没有初始化则会编译出错!
float f=4.2F;
Float g=new Float(4.2F);
Double d=new Double(4.2);
Which are true?
A. f==g
B. g==g
C. d==f
D. d.equals(f)
E d.equals(g)
F. g.equals(4.2);
在Java中"=="在基本类型比较的时候比较的是值,在引用类型进行比较时比较的是引用句柄的地址;equals方法是Object对象中的方法,是java中所有对象均具有的方法,它比较的是对象的地址和值。一般在重写equals方法时应当符合离散数学关于相等的理论,即:
1、自反性:对任意引用值X,x.equals(x)的返回值一定为true.
2、对称性:对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3、传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true
4、一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变
5、非空性:任何非空的引用值X,x.equals(null)的返回值一定为false
1. public class test(
2. public int aMethod(){
3. static int i=0;
4. i++;
5. return I;
6. )
7. public static void main (String args[]){
8. test test = new test();
9. test.aMethod();
10. int j = test.aMethod();
11. System.out.printIn(j);
12. }
13. } What is the result?
A. Compilation will fail.
B. Compilation will succeed and the program will print “0”.
C. Compilation will succeed and the program will print “1”.
D. Compilation will succeed and the program will print “2”.
(1)Java静态对象和非静态对象有什么区别?
比对如下:
静态对象 非静态对象
拥有属性: 是类共同拥有的 是类各对象独立拥有的
内存分配: 内存空间上是固定的 空间在各个附属类里面分配
分配顺序: 先分配静态对象的空间 继而再对非静态对象分配空间,也就是初始化顺序是先静态再非静态.
java静态对象到底有什么好处?
A,静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄成静态是个好方法。 非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同类对象的数据。
B,引用方便。直接用 类名.静态方法名 或者 类名.静态变量名就可引用并且直接可以修改其属性值,不用get和set方法。
C,保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。有效减少多余的浪费。
D,static final用来修饰成员变量和成员方法,可简单理解为“全局常量”。对于变量,表示一旦给值就不可修改;对于方法,表示不可覆盖。
(2)静态变量、静态方法和静态块
通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象(跟类是否有static修饰无关)。
你可以将方法和变量都声明为static。static 成员的最常见的 例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。 声明为static的变量实质上就是全局变量。声明为static的方法有以下几条限制: ·
A,它们仅能调用其他的static 方法
B,它们只能访问static数据
C,它们不能以任何方式引用this 或super(this涉及到对象,super 与继承有关)
(3)外部使用静态变量或者静态方法
在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用,你只要在类的名字后面加点号运算符即可。可以看到,这种格式与通过对象引用变量调用非static方法或者变量的格式类似。这就是Java 如何实现全局功能和全局变量的一个控制版本。示例:
(4)静态类是指在一个类的内部,又定义了一个用static修饰的类。那静态类的功能又体现在哪里呢?可以用C中的结构体内嵌结构体来理解,其次需要了解2个概念:内部类和静态修饰符static。
A,首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。
B,静态都是用来修饰类的内部成员的。比如静态方法、静态成员变量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,它可以直接被用 外部类名+内部类名 获得。
Oracle Certified Java Programmer 经典题目分析(二)的更多相关文章
- Oracle Certified Java Programmer 经典题目分析(一)
Given: 1. public class returnIt { 2. returnType methodA(byte x, double y){ 3. return (short) x/y * 2 ...
- Java多线程经典题目(医院挂号)
题目 实现一个医院的挂号机系统,要求:有多台挂号机同时运行,此时无论有多少患者挂号,要求都能挂到不同 的号码,并且要求实现当意外断电之后,下一次恢复还能从上次结束号码继续挂号? * synchroni ...
- Java面试经典题目合集
32 1.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法与类相关,可以在 ...
- c++指针经典题目分析
首先看一下题目,下列程序会在那一行崩溃,程序如下: #include<iostream> using namespace std; struct S{ int i; int *p; }; ...
- java常见面试题目(二)
部分没有答案可以自行百度. 1.myeclipse与eclipse的区别. 2.说说对maven或者SVN的理解. 3.类的加载过程 (创建对象的过程) 1)子父类里静态属性 赋上默认初始值 如果有 ...
- Java线程池使用和分析(二) - execute()原理
相关文章目录: Java线程池使用和分析(一) Java线程池使用和分析(二) - execute()原理 execute()是 java.util.concurrent.Executor接口中唯一的 ...
- Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理
相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...
- Java 序列化和反序列化(二)Serializable 源码分析 - 1
目录 Java 序列化和反序列化(二)Serializable 源码分析 - 1 1. Java 序列化接口 2. ObjectOutputStream 源码分析 2.1 ObjectOutputSt ...
- 201521123061 《Java程序设计》第十二周学习总结
201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...
随机推荐
- UESTC 1832
今天比赛的时候做的一个题目.感觉这个题目不错. 题目描述: Description In a laboratory, an assistant, Nathan Wada, is measuring w ...
- xml 类详解
- poj 2185
http://poj.org/problem?id=2185 题意:求最小的模式块,使其无限扩展后包含给你的矩阵块(看别人题解才懂的题意): 分析:假设存在一个模式块可以满足上述条件,那么必然存在一个 ...
- 再谈MySql索引
一.索引简介 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 索引分单列索引(主键索引.唯一索引.普通索引)和组合索引.单列索引,即一个索引只包含单个列 ...
- Mysql索引机制B+Tree
1.问题引入 有一个用户表,为了查询的效率,需要基于id去构建索引.构建索引我们需要考虑两个方面的问题,1个是查询的效率,1个是索引数据的存储问题.该表的记录需要支持百万.千万.甚至上亿的数据量,如果 ...
- Beta 完结撒花 —— 事后诸葛亮
写在前面 林燊大哥 团队成员 短学号 名 2325 燊(队长) 1232 志豪 1131 喜源 2523 宏岩 2230 恺翔 2509 钧昊 2507 俞辛 2501 宇航 2502 柏涛 项目宣传 ...
- 命令行Scp的使用----远程拷贝文件
1.用CRT分别连上两台需要传输文件的linux系统服务器,并检查防火墙是否关闭. 查看防火墙状态: /etc/init.d/iptables status 若防火墙启用,暂时关闭防火墙: /etc/ ...
- shell 中的流程控制关键字
if...else if [ $1x == "ab"x ]; then echo "you had enter ab" elif [ $1x == " ...
- Zabbix应用一:Zabbix安装
1.准备zabbix依赖环境:LNMP 依赖包安装参考http://www.osyunwei.com/archives/10057.html. cmake安装mysql: cmake . -DCMAK ...
- unity还原three——顶点,三角面,uv
public class Geometry { public Geometry(string name, Data data, Hashtable hash) { Debug.Log("解析 ...