一些tips
类型转换
三目运算符 其中的后面的值会进行类型转换,两个值得类型是统一的;
但是 当第一个是常量表达式时,常量可以使用第二个的表示类型
System.out.print(false? i: x) // 120
System.out.print(false ? 10: x) // x
运算符等级从一级到16级
final finally finalize
fianl
- fianl成员 修饰变量: 一旦被初始化就不可改变(其值不可变);修饰类时是其引用不可变,初始化可以在 定义处,在构造函数中也可;
- final 方法: 此方法不需要进行扩展已经满足要求了;不允许扩展;2.允许编译器将所有对此方法的调用转化为inline调用机制(把此方法直接插入进调用处)
- final 类: 无法被继承,
finally : 在代码终究会执行,无论返回rerurn;
finalize: jvm保证调用finalize函数之前,这个对象是不可达的,但jvm不保证会调用该函数;主要用于一些不容易控制的,且重要的资源的释放;
在try里面的return语句 执行前 会执行finally的代码
传递和引用
java是传递副本
- 对于基本数据类型(int,long,duble等)是传递值的副本
- 对于一切对象性变量,传递引用的副本;
数组也是按值传递,修改后,也会直接改变;
内部访问
class Wo{
private int c;
Wo(int c){
this.c=c;
}
public void getTT(){
Wo wo=new Wo(33);
System.out.println(wo.c); // 虽然是私有变量 但是在类内部还是可以访问的
// 在外部生成wo就不能访问c了
}
}
boolean 默认初始化时false;
序列化能把一个实现了Serializable接口的对象转化为一组byte,能够把这个对象从byte中恢复,然后能恢复状态;并进行网络传输;实现RMI远程调用(能够像本地机器一样调用此对象);2.状态保存,启动时使用
Integer k;
for (int i = 0; i <10 ; i++) k=new Integer(i);
//下面就会编译出错
for (int i = 0; i <10 ; i++) Integer k=new Integer(i); // 局部变量的声明应该在块内
浅复制与深复制
单线程:
单元线程: 一个任务分成多个部分,每个线程完成不同部分;
自由线程: 多个线程完成相同;
##SQL
存储过程和函数: 存储过程是用户定义的一系列sql的语句集合,涉及到特定的表或其他对象的任务,用户可以调用存储过程,函数是数据库已将定义好的方法 count()等
聚集索引:其顺序就是数据的物理顺序;对与非聚集 索引顺序与数据的物理排序顺序无关;
J2EE
spring 控制反转,依赖注入;
EJB重要的
JDBC
jdbc api被划分为两个部分: JDBC 核心API 和标准扩展API
其核心的api在java.sql里面.
- java.sql包: 是核心API
- DataSource接口:和java名字目录服务JNDI一起工作的数据源接口
- Connection pooling(连接池): 可以重复使用连接,不是对每个请求都使用一个新的连接
- Distribute transaction(分布式的事务):
- Rowsets: javaBean组件包含结果集;主要是将数据传送给瘦客户;
- javax.sql : 标准扩展API,全新的包, 支持SQL3数据类型,增加了对持久化对象的存储;
发表回复