基本类型赋的值在栈(stack)里,引用类型值在堆(heap)里
带label的break语句的用法的作用是跳出label所标定的块
类对象
class ATypeName {/*类主体置于这里*/}
ATypeName a = new ATypeName();
- 最先初始化 statics 成员, 静态成员只在第一次访问时初始化一次。
抽象类是部分抽象的,接口是纯抽象的
List<String> a = new ArrayList<String>();
…
for(Iterator<String> it= a.iterator(); it.hasNext(); ) {
…
String s = it.next(); //取出元素
…
}
第 0 次随机数产生为:46
第 1 次随机数产生为:0
第 2 次随机数产生为:27
第 3 次随机数产生为:70
第 4 次随机数产生为:61
HashSet:[0, 70, 27, 46, 61]
LinkedHashSet:[46, 0, 27, 70, 61]
TreeSet:[0, 27, 46, 61, 70]
publicvoidbyValue(Map<String,Student> map) {
Collection<Student> c = map.values();
Iterator it;
for (it=c.iterator(); it.hasNext();){
Student s = (Student)it.next();
}
}
publicvoidbyKey (Map<String, Student> map) {
Set<String> key = map.keySet();
Iterator it;
for (it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
Student value = map.get(s);
}
}
publicstaticvoidbyEntry(Map<String, Student> map) {
Set<Map.Entry<String, Student>> set = map.entrySet();
Iterator<Map.Entry<String, Student>> it;
for (it= set.iterator(); it.hasNext();) {
Map.Entry<String, Student> entry = it.next();
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
}
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
方法二:继承Thread类
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
方法一
synchronized ReturnType methodName(parameterList){
method statement;
}
方法二
synchronized (object){
statement;
}
public void put(Object x) throws InterruptedException {
synchronized (lock) {//需同步方法一
while (count == items.length)
lock.wait(); //等待take线程取走数据
items[putptr] = x;
if (++putptr == items.length)
putptr = 0;
++count;
synchronized (emptyLock) {
emptyLock.notify(); //通知take线程
}
}
}
--------------------------------------------------------------------------------------------------------------------------------
public Object take() throws InterruptedException {
synchronized (lock) {//需同步方法二
while (count == 0){
synchronized (emptyLock) { //如果为空,等待
emptyLock.wait();
}
}
Object x = items[takeptr];
if (++takeptr == items.length)
takeptr = 0;
--count;
lock.notify(); //通知put线程
return x; }
}
class SimpleLock {
private final ReentrantLock lock = new ReentrantLock(); //①
public void doSth() {
lock.lock(); //②
try {
// statement
} finally { //③
lock.unlock() //④
} }
}
---------------------------------------------------------------------------------------------------------------------------
public void put(Object x) {
lock.lock();
try {
while (count == items.length)
notFull.await();
items[putptr] = x;
if (++putptr == items.length) putptr = 0;
++count;
notEmpty.signal();
} finally {
lock.unlock();
}}
--------------------------------------------------------------------------------------------------------------------------------------
public Object take() {
lock.lock();
try {
while (count == 0)
notEmpty.await();
Object x = items[takeptr];
if (++takeptr == items.length)
takeptr = 0;
--count;
notFull.signal();
return x; } finally {
lock.unlock();} }
create table <表名> (字段1 类型1(长度),字段2 类型2(长度) …… )
[例] 创建学生数据表students,包含学号,姓名,性别,生日和系名信息。
create table students
(snovarchar(10), name varchar(20), sex varchar(5),
birthday datetime, department varchar(50))
drop table <表名>
[例] 删除数据表students。
drop table students
select<输出结果列表>from<表>
[where<选择条件>]
[order by<排序条件>]
[group by<分组条件>]
[例] 查询所有同学的学号和姓名。
select sno, name from students
[例] 按照年龄从大到小的次序列出男同学的学号和姓名。
select sno, name from students
where sex=‘男‘
order by birthday
[例] 查询姓“赵”的同学的姓名、所属院系和出生年月日。
select name, department, birthday from students
where name like ‘赵%’
insert into<表名>[(<列表名>)]
VALUES(<对应列的值表>)
[例] 把一位学号为S200、姓名为何十、性别为男、出生年月日为1993年11月19日法学院学生的记录插入到表students中。
insert into students
(sno, name, sex, birthday, department)
values(‘S200’,’何十’,’男’,’1993/11/19’,’法学院’)
update<表名>set<列>=<值>[,<列>=<值>][where<定位条件>]
[例] 把学号为S200的学生从法学院调到信息学院。
update students
set department=‘信息学院’
where sno=‘S200’
delete from<表名>[where<条件>]
[例] 把学号为S200的学生记录删除。
delete from students
where sno=‘S200’
JDBC 编程步骤
导入java.sql.*包:import
① 加载JDBC驱动程序:Class.forName()
② 定义数据库的URL:String url=“jdbc:derby:helloDB "
连接数据库:getConnection(url)
③ 建立SQL语句对象:createStatement()
执行SQL语句:executeQuery() 、execute() 、executeUpdate()
④ 处理结果集:next()、 previous()……
⑤ 关闭连接:commit()、 close()
(协议名称,本地地址,本地端口,远程地址,远程端口)
BufferReader类的 readLine()
- 每次读取一行数据
- 可能抛出IOException异常,调用该方法时通常应将它放在try块中,并通过catch块处理异常
- 如果读到流的末尾,该方法返回的结果为null(可据此判断文件是否读完)
向上转型:
通俗理解
就是子类转型成父类。
classA{}
class B extends A{}
A b=new B();
这个就是向上转型
Class下的 newInstance()和 new有什么区别?,
Class.forName("")返回的是类
Class.forName("").newInstance()返回的是object
Equals ==
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。
2. 复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果 为false。JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比 较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中 的存放地址了。