复习一

(1).

class Test {
    private int data;
    int result = 0;
    public void m()
    {

        result += 2;
        data += 2;
        System.out.print(result + "  " + data);
    }
}
class ThreadExample extends Thread {
    private Test mv;
    public ThreadExample(Test mv)     {
        this.mv = mv;
    }
        public void run()     {
        synchronized(mv)         {
            mv.m();
        }
    }
}
class ThreadTest {
    public static void main(String args[])     {
        Test mv = new Test();
        Thread t1 = new ThreadExample(mv);
        Thread t2 = new ThreadExample(mv);
        Thread t3 = new ThreadExample(mv);
        t1.start();
        t2.start();
        t3.start();
    }
}

①使用 synchronized加同步锁,使三个线程依次进行操作mv()方法;

②三个线程:

   t1.strart();     result=2; data=2;

  t2.strart();     result=4; data=4;

  t3.strart();     result=6; data=6;

③在 System.out.print(result + "  " + data);中使用的是print,不可以自动换行,所以答案为2 24 46 6

拓展:run()和start()的区别?

a.start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体,它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止。然后CPU再调度其它线程。
b.run()方法当作普通方法的方式调用。程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码; 程序中只有主线程——这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。
(2).要使对象具有序列化能力,则其类应该实现如下哪个接口(A )。

A java.io.Serializable B java.lang.Cloneable, C java.lang.CharSequence D java.lang.Comparable

A.Serializable接口是给类实现序列化的;

B.Cloneable接口是实现克隆的;

C.

D.Comparable接口用来实现对它的每个每个类的对象就行有序排列

(3)不考虑反射,关于私有访问控制符 private 修饰的成员变量,以下说法正确的是(C)

A. 可以三种类所引用:该类自身、与它在同一包中的其他类,在其他包中的该类的子类

B.可以被两种类访问和引用:该类本身、该类的所有子类 

C.只能被该类自身所访问和修改

D.只能被同一个包中的类访问

(4)Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 (12,-11).
 round()方法:求本身的四舍五入。

拓展:Math.ceil求最小的整数,但不小于本身;

           Math.floor求最大的整数,但不大于本身;

           Math.round求本身的四舍五入;(返回int或long)

           Math.rint求本身的四舍五入;(返回double)

           Math.abs求本身的绝对值;

           Math.max与Math.min,比较两个数的最大值,最小值;

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.floor(1.3));
        System.out.println(Math.round(11.5));
        System.out.println(Math.ceil(1.3));
        System.out.println(Math.abs(-1.4));
        System.out.println(Math.max(12,34));
        System.out.println(Math.min(12,34));
    }
}

(5). 假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?() 

public class A { 
    public int i; 
    static String s; 
    void method1(){} 
    static void method2(){} 
}

A System.out.println(a.i);    B a.method1();      C A.method1();      D A.method2();


静态成员和静态方法, 可以直接通过类名进行调用,其他的成员和方法则需要进行实例化成对象之后, 通过对象来调用。

应该是a.method1();

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值