会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
 安全技术技术文档
  · 安全配制
  · 工具介绍
  · 黑客教学
  · 防火墙
  · 漏洞分析
  · 破解专题
  · 黑客编程
  · 入侵检测
 安全技术论坛
  · 安全配制
  · 工具介绍
  · 防火墙
  · 黑客入侵
  · 漏洞检测
  · 破解方法
  · 杀毒专区
 安全技术工具下载
  · 扫描工具
  · 攻击程序
  · 后门木马
  · 拒绝服务
  · 口令破解
  · 代理程序
  · 防火墙
  · 加密解密
  · 入侵检测
  · 攻防演示
技术文档 > JAVA
怎样拿下SUN公司的SCJP认证?
发表日期:2004-07-30 18:15:02作者: 出处:  

SCJP本来易拿下,可我第一次却恰恰为59%,郁闷啊!1250RMB的银子啊!你们可不要蹈偶的覆辙啊!想过SCJP的哥们,可以进去看看我的体会。。。。。。。


 

SUN的SCJP资格证书,想说拿你却并不难!为什么我的命咋这么苦啊!!!???

SUN JAVA程序员认证证书。现在终于把他给拿下了!中间还是费了一点周折,考了2次才PASS!第一次59%,1月6日FAIL了,差一道题就PASS,可能是偶运气把。本来拿这个证PASS不难,考高分可能难点,但偏偏就让我差1道题,也正是这1道题,又要了我1250RMB,因为SUN的考试费用是1250RMB,一个手机没了!于是1月12日又考一次,还得必须去SUN中心买他的考试券,并且用现金不方便,他要求是汇款,你去之前最好给SUN中心打个电话问问,(我第一次用的是优惠券,850RMB,在北京没有买到,拖上海的哥们买的!FAINT!居然差1道题!以前曾经在这上面看到一个哥们也是59%,他还说默哀3分钟!我不默哀,乘热打铁去考!相信自己肯定能过的!)不过还是有点提心掉胆的,结果――EASY的过了!终于松了一口气。
我是2001年11月份上了个培训班,后来自己就将SL-275的书仔细的过了一遍,做了6、7套模拟题把。我碰到了很多的原题,但我关于OO的编程部分、JAVA的思想部分、读程序部分、比如重载、覆盖、多线程等都掌握的很好,就是关于IO部分,有很多的格式要背记,IO部分在考题中的分量不少!现在自己也可以编一些简单的程序了,但真正的开发还差得远,我想再买几本JAVA方面的书看看、提高。
拿下SCJP真的说明不了什么,就想你掌握C一样,所以大家一起努力把!
如果你觉得自己对JAVA的CLASS设计以及高级类设计和基本的语法掌握了,然后背记一些IO和UTIL的东东,就去考把!肯定能过的!JAVA的垃圾收集不难,反正2次我都是100%。读题看程序时多认真一些!JAVA有时考的很细的!
模拟题要做,不要太多,建议做下面地方的“5套模拟题,好像是卖Bible的人拚起来的题目,有两套有对答案的中文说明。”看看“顺便附上考后有人回忆的20多道题目”(在http://my-wjl.scu.edu.cn/~xxuzi/里面,自己去找后下载把!),我第一次考试里面几乎都有这20道题!!!但我考前没有看到啊!我的SL-275看的比较早,结果有的内容不熟悉,强烈建议你们考前将它好好过1遍!!!掌握基本的JAVA思想!
这也算是对我前一段时间学习JAVA的一个交代把。学了JAVA,等于同时也掌握了M$新推出的C#语言。二者大同小异。将来是他们的天下。

强烈建议大家去下面的地方逛逛,我的2次考试里面有很多的真题!
http://my-wjl.scu.edu.cn/~xxuzi/
里面的东东太多,选择适合你自己的,没有必要都看!


 

以下是偶呕心沥血结合别人的总结一起自己总结的东东,希望大家重视啊!!!

sun的scjp题库很小,上面有人说过的,的确如此,
如果大家做过几道mock test,就可能遇到真题
而且在一些论坛上别人遇到的问题,也非常容易自己遇到
我下面说的一些题目,很多题很多人最近才在论坛上提到过

真题1.
class a{
public void main(String[] args){
System.out.println(" Hello World. ");
}
}
编译运行结果是什么?这题大家都会吧。
若无static,编译通过,RUN则抛出Exception!

2.
String [] a = new String[20];//若把String换成Wapper classes或primitive,compile出错:不兼容类型!
int i=3;
String b = a[3];//b=null
输出b是什么?是null!这个也简单吧。

在我第一次考题中,有这样一段程序:
String s=new String("abc");//这里也可以替换为:String s="hij";
s="def";
compile和run都是正确的!这样改变String实例变量是可行的。
而我当时想到String类是immutable的,就认为其不能编译成功,结果当然错了!//sigh

3.
硬盘当前目录有一个文件"a.txt",里面有一些垃圾
OutputStream o = new FileOutputStream(new File("a.txt"));
然后发生了什么?a.txt变成了0字节,这是io的最后的一个考点
不是吗?去查IO相关知识点!

4.单选
a.GridBagLayout里面一个格子的Component either随Frame改变大小or保持perfect size在
格子中间。
b.Frame里面BorderLayout的north位置是菜单的好位置
c.不记得了
d.不记得了
注意 a和b都是错的,Component可以在格子的上下左右等等。
Frame里面加菜单用setMenuBar
补充:GridBagLayout的有关特性在考题中经常出现,老师没有提到,注意将它在sl-275的附录中好好看看!
和其他几种Layout进行全面的比较。查书和资料,这你会把?

5.关于Thread的,很多人都说Thread考的多,而且难一点,可能我没遇到难题吧
Thread部分我没错
class a implements Runnable{
private int x;
private int y;
public void run(){
for(;;){
x++;
y++;
System.out.println(" x="+x+" y="+y);
System.out.println(当前Thread的名字);
}
}
}
class b{
public static void main(String[] args){
a aa = new a();
new Thread(aa).start();
new Thread(aa).start();
}
}
给几个选项,问你运行结果
补充:此题的正确答案是---有可能输出x!=y的结果并且输出显示的是两个线程在运行!
不会出现相同的x和y的值!
下面也是一道类似的题,你可以看看应该选哪个?
**************************************************
class Happy implements Runnable{
private int x;
private int y;
public synchronized void run() {
x++;
y++;
System.out.println(x+" "+y);
}
public static void main(String args[]) {
Happy that=new Happy();
(new Thread(that)).start();
(new Thread(that)).start();
}
}
What happens when this code compiles and run?
a) will print x ,y in order 11 22
b) will print x ,y twice in order 11 22 11 22
c) will print x ,y in order 12 12
d) will print x ,y order is unpredictable.
e) Compilation error.
f) Runtime Exception.
***********************************************************

6.非常碰巧,上面这道题改了一下又出现在我的考题里面
//前面一样
synchronized(this){
x++;
y++;
}
System.out.println...//后面一样
同样是给你几个选项,问运行结果
这个是同步的,上面那个有可能输出x!=y的结果,这个就不会了!
大家要注意5,6都只有一个aa,也就是不会出现相同的x或y.
补充:正确答案是----永远输出x=y并且输出显示的是两个线程在运行!
不会出现相同的x和y的值!
如果Thread的构造体中不仅仅是一个aa,也就是另外用类a再new一个实例bb,
并且new Thread(bb).start();的话,那运行结果就不一样了!就会出现相同的x和y的值!
(5和6我第一次考题都碰到了,第二次好象也有!SUN题库会经常出现的,祝你好运!)
大家可以把下面我提供的完整程序去认真的编译运行验证一下!
//大家将注释掉的和未注释的程序分别运行!
********************************************************
public class TestThread {
  public static void main(String args[]) {
    Xyz r = new Xyz();
    //Xyz p = new Xyz();
    Thread t1 = new Thread(r);
    Thread t2 = new Thread(r);
    //Thread w1 = new Thread(p);
    //Thread w2 = new Thread(p);

    t1.setName("Thread_t1");
    t2.setName("Thread_t2");
    //w1.setName("Thread_w1");
    //w2.setName("Thread_w2");

    t1.start();
    t2.start();
    //w1.start();
    //w2.start();
  }
}

class Xyz implements Runnable {
  private int i;
  private int j;

  public void run() { 
//synchronized(this){
    while(true) {

if ( i == 100 ) {
break;
      }
      System.out.println("i= " + i+++","+"j="+j++);
      System.out.println(Thread.currentThread().getName());
   
    }
  //}
}
}

********************************************************

7.还有一个很经典的thread题,也是真题,
Thread1
synchronized(a){
synchronized(b){
}
}
Thread2
synchronized(b){synchronized(a){
}
}
都start();问结果,结果是--不确定的!可能deadlock,并且结果和当前Thread的执行机的环境有关!
就是大家很常见的那道题
a,b是StringBuffer();Thread1,2是用
new Thread(){
public void run(){
//....
}
}.start();
方式定义,一字不变。
真实的程序如下:
********************************************************
public class SyncTest
{
  public static void main(String[] args)
  {
    final StringBuffer s1= new StringBuffer();
    final StringBuffer s2= new StringBuffer();
   
    new Thread ()
    {
      public void run()
      {
        synchronized(s1)
        {
          s1.append("A");
          synchronized(s2)
          {
            s2.append("B");
            System.out.print(s1);
            System.out.print(s2);
          }
        }
      }
    }.start();
   
    new Thread()
    {
      public void run()
      {
        synchronized(s2)
        {
          s2.append("C");
          synchronized(s1)
          {
            s1.append("D");
            System.out.print(s2);
            System.out.print(s1);
          }
        }
      }
    }.start();

  }
}
/*
Which two statements are true? (Choose Two)
A. The program prints "ABBCAD"
B. The program prints "CDDACB"
C. The program prints "ADCBADBC"
D. The output is a non-deterministic point because of a possible deadlock condition
E. The output is dependent on the threading model of the system the program is running on.
*/
********************************************************
正确的答案是:D和E!
根据程序流程和线程(同优先级)调用的不确定性,这个程序有可能会输出的是A和B.但是你应该注意到两个线程1和2锁定对象的时候的加锁顺序不一致,也就是说可能会导致死锁。
如果你实际去运行上面的程序,你会发现输出的结果可能总是"ABBCAD",实际上还可能输出"CDDACB"!这和你当前的JAVA虚拟机的运行环境有关的!你不能很好的加其他的Thread进来,所以看到的结果好象只有A答案!但是我的运行结果是--多半是A情况,B情况出现的几率少,呵呵!你,试试看?
这道题我两次考试都碰到了,你肯定也能碰到的!不信?我和你打赌,赌什么?当然是请我吃饭了,呵呵!
好象SUN的SCJP题库中关于Thread就没有其他的题型似的!当你遇到这个题时,答案都不用看,直接选D和E好了!


8.
int i=0,j=5;
bk:for(;;){
i--
for(;;){
if(i>j--)break bk;
}
}
问i,j现在等于what?注意了,i--只运行了一次
补充:这种题型你肯定能碰到的!但好象每次题的内容还不一样,你可要仔细读程序了!不能看到熟悉的题型就忘乎所以的去对答案,每次答案好象不一样的!
我想可能是SUN关于这类题型的内容容易改把,而上面的Thread的题型的内容不好改!


9.
class a{
Integer u(){return new Integer(4);}
}
class b extends a{
Long u(){return new Long(8);}
public static void main(String[] args){
...
}
}
问结果,结果是编译不通,override方法的返回值必须一样!
补充:override的三个方面要完全一致!而overloading是方法进口的参数必须不一样,它的返回值可以不同的!这类题型肯定要考到的!方式可能不一样,但抓住上面的要点就不会错了!


10.如何定义一个方法使它不能被继承?
给你几个选项,要你选两个
其中有是
static void xx(){}
final static void xx(){}
final void xx(){}
我那道题在lang fund上面错的,不会是这道吧?
我选的后两个,也是就说static void xx(){}没选
其实static方法到底可不可以被继承,众说纷纷.
这个方面我滔滔不绝可以给你说很多了,
大家如果不清楚还是自己看书吧。基本上都有。

11.
这让我想到了
static inner class 的问题
inner class 到底可不可以用static修饰
就是说static inner class 这种说法到底正不正规
也是众说纷纷。
其实大家都明白static inner class是什么,而且这么说
大家都懂,我觉得那种死扣字眼的人有点无聊。

写sun考题的人认为是可以的
其中有一题是单选
innter class can be static
anonymous inner class can be public
............................ static
............................ privated
............................ protected
这题为A,因为这题前一题的题目(不是选项)中就出现了static inner class
的字样,而且sun给出的考点中也出现了static inner class
补充:这个题出现的几率比较多!一定要将inner class的特性搞清楚,特别是anonymous inner class
的相关特性,非常重要!还有Abstract class和Interface class的主要特性!以及static、final等高级类的属性!!!将其基本思想搞清楚!SUN经常考到的,不信,你等着瞧好了。这部分可以仔细看my_notes里的相关部分!多看几便,最好背下来!


12.
一道题是
...
unsigned byte i =20;
...
应该选 编译不通过

13.
一个超级弱题
char的范围是多少?(正确的是:0-65535)
0-3xxxx
0-65535
-128-127
...
注意xxxx使我用来代表数的,sun的考题中是确定的数,不是x
补充:还有Byte的范围-128~127!int的范围也会考到的!

14.
class a{
public String toString(){
return "4"
}
}
class b extends a{
public String toString(){
return super.toString()+"3";//此处是调用父类中的方法!275书上有类似的程序。
}
public static void main(String[] args){
System.out.println(new b());
}
}
问输出,为"43"

15.
sun的题目很扣考点的
java Test a b c
class Test{
pubic static void main(String[] args){
String k1 = args[0];
String k2 = args[1];
String k3 = args[2];
}
}
问你k3是多少?我当时好好看了一下题目,确定就是这么简单

16.
class a implements Runnable{
public void run(){
System.out.println("abc");
}
}
问你如何在一个new Thread 中打印出abc
给你一些一眼都看得出来的错误选项,不过我还是好好看了一下
补充:使Thread的实例启动变成可运行状态是调用其start()方法。

17.
考RandomAccessFile的构造器,问你如何写一个文件云云
a. ...RandomAccessFile(xxx,"r")
b. .......................,"w")
c. .......................,"rw")
d. .......................,"x")
选c.
真实的考题如下:
*********************************************************
File f=new File("aa.txt");
Suppose this file exists in your directory.
Which of the following can be used to write a line of
text to the end of this file?
A. RandomAccessFile f1=new RandomAccessFile(f,"r");
B. RandomAccessFile f1=new RandomAccessFile(f,"a");
C. RandomAccessFile f1=new RandomAccessFile(f,"rw");
D. RandomAccessFile f1=new RandomAccessFile(f,"w");
E. RandomAccessFile f1=new RandomAccessFile(f,"wr");
*********************************************************

18.
一个考布局的
一个Frame,
程序里面用了setLayout(new BorderLayout());//好像sun出题的人怕你忘了
Panel p = new Panel();
Button b1 = new Button();
p.add(b1);
add(p,北边);
Button b2 = new Button();
add(b2,南边);
....
问你北边,南边Button的多大,是不是一样大,Frame resize的时候如何...等
我的补充:可运行的源程序如下:
******************************************************
import java.awt.*;

public class FrameExample {
  private Frame f;
  private Panel p;
  private Button b1;
  private Button b2;

  public FrameExample() {
    f = new Frame("Hello Out There!");
    p=new Panel();
    b1=new Button("Button One");
    b2=new Button("Button Two");
  }
 
  public void launchFrame() {
    f.setSize(170,170);
    f.setBackground(Color.blue);   
    p.setSize(80,80);
    p.setBackground(Color.green);
    p.add(b1);
    f.add(p,"North");
    f.add(b2,"South");
    f.setVisible(true);//此处也可以换成f.show();  效果是一样的! 
    //f.setLayout(new FlowLayout());//使这个也执行,你再看看结果!这个体现了setLayout()方法在程序//中前后位置的变化带来不同的结果!

  }

  public static void main(String args[]) {
    FrameExample guiWindow = new FrameExample();
    guiWindow.launchFrame();
  }
}

******************************************************

19.
java.io.PrintStream p = new java.io.PrintStream(
new java.io.InputStreamReader(System.out)
)
要你选import xxx
或者不import
下面是类似的一道题,你看选哪个?
**********************************************
//code
class Happy {
public static void main(String args[]) {

PrintWriter p=new PrintWriter(new
java.io.OutputStreamWriter(System.out));
}
}
Which statement can be placed in //code to make this program work?
a) import java.io.PrintWriter
b) import java.io.OutputStreamWriter
c) include java.io.PrintWriter
d) include java.io.OutputStreamWriter
e) import java.io.PrintWriter
  import java.io.OutputStream
f) no need to do anything.
**********************************************

20.关于异常!
catch可以有多个,但是必须保证“逆向”               
即先有异常子类,再有父类
如果反过来的话,编译将通不过。
1.在方法体内如果抛出了异常而又不想在该方法体内处理的化,必须再次抛出。
  public static void methodA() throws Exception
  {
      throw new IOException();
  }
2.如果catch块根本不可能捕获到异常的化,编译会出错。
3.如果try对应了多个catch块,程序会寻找第一个匹配的块,然后直接跳到finally(如果有的话)。对于其他块将不作处理。
**********************************************
import java.io.IOException;
public class A{
public static void main(String[] args){
try{
methodA();
}
catch(IOException e){  //去掉这个catch程序能正常运行出结果!
System.out.println("Caught IOException");
}

catch(Exception e){  //去掉这个catch程序却不能正常运行出结果!因为catch中捕捉的异常必须和方法声明                    //处的异常一致!尽管方法体内抛出的是其子异常,如果仅保持和这个子异常一致,
                    //编译却出错!TRY IT OUT!
System.out.println("Caught Exception");
}

}
public static void methodA() throws Exception{ //方法体内抛出了异常,但是方法声明处仍需再次抛出!
                                              //此处的throws Exception千万不能漏掉!!!
throw new IOException();
}
}
**********************************************
你看看下面的题该选哪个呢?运行一下检验每个答案选项,想想为什么?
import java.io.*;
class Excep{
static void method() throws Exception{
throw new EOFException();
}
public static void main(String args[]){
try{
method();
}catch(////){}
}
}
Which of the following should be placed at //// so that
the code will compile without errors?
A. IOException e
B. EOFException e
C. MalformedURLException e
D. NullPointerException e
E. Exception e
F. FileNotFoundException



以下完全是偶自己总结的东东!希望大家重视!
1.
看下面的程序!想想输出的结果是?或编译错误?
这是我考题中的一道,当时我想得太多,结果做错了!但实际上它能正常编译并且输出结果是:1。
class A {
static void method(int [] a){
int j=1;
a[j]++;
}
public static void main(String args[]) {
int [] b=new int[5];
method(b);
System.out.println(b[1]);
}
}

2.下面的也出现在我的考题中,但到现在为止我还不知道其正确答案,并且题目详细细节也忘了。
程序大概如下,好像是问,A.类Mycircle能完全被封装。B.该圆的直径永远是半径的2倍。
C.method(double radius)处应加上synchronized才能保证圆的直径永远是半径的2倍。
D.该程序能返回正确的半径值。大概是这样的。。。。,你若遇到了告诉我正确的答案,好吗?

这是题目的完整程序(新近补充的!!!)
1. public class Mycircle {
2. private double radius;
3. private double diameter;
4.
5. public void setRadius(double radius)
6. this.radius = radius;
7. this.diameter= radius * 2;
8. }
10. public double getRadius() {
11. return radius;
12. }
13. }


A. The Mycircle class is fully encapsulated.
B. The diameter of a given MyCircle is guaranteed to be twice its radius.
C. Lines 6 and 7 should be in a synchronized block to ensure encapsulation.
D. The radius of a MyCircle object can be set without affecting its diameter.
这是题目的选择项
正确答案为B!


3.
try{System.exit(0);}
finally{System.out.println("Hello");}
问程序如何执行?是输出Hello吗?NO!此时finally不执行的!
WHY?去看看书中异常的相关部分。finally不是永远都执行的。

4.cause a thread to stop的条件如下:
sleep();stop();yield();wait();Synchronized();exits Synchronized code;InputStream access
No stop a thread的条件如下:
notify();notifyAll();setPriority;getPriority.

5.
static Inner class的实例化方法如下2种:
1.Outer.Inner inn=new Outer.Inner();
2.Outer o=new Outer(); Outer.Inner inn=o.new Inner();
非static Inner class的实例化方法如下2种:
1.Outer o=new Outer(); Outer.Inner inn=o.new Inner();
2.Outer.Inner inn=new Outer().new Inner();

6.以下的请仔细的查my_notes或JDK文档的相关部分内容!熟悉一下!我考试时都遇到了。
Object getSource();//这个方法返回的是Object,不是Component!
和Component getComponent,Container getContainer, Component getChild不要混淆了!

注意它们的含义;
int getX(), int getY(), int getID()//返回的都是什么呢?

IO部分注意的知识点如下:
getName(), getParent(), getPath(), getAbsolutePath(),//都是什么意思?

File,FileInputStream(), FileOutputStream(),DataInputStream, DataOutputStream,
InputStreamReader,OutputStreamWriter的几种构造器参数格式?这几个经常考到!

FileOutputStream(文件名,是否append->参数是“true”or “false”)
if true, write to end,在尾处添加,否则是覆盖重写!

FileWriter(文件名,boolean参数 是否append->参数是“true”or “false”)

PrintWriter(writer out, boolean autoflush)含义?

RandomAccessFile(文件,"r"or"rw")

boolean isDirectory(), boolean isAbsolute(), boolean exists()//都是什么意思???

Inner classes和Anonymous Inner classes的特性?

7.考试中一定要清醒的辨别JAVA的一个重要特点:Pass-by-value!!!用值来传递参数,什么情况下参数的值会被改变呢?这个知识点考的很多的!!!看下面的题,运行一下看该选哪个?
What will be printed when following code runs?
1. class Foo{
2. static void change(String s){
3. s=s.replace('j','l');
4. }
5.
6. public static void main(String args[]){
7. String s="java";
8. change(s);
9. System.out.println(s);
10. }
11. }
A. Compiler error
B. Will print lava
C. Runtime exception
D. Will print java

8.
JAVA程序的执行顺序???
A difficult but a fundamental question, please observe carefully. Before any object is constructed the object of the parent class is constructed(as there is a default call to the parent's constructor from the constructor of the child class via the super() statement). Also note that when an object is constructed the variables are initialized first and then the constructor is executed.
任何JAVA对象实例化时,第一步:先给实例变量即类级变量赋其缺省值,以及static变量的初始化赋值和static块代码的运行,然后进入对象构造器的代码块中。第二步:进入构造器的代码块后,先缺省调用或显性调用父类的构造器,在执行父类的构造器的时候,也是按照当前的步骤运行的,既先给父类的实例变量赋其缺省值,以及父类的static变量的初始化赋值和父类的static块代码的运行,然后进入父类的对象构造器的代码块中,执行随后的代码行;如果父类还需调用其上一级的构造器,则先去调用父类的父类构造器,如此类推,直至调用到Object的构造器为止。第三步:执行完父类的构造器后,回来后再给本地的实例变量赋其初始值,然后再次进入到本地的构造器代码块中,接着执行随后的构造器中的代码行。至此,一个对象实例化结束!在父类构造器执行的过程中,如果要调用和子类同名重写的方法时,还应该注意到JAVA程序的动态绑定,此时父类调用的是子类中重写父类的方法,而不是父类本地的方法!

9.重写方法要时刻检查两点!
1. 不能比它重写的方法的可访问性差! 2. 不允许比它覆盖的方法抛出更多的异常!
这一知识点SUN考得比较多!读程序时仔细检查!

10.下面这道题能帮助你很好的理解线程的运行机制!
我考试时遇到过的。问你,结果输出i的值是什么?是10还是999?
答案是:可能是10也可能是999,并不一定确定!依赖于其执行机的环境。
你可以试着多运行N次。
class Xyz implements Runnable {
  static int i=10;
  public void run() {
    i = 999;   
  }
public static void main(String args[]) {
    Xyz r = new Xyz();
    Thread t = new Thread(r);
    t.start();
    System.out.println("i= " + i);
}
}



11.以下列出的是SUN公司的SCJP的考试软件中归纳的Tips,我想有点用!
Quick Revision Tips
1. An identifier in java must begin with a letter , a dollar sign($), or an underscore (-); subsequent characters may be letters, dollar signs, underscores, or digits.

2. There are three top-level elements that may appear in a file. None of these elements is required. If they are present, then they must appear in the following order: -package declaration?? ?????? -import statements?? ????? -class definitions?

3. A static method can't be overridden to non-static and vice versa.

4.The variables in an interface are implicitly final and static.If the interface , itself, is declared as public the methods and variables are implicitly public.

5.A final class cannot have abstract methods.

6.All methods of a final class are automatically final.

7. While casting one class to another subclass to superclass is allowed without any type casting. e.g.. A extends B , B b = new A(); is valid but not the reverse.

8. The String class in java is immutable. Once an instance is created, the string it contains cannot be changed. e.g. String s1 = new String("test"); s1.concat("test1"); Even after calling concat() method on s1, the value of s1 will remain to be "test". What actually happens is a new instance is created. But the StringBuffer class is mutable.

9. The short circuit logical operators && and ¦¦ provide logical AND and OR operations on boolean types and unlike & and ¦ , these are not applicable to integral types. The valuable additional feature provided by these operators is the right operand is not evaluated if the result of the operation can be determined after evaluating only the left operand.

10. The difference between x = ++y; and x = y++; In the first case y will be incremented first and then assigned to x. In second case first y will be assigned to x then it will be incremented.
The initialization values for different data types in java is as follows  ? byte = 0, int = 0, short = 0, char = 'u0000', long = 0L, float = 0.0f, double = 0.0d, boolean = false,  ?object referenece(of any object) = null.

11. An overriding method may not throw a checked exception unless the overridden method also throws that exception or a superclass of that exception.

12. Interface methods can't be native, static, synchronized, final, private, protected or abstract.

13. The String class is a final class, it can't be subclassed.

14. The Math class has a private constructor, it can't be instantiated.

15. The two kinds of exceptions in java are : Compile time (Checked ) and Run time (Unchecked) exceptions. All subclasses of Exception except the RunTimeException and its subclasses are checked exceptions. Examples of Checked exception : IOException, ClassNotFoundException.? Examples of Runtime exception :ArrayIndexOutOfBoundsException,NullPointerException, ClassCastException, ArithmeticException, NumberFormatException.

16. The various methods of Java.lang.Object are clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString and wait.?

17. Garbage collection in java cannot be forced. The methods used to call garbage collection thread are System.gc() and Runtime.gc()

18. Inner class may be private, protected, final, abstract or static.

19. An example of creation of instance of an inner class from some other class: class Outer { ??? public class Inner{} }  class Another { ??? public void amethod() ??? { ??????? Outer.Inner i = new Outer().new Inner(); ??? } }

20. The range of Thread priority in java is 1-10. The minimum priority is 1 and the maximum is 10. The default priority of any thread in java is 5.

21. There are two ways to mark code as synchronized: a.) Synchronize an entire method by putting the synchronized modifier in the method's declaration. b.) Synchronize a subset of a method by surrounding the desired lines of code with curly brackets ({}).

22. The argument to switch can be either byte, short , char or int.

23. Breaking to a label (using break <labelname>;) means that the loop at the label will be terminated and any outer loop will keep iterating. While a continue to a label (using continue <lablename>;) continues execution with the next iteration of the labeled loop.

24. A static method can only call static variables or other static methods, without using the instance of the class. e.g. main() method can't directly access any non static method or variable, but using the instance of the class it can.

25. The if() statement in java takes only boolean as an argument. Please note that if (a=true){}, provided a is of type boolean is a valid statement and the code inside the if block will be executed.?

26. The (-0.0 == 0.0) will return true, while (5.0==-5.0) will return false.

27. An abstract class may not have even a single abstract method but if a class has an abstract method it has to be declared as abstract.

28. The default Layout Manager for Panel and Applet is Flow. For Frame and Window its BorderLayout.

29. The FlowLayout always honors the a component's preferred size.

30. The statement float f = 5.0; will give compilation error as default type for floating values is double and double can't be directly assigned to float without casting.

31. The equals() method in String class compares the values of two Strings while == compares the memory address of the objects being compared. e.g. String s = new String("test"); String s1 = new String("test"); s.equals(s1) will return true while s==s1 will return false.

32. The example of array declaration along with initialization - int k[] = new int[]{1,2,3,4,9};
The octal number in java is preceded by 0 while the hexadecimal by 0x (x may be in small case or upper case) e.g. octal :022 hexadecimal :0x12

33. A constructor cannot be native, abstract

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00169