2008-1-21 (第一天)
1.Java版本介绍:
J2EE Java 2 Enterprise Edition 企业应用 Stures hiblliate
J2SE Java 2 Stander Edition 多线程 流
J2ME Java 2 Micro Edition 运行与微平台 手机平台
2.Java编程机制:
边编译边解释型语言
3.Java 虚拟机 Java virtual machine
Java的运行平台 (类似计算机的CPU的功能)
Java虚拟机是独立与平台的(使得Java语言有着很好的跨平台特性)
Java虚拟机读取并处理经过编译的与平台无关的字节码.Class文件
3.1Java虚拟机的具体内容:
JVM的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块, 而不影响系统其他功能模块的正常运行。
3.2Java虚拟机类装载的实现:
类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量的初始化Java代码和静态Java代码块。
4.Java运行步骤:
加载--校验--执行
5.垃圾回收机制:
Java语言用来释放内存的工具.在内存不使用的时候有垃圾回收机制自动释放,像 c,c++是有程序员编写代码来释放,但java中程序员可以只管用.
程序员没有办法干预内存的释放.不能控制垃圾回收机制
5.1垃圾回收机制内存分配:
Java中有一种内存存储结构,堆内存.当对象通过new等手段建立时,便在堆内存中开辟空间,然后在栈内存之中会存储一个该堆内存的首地址来映射这个堆内存.但是程序员并不能手动的去释放这片内存,即使你不使用了它也将继续占用着内存,这时便由垃圾回收机 制负责.垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能.
5.2垃圾回收机制的优缺点:
优势:垃圾收集能自动释放内存空间,减轻编程的负担。首先,它能使编程效率提高。可不需要手动的释放内存,有jvm的垃圾回收机制来管理内存空间.其次是它保护程序的完整性, 垃圾收集是Java语言安全性策略的一个重要部份。
缺点:垃圾收集的一个潜在的缺点是它的开销影响程序性能。Java虚拟机必须追踪运行程序中有用的对象, 而且最终释放没用的对象。这一个过程需要花费处理器的时间。其次垃圾收集算法的不完备性,早先采用的某些垃圾收集算法就不能保证100%收集到所有的废弃内存。当然随着垃圾收集算法的不断改进以及软硬件运行效率的不断提升,这些问题都可以迎刃而解。
5.3使用垃圾回收机制应注意:
1.不要试图去假定垃圾收集发生的时间,这一切都是未知的。
2.Java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法
3.挑选适合自己的垃圾收集器。
4.关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的,不要让自己的一个小错误导致内存出现大漏洞。
5.尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null,暗示垃圾收集器来收集该对象,还必须注意该引用的对象是否被监听,如果有,则要去掉监听器,然后再赋空值。
6.环境变量的配置:
系统变量
用户变量
出现相同的变量名,环境变量是两个加到一起
Path :JDK的BIN路径 --- 操作系统可执行变量的路径
Classpath : .; JRE的LIB路径 加 ;JDK的lib路径 --- 配置java的类文件所需要的包的路径
在CMD中 set xx=xx 然后再看就可以看到 说明已经配好了
7.Eclipse使用
基本工作空间的创建:
创建一个静态工程
创建一个源文件夹
创建一个PACKAGE
创建一个类
建立包的名字的构成方法:机构性质 机构名 项目名 模块名 子模块名
8.Java 中使用NEW创建对象 后面要跟上构造函数
This.name 指当前对象的
构造器:当事例化一个对象时要找到一个相应的构造器来创造实,构造器名字与类名字相同
不要对类内部定义的数据进行直接的操作 private public的区别
构造函数里面将静态变量做加法运算,每次调用的时候都会有一个增量.
构造函数里面还可以使用本类的方法,然后在每次构造的时候调用.
方法名 第一个单词首字母小写 第二个单词首字母大写
判断字符串相等不要用等号:
if (sex.equalsIgnoreCase("f"))
fnumber++;
else
mnumber++;
判断变量是否相等的办法 f 为字符串 整个为判断字符串相等 而不是用等于符号
9.信息的隐藏和封装
避免参数的改变:定义全局变量,在方法体内改变,不要直接改变影响大局
所以要调用类中的private属性是,给其相应的set get器去解决.