60道SCJP考试真题精解

  1. 短整型的数据类型的长度是16 bits,有符号。另外需要说明的是java中所有的整(Integral)数(包括byte,short,int,long)全是有符号的。

  2. Java的标识符可以以一个Unicode字符,美元符($)开始,下滑线(_),后续字符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保留字。

  3. 十六进制数以0x开头,long型数以L(大小写均可,一般使用大写,因为小写的l和数字1不易区分)。

  4. String类型可以直接使用+进行连接运算。

  5. String是一种Object,而不是简单的字符数组,不能使用下标运算符取其值的某个元素。

  6. toUpperCase()方法是String对象的一个方法,作用是将字符串的内容全部转换为大写并返回转换后的结果(String类型)。

  7. String类型不能进行减(-)运算。

  8. 在静态方法中不能使用类中的非静态成员。

  9. private成员,在类外不能直接引用。

  10. BorderLayout将容器划分为五个部分,容器大小的改变不会影响其中的组件的位置而是影响他们的大小。

  11. FlowLayout根据放入其中的组件的最合适大小调整组件的位置,根据组件放入的顺序安排,一行不能容纳时放入下一行,因此容器的大小改变可能改变组件的位置。

  12. CardLayout显示放入该容器的当前页中的组件,一次显示一个,容器大小的改变不能影响其中组件的位置。

  13. GridLayout将容器划分为固定的网格,组件加入后占据一个单元,各组件的相对位置不会因为容器的大小变化而变化,改变的只是组件的大小。

  14. 1)public void create() {2) Vector myVect;3) myVect = new Vector();4) }
    //第二行不会为变量myVect分配内存空间。
    //第三行创建一个Vector类对象并为一个Vector类对象分配内存空间。
    
    /*SL-275中指出:要为一个新对象分配空间必须执行new Xxx()调用,new调用执行以下的操作:1.为新对象分配空间并将其成员初始化为0或者null。2.执行类体中的初始化。(例如在类中有一个成员声明int a=10;在第一步后a=0 ,执行到第二步后a=10)3.执行构造函数。4.变量被分配为一个到内存堆中的新对象的引用。*/
    
  15. Java中有true,但是这也不是关键字而是字面量(literal)。

  16. Java中不需要sizeof操作符,所有的类型(原始类型)的大小都是固定的。

  17. const是java中未被使用的关键字。

  18. equals()方法判定引用值是否指向同一对象。

    /*equals()方法是可以被重载的,但是按照java语言的本意来说:如果没有重写(override)新类的equals(),则该方法和 == 操作符一样在两个变量指向同一对象时返回真,但是java推荐的是使用equals()方法来判断两个对象的内容是否一样,就像String类的equals()方法所做的那样:判定两个String对象的内容是否相同,而==操作符返回true的唯一条件是两个变量指向同一对象。*/
    
  19. 类File重写方法equals()在两个分立的对象的内容和类型一致时返回true。

  20. 1) class Person {2)   public void printValue(int i, int j) {/*…*/ }3)     public void printValue(int i){/*...*/ }4) }5) public class Teacher extends Person {6)   public void printValue() {/*...*/ }7)   public void printValue(int i) {/*...*/}8)   public static void main(String args[]){9)       Person t = new Teacher();10)       t.printValue(10);11)    }12) }
    

    ​ 变量t是一个Person对象,但是它是用Teacher实例化的,这个问题涉及到java的编译时多态和运行时多态的问题,就编译时多态来说,t实际上是一个Person类,这涉及到类型的自动转换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转换,反之则需要

    ​ 进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对t调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据t实际指向的类型调用对应的方法,对于本例来说,t.print(10)将调用t实际指向的Teacher类的对应方法。在java中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。

  21. Java的原始数据类型一共就八个,分别是:byte,short,int,long,boolean,char,float,double。注意这些是大小写敏感的,而Boolean是booelan的封装类(wrapper class)。

  22. Java的移位操作符一共有三种,分别是”>>”,”>>>”,”<<”,执行的操作分别是有符号右移,无符号右移,左移,有符号右移的意思是说移入的最高位和原最高符号位相同,无符号右移是移入位始终补零,左移时最低位始终补零,最高位被舍弃。移位操作符另一个非常值得注意的特点是其右操作数是取模运算的,意思是说对于一个int型数据而言,对它移位32位的结果是保持不变而非变成零,即:a>>32的结果是a而不是0,同理,对long型数是对右操作数取64的模,a>>64==a;还有一点需要注意的是移位操作符”>>>”只对int型和long型有效,对byte或者short的操作将导致自动类型转换,而且是带符号的。

  23. java是多线程的语言,多个线程可以”同时”访问同一数据区,而在处理某些数据时不希望其它的线程修改那些数据的值或者某些操作是不可打断的,要做到这个,可以使用synchronized关键字声明这一点。

  24. 在java中,程序运行的入口就是main()方法,它必须是这样的形式:public static void main(String args[])。但是严格来讲main()方法的返回类型是void还可以加上int和boolean,因为并没有限定是程序入口的main()方法,而main()方法是可以重载的。一般意义上的main()当然就是指我们刚开始所说的main()方法了。

  25. 对于TextField的该种形式的构造函数来说,前一个参数是文本域中初始的字符串的显示值,而后一个是推荐的显示宽度,以列数表示,在构造文本域的时候会将这个大小设置为最佳大小,如果容器的限制使得文本域不能显示这么多也没有办法,一般来说是比这个大小大的,而且即使宽度很小,你也可以在文本域的一行中输入很长的字符串,只有你不使用回车,在超过显示宽度后文本域会自动出现水平滚动条(没有被设置为关闭,缺省是不关闭的),而文本域的缺省编辑方式是可编辑的,一个文本域只能使用一种字体,这个字体可以在运行的过程中动态的改变,但是文本域中的所有字符串都将使用这个字体显示。

  26. Java语言将内存分配和释放的工组交给了自己,程序员不必做这些工作,它提供一个系统级的线程跟踪每个内存的分配,在JVM的空闲处理中,垃圾收集线程将检查和释放不再使用的内存(即可以被释放的内存)。垃圾收集的过程在java程序的生存期中是自动的,不需要分配和释放内存,也避免了内存泄漏。可以调用System.gc()方法建议(suggest)JVM执行垃圾收集以使得可被释放的内存能立即被使用,当此方法返回的时候,JVM已经做了最大的努力从被丢弃的对象上回收内存空间。程序员不能指定收集哪些内存,一般而言也不用关心这个问题,除非是程序的内存消耗很大,特别是有很多临时对象时可以“建议“进行垃圾收集以提高可用内存。需要指出的是调用System.gc()方法不能保证JVM立即进行垃圾收集,而只能是建议,因为垃圾收集线程的优先级很低(通常是最低的)。

  27. 浮点数的赋值是带有小数点的数字缺省是double型的,如果在浮点数后面加f或者F则是float,后面加d或者D则是double,科学计数法形式的浮点数也是double型的,而double的精度比float高,将一个高精度的double赋值给一个低精度的float时需要进行强制类型转换,反之则不需要。

  28. 类中有几种变量,分别是:局部变量(英文可以为:local\automatic\temporary\stack variable)是定义在方法里的变量;实例变量(英文为:instance variable)是在方法外而在类声明内定义的变量,有时也叫成员变量;类变量(英文为:class variable)是用关键字static声明的实例变量,他们的生存期分别是:局部变量在定义该变量的方法被调用时被创建,而在该方法退出后被撤销;实例变量在使用new Xxxx()创建该类的实例时被创建,而其生存期和该类的实例对象的生存期相同;类变量在该类被加载时被创建,不一定要用new Xxxx()创建,所有该类的实例对象共享该类变量,其生存期是类的生存期。任何变量在使用前都必须初始化,但是需要指出的是局部变量必须显式初始化,而实例变量不必,原始类型的实例变量在该类的构造方法被调用时为它分配的缺省的值,整型是0,布尔型是false,而浮点型是0.0f,引用类型(类类型)的实例变量的缺省值是null(没有进行实际的初始化,对它的使用将引起NullPointException),类变量的规则和实例变量一样,不同的是类变量的初始化是在类被加载时。

  29. 在同一个类的不同构造方法中调用该类的其它构造方法需要使用this(…)的形式,而且必须是在构造方法的第一行调用,这个和普通的方法重载调用的方式不同,普通的方法可以直接使用方法名加参数来调用,而且调用位置没有限制

  30. 在父类型的构造函数被调用前不能引用类的成员。构造方法是一个类对象实例化的起点(虽然严格来说首先执行的并不是构造方法的第一个语句,而是内存的分配),因此在构造方法中不能将成员作为参数引用。

  31. 对原始数据类型的变量的声明将为之分配内存并赋予一个缺省值,而非原始数据类型的变量必须用new Xxxx()分配内存及初始化。但是严格来讲,因为只有原始类型的实例变量和类变量的声明在类对象被创建/类被加载时完成内存的自动分配,而原始类型的局部变量必须显式初始化,从这点来看原始类型的局部变量没有被自动分配内存,SL275中只提出了非原始数据类型的变量必须使用new Xxxx()完成内存的分配而没有指出原始数据类型的变量是否在声明时即自动进行内存分配,而从局部变量不能在显式初始化前使用这点来看在声明时没有进行内存分配。

  32. 类文档的内容主要是:类层次、类及用途描述、成员变量列表、构造方法列表、成员方法列表、从类层次上继承的方法列表、成员变量的详细说明、构造方法详细说明、成员方法详细说明。

  33. 逻辑操作符(logical operator)的“与”应该是&&,而&是位逻辑操作符(bitwise logical operator)的“与”,使用的对象不一样,逻辑操作符的“与”的左右操作数都应该是布尔型(logical boolan)的值,而位逻辑操作符的左右操作数都是整型(integral)值。

  34. SL275中描述的Java程序运行的过程是这样的:类加载器(class loader)加载程序运行所需要的所有类,它通过区分本机文件系统的类和网络系统导入的类增加安全性,这可以限制任何的特洛伊木马程序,因为本机类总是先被加载,一旦所有的类被加载完,执行文件的内存划分就固定了,在这个时候特定的内存地址被分配给对应的符号引用,查找表(lookuo table)也被建立,由于内存划分发生在运行时,解释器在受限制的代码区增加保护防止未授权的访问;然后字节码校验器(byte code verifier)进行校验,主要执行下面的检查:类符合JVM规范的类文件格式,没有违反访问限制,代码没有造成堆栈的上溢或者下溢,所有操作代码的参数类型都是正确的,没有非法的数据类型转换(例如将整型数转换成对象类型)发生;校验通过的字节码被解释器(interpreter)执行,解释器在必要时通过运行时系统执行对底层硬件的合适调用。

  35. 运行时解释器执行代码。

  36. 在运行时,字节码被加载,验证然后在解释器里面运行。

  37. 类加载器通过分离本机文件系统的类和从网络导入的类增加安全性。

  38. 实例变量在类的一个实例构造时完成初始化,而且在类的静态方法中不能直接访问类的非静态成员而只能访问类成员,类的普通方法可以访问类的所有成员和方法,而静态方法只能访问类的静态成员和方法,因为静态方法属于类,而普通方法及成员变量属于类的实例,类方法(静态方法)不能使用属于某个不确定的类的实例的方法和变量,在静态方法里面没有隐含的this,而普通方法有。

  39. 方法重载的规则是:一、参数列表必须不同,个数的不同完全可以,如果个数相同则参数类型的不同不能引起歧意,例如int 和long,float和double就不能作为唯一的类型不同;二、返回值可以不同,但是不能是重载时唯一的不同点(这点和c++中不同,c++中返回类型必须一致)。

  40. 方法重写发生在类继承时,子类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样时才能说是重写,否则就是重载。

  41. java中方法重写的一个重要而且容易被忽略的规则是重写的方法的访问权限不能比被重写的方法的访问权限低!重写的另一个规则是重写的方法不能比被重写的方法抛弃(throws)更多种类的异常,其抛弃的异常只能少,或者是其子类,不能以抛弃异常的个数来判断种类,而应该是异常类层次结果上的种类。

  42. 修饰符的顺序,一个最完整的修饰是public static final int varial_a=100;这个顺序不能错

  43. Java中的package语句必须是源文件中除去说明以外的第一条语句,导入包语句可以有几个,但是必须位于package语句之后,其它类定义之前,一个源文件中可以有几个类,但最多只能有一个是public的,如果有,则源文件的文件名必须和该类的类名相同。

  44. ==操作符比较的是操作符两端的操作数是否是同一个对象,而String的equals()方法比较的是两个String对象的内容是否一样,其参数是一个String对象时才有可能返回true,其它对象都返回假。需要指出的是由于s和t并非使用new创建的,他们指向内存池中的同一个字符串常量,因此其地址实际上是相同的

  45. 将int,short,byte赋值给long型时不需要显式的类型转换,反之,将long型数赋值给byte,short,int型时需要强制转换

  46. 流布局管理器(FlowLayout)将根据框架的大小随时调整它里面的组件的大小,包括高度和宽度,这个管理器不会约束组件的大小,而是允许他们获得自己的最佳大小,一行满了以后将在下一行放置组件;卡片管理器(CardLayout)一次显式一个加入的组件(根据加入时的关键字);网格管理器(GridLayout)将容器划分为固定的网格,容器大小的改变将影响所有组件的大小,每个组件的大小都会同等地变化;边界管理器(BorderLayout)将容器划分为五个区域,分为东南西北和中间,东西区域的宽度为该区域里面组件的最佳宽度,高度为容器的高度减去南北区域的高度,这是一个可能变化的值,而南北区域的宽度为容器的整个宽度,高度为组件的最佳高度,中间区域的高度为容器的高度减去南北区域的高度,宽度为容器的宽度减去东西区域的宽度。

  47. The variable "result" is boolean. Which expressions are legal?A. result = true;B. if ( result ) { // do something... }C. if ( result!= 0 ) { // so something... }D. result = 1(ab)
    /* Java的boolean不同于c或者c++中的布尔值,在java中boolean值就是boolean值,不能将其它类型的值当作boolean处理。*/
    
  48. Class Teacher and Student are subclass of class Person.Person p;Teacher t;Student s;p, t and s are all non-null.if(t instanceof Person) { s = (Student)t; }What is the result of this sentence?A. It will construct a Student object.B. The expression is legal.C. It is illegal at compilation.D. It is legal at compilation but possible illegal at runtime.(c)
    /*instanceof操作符的作用是判断一个变量是否是右操作数指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。此题中的if语句的判断没有问题,而且将返回真,但是后面的类型转换是非法的,因为t是一个Teacher对象,它不能被强制转换为一个Student对象,即使这两个类有共同的父类。如果是将t转换为一个Person对象则可以,而且不需要强制转换。这个错误在编译时就可以发现,因此编译不能通过。*/
    
  49. List l = new List(6,true);
    /*List组件的该构造方法的第一个参数的意思是它的初始显式行数,如果该值为0则显示4行,第二个参数是指定该组件是否可以多选,如果值为true则是可以多选,如果不指定则缺省是不能多选。*/
    
  50. InputStream是所有输入流的父类

  51. 方法void flush()是缓冲输出流的基本方法,作用是强制将流缓冲区中的当前内容强制输出。

  52. Java基础API中的FilterInputStream 的已知子类有:BufferedInputStream, CheckedInputStream, CipherInputStream, DataInputStream, DigestInputStream, InflaterInputStream, LineNumberInputStream, ProgressMonitorInputStream, PushbackInputStream 。

  53. FilterInputStream的构造方法只有一个,其参数是一个InputStream对象。

  54. switch语句的用法,switch的判断的条件必须是一个int型值,也可以是byte、short、char型的值,case中需要注意的是一个case后面一般要接一个break语句才能结束判断,否则将继续执行其它case而不进行任何判断,如果没有任何值符合case列出的判断,则执行default的语句,default是可选的,可以没有,如果没有default而又没有任何值匹配case中列出的值则switch不执行任何语句。

  55. TimedOutException 不是一个RuntimeException。下面的哪些声明可以被加入第一行完成此方法的声明。

    如果程序在运行的过程中抛出异常,而这个异常又不是RuntimeException或者Error,那么程序必须捕获这个异常进行处理或者声明抛弃(throws)该异常,捕获异常可以使用try{}catch(){}语句,而抛弃异常在方法声明是声明,在方法的声明后面加上throws XxxxException,抛弃多个异常时在各异常间使用逗号(,)分隔,题目中的程序在运行时抛出的不是一个RuntimeException,所有必须捕获或者抛弃,而程序又没有捕获,所有应该在方法声明中声明抛弃。由于Exception是所有异常的父类,所有当然也可以代表RuntimeException了。

56.一个新创建的线程并不是自动的开始运行的,必须调用它的start()方法使之将线程放入可运行态(runnable state),这只是意味着该线程可为JVM的线程调度程序调度而不是意味着它可以立即运行。线程的调度是抢先式的,而不是分时间片式的。具有比当前运行线程高优先级的线程可以使当前线程停止运行而进入就绪状态,不同优先级的线程间是抢先式的,而同级线程间是轮转式的。一个线程停止运行可以是因为不同原因,可能是因为更高优先级线程的抢占,也可能是因为调用sleep()方法,而即使是因为抢先而停止也不一定就进入可运行队列的前面,因为同级线程是轮换式的,它的运行可能就是因为轮换,而它因抢占而停止后只能在轮换队列中排队而不能排在前面。

57.Thread的API文档中的说明是该方法恢复被挂起的(suspended)线程。该方法首先调用该线程的无参的checkAccess() 方法,这可能在当前线程上抛出SecurityException 异常,如果该线程是活着的(alive)但是被挂起(suspend),它被恢复并继续它的执行进程。

60道SCJP考试真题精解相关推荐

  1. java scjp 试题_JAVA认证历年真题:SCJP考试真题和解析

    1. Which of the following range of short is correct?A. -27 -- 27-1 B. 0 -- 216-1 C. ?215 -- 215-1 D. ...

  2. 三个不等_2道真题,讲透「基本不等式」的使用原则 | 真题精讲-11

    「不等式」和「最值」之间有着非常天然的强联系:基本不等式有3个非常明显的形式特征:知识点的用法比知识点本身更重要. 先发福利:这里有6场「高考数学」系列Live的讲义,全拿去,送给你--<高考数 ...

  3. java求sin函数咋写_5类“隐含条件”,题干不写但是你要会用(解三角形知识整合,建议收藏)| 真题精讲-16...

    有的题目本身蕴含了一些*不言自明.无需特别指明*的条件,对于「解三角形」这个板块而言,这种隐藏条件一共有五条. # 先发个福利:我为你准备了全国各个省份5年高考数学真题的精排版讲义:< 121套 ...

  4. 全国计算机信息处理,全国计算机技术与软件专业技术资格(水平)考试《信息处理技术员(初级)》复习全书【核心讲义+历年真题详解】...

    一.精准对标考纲要求 本资料严格对标<信息处理技术员>考试大纲要求,覆盖了信息技术基本概念.信息理基础知识.计算机系统基础知识.操作系统使用和文件管理的基础知识.文字处理基础知识.电子表格 ...

  5. 致广大关注《网络规划设计师考试案例梳理、真题透解与强化训练》读者朋友的一封信...

    致广大关注<网络规划设计师考试案例梳理.真题透解与强化训练>读者朋友的一封信 书是人类进步的阶梯,读书是增强个人软实力的佳径. 好读书是你的美德,读好书是你的选择,书好读是我们的承诺! 如 ...

  6. ★核心关注点_《信息系统项目管理师考试考点分析与真题详解》

    ★核心关注点_<信息系统项目管理师考试考点分析与真题详解> 真诚感谢你选用<信息系统项目管理师考试考点分析与真题详解>作为高级项管的辅导用书.对于使用该书的读者们,在备考201 ...

  7. 勘误表《网络规划设计师考试考点分析与真题详解》

    <网络规划设计师考试考点分析与真题详解>勘误表 首先,对本书在编写.校对.排版.印刷环节中的错漏,而给各位读者带来不便之处,深表最诚挚的歉意!也恳请各位专家.读者在使用过程中多提宝贵意见及 ...

  8. 2011年给力新作——《数据库系统工程师考试案例梳理、真题透解与强化训练》...

    2011年给力新作--<数据库系统工程师考试案例梳理.真题透解与强化训练> 本书是为有志于通过全国计算机专业技术资格考试(数据库系统工程师)的读者编写的一本针对性强.高效的案例辅导用书,并 ...

  9. 新书预告《网络规划设计师考试考点分析与真题详解》

    新书预告<网络规划设计师考试考点分析与真题详解> 一年前,出版社有意与我约<网络规划设计师考试考点分析与真题详解>稿件,鉴于网络规划设计师是一门刚开考的考试科目,从一个事物的生 ...

  10. 《网络管理员考试案例梳理、真题透解与强化训练》复习重点

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   <网 ...

最新文章

  1. centos 禁用root登录
  2. 配置vsftpd的遇到的坑及搭建虚拟账户
  3. c++ 公有继承的赋值兼容规则
  4. 字节一面,被连问 MySQL 索引,脸都问绿了。。。
  5. 这个公式竟然堪称数学界的画家......
  6. 网页设计html对联样式代码,纯CSS做对联广告代码
  7. 服务器如何防止DDoS攻击?
  8. linux连接交换机命令,Linux连接路由器交换机防火墙Console接口的5个实用命令
  9. 空间直角坐标转大地坐标
  10. 求两个数的最小公倍数; 两种方法
  11. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类
  12. FTP服务器的上传与下载
  13. ChatGPT ,能替代程序员吗?
  14. Rational Rose 建立图书管理系统模型UML
  15. php select只有一条_读取数据库如何只取出一条数据????请赐教!
  16. UI设计界面设计培训班
  17. 如何获取IMEI号和MEID号
  18. 推荐几个美女程序媛和大佬的公众号!
  19. 一、常见音频编码格式以及帧长计算
  20. RS140服务器IS8XM主板通过Intel ATM远程冷启动,未接本地显示器时远程控制台无显示,以及多个bug

热门文章

  1. 搬运视频抖音封号md5视频修改工具
  2. 昆仑通态复制的程序可以用吗_昆仑通态专题(九):MCGS组态软件的实时数据库...
  3. 计算机管理员账户权限不足,用户权限不足,请使用管理员权限。怎么办啊?求高手帮忙!谢了。...
  4. Linux红帽认证管理员(RHCAS)考试笔记
  5. html带圈的数字号码,html – 带有数字的CSS圈子
  6. Unity3D:HTTP请求模块
  7. 创维E900V21E机顶盒刷机固件 解决:不用设置有线自动连网
  8. Windows 7 with SP1中英文原版MSDN下载汇总
  9. 图片以base64格式显示出来
  10. Redis进阶: 锁的使用