Java——总结

Java错题总结

1.class B extends Object
{
    static
    {
        System.out.println("Load B");
    }
    public B()
    {
        System.out.println("Create B");
    }
}
class A extends B
{
    static
    {
        System.out.println("Load A");
    }
    public A()
    {
        System.out.println("Create A");
    }
}
 
public class Testclass
{
    public static void main(String[] args)
    {
        new A();
    }
}

总结:

执行顺序:

父类静态代码块>子类静态代码块>父类构造代码块>父类构造函数>子类构造代码块>子类构造函数

2.public class EqualsMethod
{
    public static void main(String[] args)
    {
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.print(n1 == n2);
        System.out.print(",");
        System.out.println(n1 != n2);
    }
}
总结:==符号:
==可用于基本类型和引用类型;
当用于基本类型的时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。
使用Integer a=1;或Interger a=Integer.valueOf(1);在值介于-128至127之间时,作为基本类型。

使用Integer a=new Integer(1);无论值是多少,都作为对象。

3. public class Test {
    static int x=10;
    static {x+=5;}
    public static void main(String[] args) //4
        {
        System.out.println("x="+x);
    }
    static{x/=3;};
}//9

总结:


4. public class test {

public static void main(String args[]) {

int x,y;

x=5>>2;

y=x>>>2;

System.out.println(y);
}
}

总结:

>>表示带符号右移;>>>无符号左移。左边空出的位以0填充。

5. /*关于下列程序段的输出结果,说法正确的是:( )  */
public class MyClass{

static int i;
public static void main(String argv[]){
System.out.println(i);
}
}

总结:局部变量(final变量)没有默认初始化值,必须先赋值后使用,否则不能通过编译;

成员变量(类的属性)有默认初始化值,在创建对象时被初始化。

6.package Test;
public class Test {
    private static void test(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            try {
                if (arr[i] % 2 == 0) {
                    throw new NullPointerException();
                } else {
                    System.out.print(i);
                }
            } finally {
                System.out.print("e");
            }
        }
    }
 
    public static void main(String[]args) {
        try {
            test(new int[] {0, 1, 2, 3, 4, 5});
        } catch (Exception e) {
            System.out.print("E");
        }
    }
 
}

总结:

1、finally语句只有在非常极端的情况下不会执行,默认肯定会要执行;
2、如果try、catch语句中有return语句或者throw语句,这些语句要在finally执行之后再执行;
3、try中一旦抛出异常,则try语句中的剩下语句则不会执行;

4、抛出异常的方法的调用者捕获到异常后进行处理;

7.public class Test {

	public static void mian(String[] args) {
		System.out.println(new B().getValue());
		
	}
	static class A{
		protected int value;
		public A(int v) {
			setValue(v);
		}
		public void setValue(int value)
		{
			this.value = value;
		}
		public int getValue() {
			try {
				value++;
				return value;
			}
			finally {
				this.setValue(value);
				System.out.println(value);
			}
		}
		}
	static class B extends A{
		public B() {
			super(5);
			setValue(getValue()-3);
		}
		public void setValue(int value) {
			super.setValue(2*value);
		}
	}
}

总结:答案:22 34 17

① 
new B() 
执行B的构造函数,第一行是super(5); 
此时执行的是A的构造函数,A的构造函数调用的是setValue()方法,由于B重写了A的这个方法, 
所以!!!执行的是B的 setValue()方法。 
即传入的参数是2*5=10 
此时,因为super,所以调用的是父类的 setValue()方法,即value=10 
第一行执行完毕。 
第二行是 setValue(getValue()-3); 
B没有getValue()方法,故执行父类的此方法, 
try返回的是value=10+1=11,保存在临时栈中 
finally中调用this的方法,这个this指的是B的对象,又重写,故就是B的 setValue()方法 
value=2*11=22,第一个打印到屏幕上的数字 
接下来参数 getValue()-3=11-3=8 
传入B的 setValue()方法 
此时value=2*8=16 
至此,new B()执行结束 
② 
new B(). getValue() 
B没有 getValue(),故执行A的 getValue() 
try返回16+1=17,保存到临时栈中 
finally调用B的 setValue()方法 
value=17*2=34,第二个打印到屏幕上面的数字 

最后主函数打印返回值,也就是try保存到临时栈的17 

注意点:

① 子类B中重写了父类A中的setValue方法

super(5) //调用了父类构造器,其中构造函数里面的setValue(value),调用的是子类的setValue方法

finally块中的

this.setValue(value) //调用的也是子类的setValue方法

而子类setValue方法中的

super.setValue(2*value); //调用的是父类A的setValue方法

② try...catch...finally块中有return返回值的情况

finally块中虽然改变了value的值,但try块中返回的应该是return之前存储的值。


阅读更多
文章标签: JAVA
想对作者说点什么? 我来说一句

java 总结练习题 总结

2011年02月25日 10KB 下载

Java总结Java总结Java总结

2008年10月27日 7KB 下载

Java集合框架总结

2011年10月10日 145KB 下载

java异常总结

2018年01月07日 75KB 下载

java数据结构总结

2011年03月08日 594KB 下载

java基础知识总结

2011年04月28日 41KB 下载

JavaJavaEE总结.

2011年12月24日 66KB 下载

Java总结Java基础总结

2010年03月11日 303KB 下载

Java 语法总结——线程(线程)

2009年04月13日 5KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭