...接上篇

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 经典题目分析(二)的更多相关文章

  1. Oracle Certified Java Programmer 经典题目分析(一)

    Given: 1. public class returnIt { 2. returnType methodA(byte x, double y){ 3. return (short) x/y * 2 ...

  2. Java多线程经典题目(医院挂号)

    题目 实现一个医院的挂号机系统,要求:有多台挂号机同时运行,此时无论有多少患者挂号,要求都能挂到不同 的号码,并且要求实现当意外断电之后,下一次恢复还能从上次结束号码继续挂号? * synchroni ...

  3. Java面试经典题目合集

    32 1.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法与类相关,可以在 ...

  4. c++指针经典题目分析

    首先看一下题目,下列程序会在那一行崩溃,程序如下: #include<iostream> using namespace std; struct S{ int i; int *p; }; ...

  5. java常见面试题目(二)

    部分没有答案可以自行百度. 1.myeclipse与eclipse的区别. 2.说说对maven或者SVN的理解. 3.类的加载过程 (创建对象的过程)  1)子父类里静态属性 赋上默认初始值 如果有 ...

  6. Java线程池使用和分析(二) - execute()原理

    相关文章目录: Java线程池使用和分析(一) Java线程池使用和分析(二) - execute()原理 execute()是 java.util.concurrent.Executor接口中唯一的 ...

  7. Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理

    相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...

  8. Java 序列化和反序列化(二)Serializable 源码分析 - 1

    目录 Java 序列化和反序列化(二)Serializable 源码分析 - 1 1. Java 序列化接口 2. ObjectOutputStream 源码分析 2.1 ObjectOutputSt ...

  9. 201521123061 《Java程序设计》第十二周学习总结

    201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

随机推荐

  1. hbase 分页过滤(新老API的差别)

    在hbase2.0以前分页过滤必须以上一次的最后一行+空字节数组作为下一次的起始行, 因为scan扫描的时候是包含起始行的,为了既能准确定位起始行,但又不重复把上一次的最末一行加入下一页, 所以,权威 ...

  2. [CF1110H]Modest Substrings

    description CodeForces 定义一个正整数\(x\)是合适的当且仅当\(l\le x\le r\),其中\(l,r\le 10^{800}\). 找到一个长度为\(n\)的数字串,使 ...

  3. 洛谷 P2751 [USACO4.2]工序安排Job Processing 解题报告

    P2751 [USACO4.2]工序安排Job Processing 题目描述 一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B.每个操作只有一些机器能够完成. 上图显示了按照下述方式 ...

  4. 解题:USACO14MAR Sabotage

    题面 题外话:我的实数二分有什么问题=.= 仍然(我为什么要这么说)是二分答案,如何检查呢?将所有的数减去二分出来的$mid$后求和得到和$sum$,然后如果在减出来的数列中能找出一段大于$sum$的 ...

  5. CMake 案例

    单个源文件 # CMake 最低版本号要求 cmake_minimum_required (VERSION 3.11) # 项目信息 project (Demo) # 指定生成目标 add_execu ...

  6. Express入门( node.js Web应用框架 )

    运用Express框架构建简单的NodeJS应用 Start  确认安装了NodeJS之后(最新的Node安装好后NPM也会自带安装了),npm可理解为nodejs的一个工具包.可通过查看版本来检测是 ...

  7. java程序文件读取与保存实例代码

    class RadioHere extends JFrame implements ActionListener { private JTextArea ta=new JTextArea(10,20) ...

  8. Ansible7:Playbook常用模块

    目录 template set_fact pause wait_for assemble add_host group_by debug fail playbook的模块与在ansible命令行下使用 ...

  9. PHP判断变量类型和类型转换的三种方式

    前言: PHP 在变量定义中不需要(不支持)明确的类型定义.变量类型是根据使用该变量的上下文所决定的.所以,在面对页码跳转.数值计算等严格的格式需求时,就要对变量进行类型转换. 举例如下: $foo ...

  10. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...