第一天:听课笔记

1.IDE project workspace
switch workspace

2.MyEclipse
javac java
java的版本不能比javac的版本低
workspace project的可以分别配置  未来的改变
compiler JREs
UnsupportedClassVersionError
如果配置在workspacem中,多个project可以使用


3.透视图 视图
perspective
show views
透视图是若干个视图的组合,它是为某一类开发的

4.快捷键
syso
surround with
为什么改变 干什么
java      editor
${cursor} 光标 自定义配置try catch finally
CTRL+SHIFT+F
注释

为什么改变 干什么
通用     补全
keys
ctrl+space 与 alert+/
ctrl+shift+l (list) 列出所有的快捷键

5.JDK1.5和1.6的新特性

6.import
import static java.lang.Math.*; --->  max(3, 6);不用Math.XXX
带入所有的类和方法,有点像thinking in Java

7.可变参数 只能出现在参数列表的最后
如果没有,要定义很多重载的方法
... 0个或者多个 原理的:数组
疑问:数组是怎么定义的,初始化的...
决心:敲完代码,写日志

8. int[] y
for(int x : y){用x}

9.自动装箱 拆箱 jdk1.5的才有,以前的编译出错
null
尝试:== equals int string
      int 中() 小的数字被缓存 响原模式
      parseInt() valueOf()
      String s = "a"+"b"+"c";   一个对象?
扩展:基本类型 String 集合 的装换

10.java语言规范 sun网站下载
Blocks and Statements


11.枚举
int可以随便定义,用枚举是为了把运行时的错误转到编译时,错的编译就不干了
没有枚举前用类模拟:
人这个类中,成员变量配偶,她也是人这个类型
私有化构造方法 public static final 成员变量
下一个:两种考虑
 a. if() else{}  this == XXX
    如果这个对象等于XXX,就...
 b. 将这个方法变成抽象的,子类实现
    匿名内部类XXX = new WeekDay() {};  这个类没有名字,它继承了WeekDay
    模式:

枚举中的.XXX 都是它的一个实例对象
private 只给自己构造
枚举中 RED 大写
成员要放在第一位
public abstract TrafficLamp next(); 只会使用一次 名称不重要了 RED(){}, ...

总结:先是枚举中的构造方法 然后是枚举中的抽象方法
两者结合,具体应用

枚举 name() ordial() values() valueOf(XXX) 方法

枚举中只有一个成员时,就可以作为单例

12.反射:

Class类 而class是关键字
字节码是一个类,同时它也是Class的一个实例对象

三种:
Class x1 = Date.class;
Class x2 = Class.forName("java.util.Date");
Class x3 = new Date().getClass();
x1=x2=x3
在内存中加载字节码,它们都是同一份

第二种:类名没有出现在源程序中,扩展性好
Class.forName(XXX);
在虚拟机注册表中看是否已加载
 是 返回已经创建的字节码
 否 在类加载器中加载该类的字节码并返回字节码

 加载不成功就抛出ClassNotFoundException

Class内 八种基本+void  预定义的Class实例对象

int.class == Integer.TYPE

反射就是把一个类中的各种成分映射成相应的java类


13.例子:
得到Date的构造方法 --> 拿到某一个,传入参数 该参数又是Class
得到构造方法以后就得到实例对象   写程序的时候不知道要new那个,框架不知道你的名字,用反射
String StringBuffer
由String abc = new String(new StringBuffer("abc"));来推导
.class.getConstructor(XXX.class);
.newInstance(XXX)

对于那种默认的构造方法(无参的): 简单一点的写法是
String str = String.class.newInstance();


Field 代表某个类中的一个成员变量 是类的,不是某个对象的
.getField("");
.get(obj) 去某个具体对象的XX的值
1.对于private的不能拿
---> Declared  暴力反射 所有声明了的都可拿
2.类拿 和对象拿

------------------------------------------------------------------------------------------------

1.方法的反射
"abc".charAt(2);
.getMethod()
.invoke(XXX, YYY)XXX代表哪个对象 YYY代表传入的具体参数值
.invoke(null,ZZZ) null代表不同过对象,推测出是类的static

结合可变参数:
ZZZ传入的参数是可变的


new int[]{}  数组中的个数为零个
new String[]{}  ---> args

2.没听懂
public static void main(String[] args)
Test.main(new String[]{"abc","xyz"});
Method mainMethod = Test.class.getMethod("main", String[].class);
mainMethod.invoke(null, new String[]{"aaa", "bbb"}); //错 认为是两个参数 兼容JDK1.4
mainMethod.invoke(null, new Object[]{new String[]{"aaa", "bbb"}});
mainMethod.invoke(null, (Object)new String[]{"aaa", "bbb"});
由于main是static的,就为null

3.数组的反射
具有相同的维数和元素类型属于同一个类型

getSuperClass()
数组的父类是Object,可以当做Object

new String("abc").getClass() 对象用getClass
String.class

Object[] obj = new int[2];     //错
Object[] obj = new String[3];  //对

做框架 判断传入的是数组还是基本的
dealObject(Object obj){
 if() else 判断类型,看传入的是什么
}

数组:基本数据类型 和 String的

基本数据类型的还可以有一种方法

决心:为了在这个行业发展的很高,钻研,不能看表面,要设计优雅

4.反射的作用:实现框架功能
框架与工具类:
我做零件,供别人调用
思维的转变:由自己做主,变为被别人控制,写给别人用
工具类 
 
框架 
 房子在门前做,我做的房子可以在未来几年调用门

5.Set中不能放重复的,equals

6.Collection col = new ArrayList()  HashSet
在配置文件中配,而不用改变源代码,改的是源代码,这样设计就优雅
面向上层,它们都是该类的子类,用父类引用他们

父类 更通用
子类 更具体

properties 配置文件 读入具体的

交给用户的.class 批处理  目录会改变
相对路径也不行
绝对路径更不行
绝对路径,前面的路径是有一个方法推算出来 getRealPath()

现在用.getClassLoader().getResourceAsStream("") 放在classpath环境变量下的 同时它叫做资源
eclipse src(源程序目录 新建一个Source Folder也可以) 
      .java  --> 编译为.class,编译到classpath指定的目录
      非java --> 原封不动的搬到classpath指定的目录

直接 .getResourceAsStream("")  在同一个包中

7.尝试:refector  debug

8.把COPY放在首位

9.框架是读取配置文件,用反射创建你需要的类

10.依赖注入 pageContext.getSession
我给你一个引用变量,你通过这个引用变量来调用

11.内省introSpector

12.JavaBean 符合一定规则的java类,set get
   JavaBean的属性判断:setXXX或getXXX而不是成员变量
                       如果第二个字符是小写的,第一字母就变成小写
         对于boolean的

13.retVal

14.JavaBean 反射

15.Beanutils 对JavaBean  设置属性和方法
BeanUtils. 对一个JavaBean 多个属性
 copy describe
PropertyUtils. 对一个属性


16.下大的jar包
类似的 : 网页优化 下一个大的图片,用CSS定位,而不是下二十张图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值