每日一刷: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语句
select job, round(avg(score),3)
from grade
group by job
order by avg(score) desc
select *
from grade a
where score > (
select avg(score)
from grade b
where a.job = b.job
)
order by id;
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的主要内容,如果未能解决你的问题,请参考以下文章