第一章
java中的数据类型:简单类型和复合类型:
简单数据类型包括:
整数类型:byte(8位), short, int, long(64位)
(都是有符号类型)
浮点类型:float,double
字符类型:char (16位,使用Unicode字符集)
布尔类型:boolean (C++ 的布尔类型是bool)
复合数据类型包括:
class(类)
interface(接口)
数组
String str= “Hello\u0041\n”; // 定义一个字符串变量,初值为HelloA
char[] str = “Hello”; // 编译错误,不支持字符串类型到字符数组
类型的转换
不同类型优先关系:byte,short,char-> int -> long -> float -> double
举例:
public class Assign {
public static void main (String args [ ] ) {
int x , y ; //定义x,y两个整型变量
float z = 1.234f ; //指定变量z为float型,且赋初值为1.234
double w = 1.234 ; //指定变量w为double型,且赋初值为1.234
boolean flag = true ; //指定变量flag为boolean型,且赋初值为true
char c ; //定义字符型变量c
String str ; //定义字符串变量str
String str1 = " Hi " ; //指定变量str1为String型,且赋初值为Hi
c = ' A ' ; //给字符型变量c赋值'A'
str = " bye " ; //给字符串变量str赋值"bye"
x = 12 ; //给整型变量x赋值为12
y = 300; //给整型变量y赋值为300
}
}
第三章
1、有多个import语句时,先写java包(都是java包时,按照字母先后顺序排序),后写javax,最后写其它公司的包和自己定义的包。
2、命名规则为:
Ø包名中的字母一律小写,xxxyyyzzz。
Ø类名、接口名应该使用名词,每个单词的首字母大写,如XxxYyyZzz。
Ø变量名、方法名第一个字母小写,后面每个单词的首字母大写,如xxxYyyZzz。
Ø常量中的每个字母大写,如XXXYYYZZZ。
3、能够生成帮助文档的注释必须具备一定的规则,那就是注释格式必须为:
/** 说明信息 */
其中作者用 “@author <作者>”的形式体现,内容和关键字之间用空格隔开。其它为:
@version <版本>;
@see <相关内容或类>;
@since <本内容在哪个版本以后开始出现>。
@param <属性名称> <参数说明> ;
@return <返回值说明>;
@exception <例外说明>;
@throws <异常类> ;
@deprecated <功能逐渐被淘汰说明>。
第四章
面向对象的世界
程序 = 对象 + 消息
三大特征
•封装 (encapsulation): 类与对象
•继承 (inheritance) : 基类与派生类
•多态 (Polymorphism): 抽象类与接口
优点
可重用(通用代码)
可扩展(插入新的功能,不需要改变原有的代码)可维护(代码结构优良,接口清晰)
抽象(abstraction)是从被研究对象中舍弃个别的、非本质的、或与
研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,
形成对研究问题正确的简明扼要的认识。
l对象是对客观事物的抽象。
l类是对对象的抽象,在语言中是一种抽象的数据类型。
l类的定义在Java中可简述为
class 类名{ }
l它们的关系是,对象是类的实例,类是对象的模板。
数组长度可以为0(不是null)
某些类的方法返回数组对象引用:
例如:linkedList、Vector对象可以调用方法toArray()返回
Object[]数组,此时数组中为对象的引用,不是对象。
Arrays.sort方法:对char,byte,short,int,float,double,long按升
序排列,也可指定排序方法对对象进行排序(见JDK文档)。
System.arraycopy()——复制数组
创建对象时的初始化顺序:
1.系统会对数据成员进行默认初始化
2.执行数据成员定义处的初始化语句
3.调用构造方法为数据成员指定初值
访问权限首先看类前的修饰符,当类的修饰符为public时,
则类可以被所有的类所访问(可以import),当为默认时,
则只能为包中的类所访问。在此前提下,再看方法前的修饰符。
类前修饰符为public时,当属性和方法前的修饰符为public时,则该属性可以被所有类访问;当属性和方法前为protected修饰时,对于类定义而言,可以被同包中的类和所有子类访问(子类和父类可以不在同一个包中),也就是B+C范围,但对于对象而言,只能被同一个包的类对象所访问,也就是B的范围;当为默认时,只能被同包中的类所访问(比protected访问权限小);当为private时,只能被本类内部所访问 。
方法名 | 说明 | 备注 |
Object clone() | 将当前对象克隆 |
|
Boolen equals(Object obj) | 判断两个引用是否指向同一对象,其参数不能为普通数据类型 | 被很多子类重载,用于用语判断对象的内容是否一致,如String, 包装类, URL, File, ,java.util包中的类或接口等 |
void finalize() | 对象被释放时使用 |
|
Class getClass() | 获得当前对象的类对象 | 注意Class中的首字母大写 |
int hashCode() | 得到代表对象的一个整数,这个整数在应用程序运行时保持不变 | 这个整数的意义类似对象的身份证号码,String, 包装类, URL, File, ,java.util包中的类或接口将本方法覆盖,当内容相同时得到的hashCode值相同 |
String toString() | 得到代表这个对象的字符串 | String, 包装类, URL, File, java.util包中的类或接口将本方法覆盖, 得到的值将是其对象内容 |
Void notify | 用于线程同步中唤醒等待的线程 |
|
Void wait() | 应用于线程同步中的线程等待 |
|
覆盖
1.子类的访问修饰符权限应等于或大于父类
2.同名的static方法和非static方法不能相互覆盖
3.方法前有final修饰符,此方法不能在子类方法中进行覆盖
4.在JDK中,很多父类的方法被子类重新覆盖,赋予了不同的含义,如Object类中的boolean equals(Object obj)方法
5.抽象类中如果存在抽象方法,则具体子类必须对抽象方法进行覆盖
| 抽象类 | 接口 | |
共同点 | 二者都可具有抽象方法,都不能实例化,但都可以有自己的声明,并能引用子类或实现类对象。 | ||
不同点 | 属性变量 | 可以有变量 | 不能有,只能是静态常量。 |
成员方法 | 可以有具体方法(而且具体方法可以调用抽象方法)。 | 如果有方法,则全部是抽象方法。 | |
实现策略 | 必须有子类继承 | 必须有实现类实现 | |
扩展性 | 弱 | 强 |