1.1 Simplicity: simple grammar, rich library? 简单好用:?语法简单,库文件丰富
1.2 Pure OO: everything is object!? 所有程序都是对象
1.3? Security: memory access, garbage collection, exception 安全:内存使用,垃圾收集,意外处理
1.4 Portability: Java Virtual Machine JVM
1.5 Interpreted execution: Bytecode
2.1 package declaration 包声明? (一是该类所属的包,二是该类import的包)
2.2 class declaration? 类声明
2.3 variable declaratio? 变量声明和初始化
2.4 constructor 构造函数
2.5 method? 方法?
2.6 main method? 主要方法
1.主要数据类型的值不是对象!
2.每一个主要数据类型都有一个相应的Wrapper (封装器)将其值封装为一个对象
注:“472”不是一个int对象,a的Compare函数不适用
name = First letter (letter、_、$) +The remaining part (digit 、letter 、underline‘_’ 、‘$’)
5.1 Mathematical operator: +、- 、* 、/ 、%
5.2 Relational operator :> 、>= 、?< 、<= 、?== 、!= 、?
instanceOf (测试左边是否是右边类的实例)
5.3 Logical operator :&、|
5.4 Bitwise operator (移位操作):<<、<<
5.5 Assignment operator(赋值操作)
用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。
另外一个关键字final:可以用来修饰类、方法和变量,表明它们不能被继承或被修改。
一般在需要实现以下两个功能时使用静态变量:
1.在对象之间共享值时
2.方便访问变量时
? ? ? ??
因此静态方法:
1、不能使用this关键字
2、只能调用所属类的静态成员和静态方法.
Math类中的所有方法都是静态的,因为均可直接调用。
此外,一个类内部的方法一般都是非静态的。
1>只有成员内部类才能加 static?变成静态内部类,成员内部类不能存在任何static的变量和方法。
非静态内部类是跟外部类的实例绑定的。
2>成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括 private?成员和静态成员)
内部类和外部类的方法和变量同名时,使用如下方法访问外部类同名成员:
外部类?.this?.成员变量
外部类?.this?.成员方法
如果不加外部类.this. 则调用的是内部类变量和方法
3>一个类中可以有多个静态初始化块和多个普通初始化块;静态初始化块的执行要早于普通初始化
块;同一个类型的初始化块的执行顺序取决于定义的先后顺序
重载只有一个要求,你得让编译器知道你用的是那么多重名函数中的哪一个!!
编译器通过什么来判断呢?只能通过函数中的参数呀。
每个程序都有0个或者1个Main method:
1>寄存器:
2>栈:对象地址、主要类型
3>堆:对象本身
4>方法区: 对象方法,静态数据
5>常量池:
6>内存:? 流对象、持续对象
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
抽象类本身并不能被实例化,抽象类必须要继承后才能使用。
只有方法名,没有方法体。因为可能每个子类的该方法体都不同。
声明抽象方法会造成以下两个结果:
The access right 只能缩小,不能放大
且在进行构造时,子类的构造函数可以构造父类的类
例:Animal a = new Cat(); // 向上转型
1>extended表示该继承是单继承:
?2>使用 implements 关键字可以变相的使java具有多继承的特性
3>java不支持多继承,但支持多重继承
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
示例:
final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。
使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写,或用于修饰变量,该变量不可被修改
声明类:
注:?final 定义的类,其中的属性、方法不是 final 的。
子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过?super?关键字调用父类的构造器并配以适当的参数列表。
如果父类构造器没有参数,则在子类的构造器中不需要使用?super?关键字调用父类构造器,系统会自动调用父类的无参构造器。
示例:
子类对父类方法内容的重新定义。
若想要在子类中调用父类中的被重写方法,只能使用super关键字进行调用
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
示例:
现实中,比如我们按下 F1 键这个动作:
- 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
- 如果当前在 Word 下弹出的就是 Word 帮助;
- 在 Windows 下弹出的就是 Windows 帮助和支持。
同一个事件发生在不同的对象上会产生不同的结果。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。