每日一刷:java基础+sql

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一刷:java基础+sql相关的知识,希望对你有一定的参考价值。

java基础

执行如下程序,输出结果是( )

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();
     
 

答案:2 24 46 6
题解:Test mv =newTest()声明并初始化对data赋默认值
使用synchronized关键字加同步锁线程依次操作m()
t1.start();使得result=2,data=2,输出即为2 2
t2.start();使得result=4,data=4,输出即为4 4
t3.start();使得result=6,data=6,输出即为6 6
System.out.print(result +" "+ data);是print()方法不会换行,输出结果为2 24 46 6


题解:
1.clone方法
保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

2.getClass方法
final方法,获得运行时类型。

3.toString方法
该方法用得比较多,一般子类都有覆盖。

4.finalize方法
该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

5.equals方法
该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

6.hashCode方法
该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。

一般必须满足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。

7.wait方法
wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

(1)其他线程调用了该对象的notify方法。

(2)其他线程调用了该对象的notifyAll方法。

(3)其他线程调用了interrupt中断该线程。

(4)时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

8.notify方法
该方法唤醒在该对象上等待的某个线程。

9.notifyAll方法
该方法唤醒在该对象上等待的所有线程。


题解:jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
常量池属于 PermGen(方法区)


题解:如果常量池中存在“xyz”就只会创建一个对象,如果没有就会创建两个!


题解:由于构造器的名字必须与类名相同,而匿名类没有类名,所以匿名类不能有构造器。


题解:newSupper().get()和newSub().get()只调用了get()方法,又没有打印输出get()返回的数值,所以肯定没有5


题解:A、java为单继承,多实现。可以实现多个接口。
B、接口允许定义成员,但必须是常量。
C、抽象类和接口类的无法实例化,任何编译器中直接使用new会报错。


题解:A:抽象方法只可以被public 和 protected修饰;
B:final可以修饰类、方法、变量,分别表示:该类不可继承、该方法不能重写、该变量是常量
C:static final 可以表达在一起来修饰方法,表示是该方法是静态的不可重写的方法
D:private 修饰方法(这太常见的)表示私有方法,本类可以访问,外界不能访问


题解:Java有5种方式来创建对象:
1、使用 new 关键字(最常用): ObjectName obj = new ObjectName();
2、使用反射的Class类的newInstance()方法: ObjectName obj = ObjectName.class.newInstance();
3、使用反射的Constructor类的newInstance()方法: ObjectName obj = ObjectName.class.getConstructor.newInstance();
4、使用对象克隆clone()方法: ObjectName obj = obj.clone();
5、使用反序列化(ObjectInputStream)的readObject()方法: try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME))) ObjectName obj = ois.readObject();

sql语句

SQL72:考试分数(一)

select job, round(avg(score),3)
from grade
group by job
order by avg(score) desc

SQL73:考试分数(二)

select *
from grade a
where score > (
    select avg(score)
    from grade b
    where a.job = b.job
)
order by id;

SQL73:考试分数(三)

select g1.id, l.name, g1.score
from grade g1 
join language l 
on g1.language_id = l.id 
where (
    select count(distinct g2.score) 
    from grade g2 
    where g2.score >= g1.score 
    and g1.language_id = g2.language_id
) <=2 
order by l.name,g1.score desc ,g1.id;

以上是关于每日一刷:java基础+sql的主要内容,如果未能解决你的问题,请参考以下文章

每日一刷:java基础+sql

每日一刷:java基础+sql

每日一刷:java基础+sql

每日一刷:java基础+sql

每日一刷:java基础+sql

每日一刷:java基础+sql