java基础加强视频zxx(1-32)

来源:互联网 发布:丹尼斯c语言 编辑:程序博客网 时间:2024/06/05 07:23

★1 课程价值与目标介绍:
在这个行业有没有发展,有没有前途,就看你的基础怎门样!!
学习能力,好的练兵场。
学好基础,能证明自身的学习能力。
JKD1.5的新特性?通过面试成长了,酷6 南昌大学7K。
JDK1.6的新特性。不交面试白纸。
★2
MyEclipse 是Eclipse的一个插件,可以扩展它的功能。
Eclipse比较占系统内存,使用java语言写出来的,
实际在运行java.exe,java.exe启动一个java 类,而这个类的运行效果是这样的一个界面。
javaw。启用java中的图形界面所用的虚拟机,通常是javaw,因为它启动的时候就会把命令行窗口关掉。
任务管理器
面试  数据简写
javaEE
IDE integrity development enviroment集成开发环境。
JMS
JMX
JNDI
考专业术语的英语全称,往往是大型的好公司会出这样的题。考阅历,考知识面。
集成开发环境不只是有Eclipse,SUN公司花了很多钱,推广,开发工具就是提高工作效率,节省开发时间。
设置Eclipse中Workspac。
★3
开发程序的两个阶段:编译阶段和运行时阶段
Eclipse打开一个新的工作间的时候,需要把原来的工作间关掉,然后加载新的工作间的相关配置信息。
★4 ★5 试图管理及程序调试
Bad version number in .class file
javac 的版本过高出现的问题,必须同工程中的文件相一致:
1:workspace的设置(window\porference\compile)
2.右键,properties:javaenhance对话框中。
★6 配置java模板代码
surround with
★7 在eclipse中导入已有的工程。
如果有许多jar包需要导入,可以创建一个user library。再一次性将所有jar包导入进来。
★8 静态导入和编译器语法设置 
&问题:compiler的版本是保存在文件中吗?
在某个workspace中,它所保存的环境变量设置信息是保存在何处?

jar 包,第三方的类,第三方的类是不是以jar包的形式???
java开发工具设置:
编译compiler
配置快捷键,有很多辅助的工具可以自定义设置。
一个Workspace包含多个工程。
★9 可变参数 
面试题:overload 和override的区别。
回答的是不是很好?
&想法:定义一个循环,打印如下字符
1+2+3+4一直加到100.输出这样的一个结果。
知识点:可变参数的特点?
★10 增强for循环
Eclipse快捷键:
单行注释符号的添加,选定需要注释的代码区域,ctrl+alt+/
注释段落,则:ctrl+shift+/ 效果是:/*  */
copy lines ctrl+alt+down 复制上一行代码。
------------------------------------------------
增强for循环,The enhanced for statement
在sun公司官网上下载关于java语言的规范文档,
expression 可以是运算后的一个集合,该集合必须实现了Iterabale接口,如果是HashMap这样的集合显然是不行的。
★11 jdk1.5提供的基本类型数据的自动拆箱和装箱。

重构的好处:定义一个类,如果别的地方调用了这个类,则在变更该类的名称时,其他地方相关联的类都随着更改。

定义一个整数为Integer对象,在-128~127之间是,比较返回true,大于该范围返回false。

    对于小的整数,考虑到会经常使用,则该范围内的数字在内存中不必每次都开辟单独的内存空间存储。这就是享元模式。flyweight。一种设计模式。
 如果有很多很小的对象,有很多相同的东西,可以把它们变成一个对象。对于不同的东西,把它变成外部的属性,作为方法的参数传入。
    
&有些东西不需要别人教,心里好奇做一个实验看看。
★12 枚举
java出场,宣布号称去掉了c语言那些臃肿的东西。
现在java程序员越来越多,所以对大家的要求也越来越高了。学习,要学深学透学多。

★13 用普通类模拟枚举实现的原理
匿名类。
如果想在一个类中编写完各个枚举类和测试调用类,那么可以将枚举类定义成调用类的内部类。
★14 java5的枚举的基本应用
问题:enum 类的方法中没有values()方法。该视频06:30何解?
Enum 作为类和视频中的enum是有区别的。
[03/18/12 21:45]暂停,学习老毕关于枚举的视频、
★15 [03/24/12 10:15]继续:实现带有构造方法的枚举;
枚举中定义元素时后面还有方法时,最后一个元素必须加分号;结束。
★16 实现带有抽象方法的枚举。
枚举就是一个类,枚举的成员就是这个类的实例对象。
这个方法的返回值还是这个类自己。
子类必须完成父类的抽象方法。
这个枚举是抽象类,它的每个成员都是由它命名的一个子类来实现的。
带上了抽象方法的枚举。
子类的构造方法,调用父类有参的构造方法。
new 子类的实例对象,并且调用父类的有参构造方法。
类的方法返回的类型可以是自己这个类型,类里面可以定义静态常量,常量指向的结果是就是这个类型的实例对象。
如果要写单例,可以定义一个枚举,并且这个枚举中只有一个元素。
枚举就是一个特殊的类。:构造方法不用自己写了,是私有的
★17 透彻分析反射的基础。
java的反射,java中的类,类的名字?属于哪一个包?有哪些成员变量,哪些方法?它的父类是什么?
所以:Class类面熟了哪些方面的信息呢?:
类的名字,类的访问属性,类所属于的包名,字段名称的列表,方法名称的列表,等等。学习反射就要明白Class这个类。
Class类中提供了相应的方法来返回这些东西。
Class类实例代表的是内存中的字节码。
class类的创建是将代表该类的字节码加载到内存中,再使用这些字节码来创建一个一个的对象。
p1.getClass();得到该实例对象所属的类。
面试题:
Class.forName的作用:它的作用就是返回字节码。返回的方式有两种。java虚拟机有或没有的情况,如果代码已经被jvm加载过,已经存在内存中了,那么直接返回;如果内存中还没有,就要用类加载器去加载。把加载进来的字节码缓存在jvm中。再返回。
Class.forName("java.lang.String")得到这个类的字节码。

字节字符拉长缩短整两次都是浮云,是不是?
byte、char、int、double、float boolean、short 、long

Class cls1 = void.class;

Integer里面专门定义了一个常量叫TYPE。这个常量代表包装类型所包装的基本类型的字节码。

★18  理解反射的概念:
Class类: Field、MethodConstructor、Package等。
★19 构造方法的反射应用
Constructor
1.4 没有可变参数。
1.5才出现
反射会比较占用系统内存。导致机器性能下降。
★20
Generate Constructor using Fields...
用已有的字段来生成构造函数的一个代码。
fieldY只是对应类字节码中的一个变量。没有对应到对象身上。它不代表一个具体的值,只代表一个变量!

★21
★22
用反射调用String的CharAt方法,类的包要导入:
com   :非标准的,内部用的。
java开头的:标准的,外部用的
用反射的方式得到字节码里面的方法,再拿着这个方法去作用于某个对象。
静态方法被调用时不需要对象。
jdk1.4 和jdk1.5的一个区别: 1.4还没有可变参数,当要传多个参数的时候,需要将这些参数封装成一个数组。1.5有了可变参数,
★23 对接收数组参数的成员方法进行反射
Method methodCharAt = String.class.getMethod("charAt",int.class);
  System.out.println(methodCharAt.invoke(str1,1));
  System.out.println(methodCharAt.invoke(str1,new Object[]{2}));

  TestArguments.main(new String[] {"111","222","333"});
  //在程序中用静态代码的方式直接调用它的main方法,现在用反射的方式调用,
  为什么要用反射的方式调呢?
  String startingClassName = args[0];
  Method mainMethod = Class.forName(StartingClassName).getMethod("main",String[]);
  mainMethod.invoke(null,new Object[]{new String[]{"111","222","333"}});
  mainMethod.invoke(null,(Object)new String[]{"111","222","333"});
  
★24 数组与Object的关系及其反射类型

byte   B
  char   C
  class or interface L classname;
  couble   D
  float   F
  int   I
  long   J
  short   S
--------------------------------------------------------
a1.getClass().getSuperclass().getName()  反射方式获得父类的名称。
  基本类型的一维数组,不能转换为Object数组。基本类型不是Object。
  定义数组时,后面如果给了具体的元素,[]中则不能再有表示数组元素个数的int
  int [] a1 = new int [3];
  Object[] aObj1 = a1;
  Arrays中有大量的对数组进行操作的静态方法。
  asList  将数组转换为List
  int[] 和String[] 转换为Arrays.asList(int[])打印,
  int数组中的元素显示不出,还是为hashCode值;String[]则转换打印成功。
  Object把int[]当做一个Object
★25 数组的反射应用。
怎么得到数组中的元素类型?
可以得到某一个具体元素的类型
★26 反射的综合案例。
★28 用类加载器的方式管理资源和配置文件
配置文件到底放在哪里?
配置文件在实际的项目中,不采用相对路径来存储。相对路径是一个飘忽不定的东西,它随着当前运行状态所在的目录走。
配置文件放在程序内部。一定要记住完整的路径,但完整的路径不是硬编码,而是运算出来的。
&类加载器把.class文件加载到内存中。
框架的配置文件都放在classpath指定的目录中。原因是内部用类加载器加载的配置文件。
开发框架,配置文件放在classpath的根目录下,如果是用eclipse,则放在resource目录下。
★29 由内省引出JavaBean的讲解。
javaBean是一种特殊的java类。符合这种特定规则。特定的get和set方法。
★30
内省对应的英文单词为:IntroSpector,它主要用于对JavaBean进行操作,JavaBean是一种特殊的java类,其中的某些方法符合,包中命名规则,如果一个Java类中的一些方法符合某种命名规则,则可以把它当做JavaBean来使用。
&对一个JavaBean来操作,取某个属性一定是要通过get方法来取。
选定3行,右键选取:refactor——>,extract method
这样可以快速建立起一个方法。
★31:对JavaBean的复杂内省操作。
用内省的方式对javaBean的属性进行了get和set操作。
由于对JavaBean的属性进行设置和读取操作需求广泛,开源勇士做了一些东西。
提供了专门对JavaBean进行操作的工具类。
Beanutils工具包。
★32 关于JavaBean工具包的讲解。
使用BeanUtils工具包操作JavaBean。
jar包导入时,不要添加外部路径的方式,因为在传送一个工程时,jar包是不会随工程一期copy的,这样到别的机器上运行就容易出错。
把jar包放在工程内部,解决了copy工程时,没有jar包的问题。
apache 提供的一个logging开发包,即日志开发包。
将jar包copy到lib下,再增加到path设置。
BeanUtils中的get和set方法都把值当做字符串来操作。
它支持属性链,一级一级地点下去。
javaBean可以它Map相互转换,key——value的转换。
jdk7的一个新特性:关于Map的定义:
Map map = {name:"zxx",age:18};
&Map的key,相当于javaBean的属性。

原创粉丝点击