1.java的基本术语
JDK java开发工具包,sun官方提供的java下载安装包。分操作系统和版本。
JRE java运行环境,下载安装JDK即可得到
JRE。需要配置环境变量。
JVM java虚拟机,是java的核心功能的提供者。java程序必须运行在JVM中。
GC 内存垃圾的回收机制,由JVM提供。
IDE 集成开发环境,是大规模的商业开发工具,主流包括:eclipse/jbuilder/netbeans
API 应用程序接口,在java中特指sun官方类库的说明文档。
2.环境变量的意义和配置
Path可以提供任意目录下都可以运行的命令
windows会自动去Path中找,用;隔开多个目录
CLASSPATH 配置java类库的路径.; 即可
jvm只会从CLASSPATH查找类文件.
JAVA_HOME 配置java安装目录
目前,只需要配置Path和CLASSPATH即可
所有的class文件存在rt.jar中
3.编写规则
分目录以后,有些类在使用前,需要import语句导入。除了本包中的类和sun官方提供
java.lang包中的类,其他类必须import
java.lang包中的类,虚拟机自动完成加载
java是强类型语言
变量必须声明类型以后,才能使用
java数据类型:
基本类型(值):boolean / char / byte / short / int / long / float / double
引用类型(地址(引用)-->内存区域(对象))
类 接口 数组 枚举 标注
类型 变量名 [ = 值]; []中可有可无
int a = 5; a可变,变量 5不可变,常数
变量第一次出现必须带类型,以后不能带类型,带类型的叫变量声明。第一次赋值叫变量的初始化。
int a = 5;
a = 6;
java的运算符
优先级:算数运算符 > 比较运算符 > 布尔运算符 > 等号运算符
小括号决定运算符的优先级
尽量用&& , || 不要单独用& ,| 虽然它们的结果是一样的。
a ++ 相当于 用了a的值,再进行 a = a+1 或者a +=1
b - - 相当于用了b的值,再进行b = b-1 或者b -=1
++ a 相当于先a = a+1 或者a +=1,再用a的值
-- b 相当于先b = b-1 或者b -=1,再用b的值。
java注释有三种:
// 单行注释,从//开始到本行结束都是注释
多行注释:/*开始 */结束,中间都是注释
/** 开始 */结束
/**开始的注释,可以被javadoc命令提取成
单独的文档,API就是这样生成的。
类加载的代码:
1 类名.时候
2 创建该类对象时 new 构造
3 声明变量时,不真正加载类
类型 变量名
静态语句块在类加载时执行,非静态语句块在构造对象时执行(在执行构造的代码前执行)
final关键字 代表不能改变
final 可以修饰 变量(属性+局部变量)/方法/类
final类不能被继承
final方法不能被重写
final变量必须只能赋值一次
abstract 代表无需实现或者无法实现,可以修饰类/方法,即抽象类/抽象方法。
抽象类有构造,无法调用构造(new 抽象类构造错!)
抽象方法没有方法体。
public abstract 返回类型 方法名(参数列表) [throws XXException];
抽象类的引用指向的是非抽象子类对象(多态)
抽象方法的调用其实是在调用子类重写以后的非抽象方法。
为了保证非抽象子类重写抽象方法:
抽象类可以不包括抽象方法,
但是含有抽象方法的类必须是抽象类
比如写一个类,黄金
黄金是一种金属
黄金是一种货币
如何实现呢?接口用于解决此类问题
一个类只能直接继承另外一个类,但是可以实现多个无关接口(implements)
1 接口使用interface关键字
public interface 接口名{}
2 接口支持了多重继承
3 接口与接口的继承是多继承,但使用extends关键字
4 接口可以看成一种特殊的抽象类
5 接口没有构造,接口中所有的属性都是public static final的常量
6 接口中所有方法都是public abstract的
7 强制类型转换成接口时,不检测继承关系,但如果类型不匹配,引发类型转换异常。
在设计中,会大量的采用接口,面向接口编程