您的位置:首页 > 编程语言 > Java开发

Java基础知识点总结五

2014-06-04 12:33 375 查看
1. JDK即Java
Develop Kit,Java开发工具包。

2. JRE(Java
Runtime Environment),即Java运行环境,通常已包含在J2SDK中了。如果我们仅仅是为了运行Java程序,而不是从事Java开发,我们可以直接下载JRE,在我们的系统上安装。

3. java是简单的、面向对象的(完全)、健壮的(强类型)、分布性的(网络链接)、解释的(由Java编译器将代码(.java)编译成字节码(.class),再由Java解释器解释执行)、与平台无关的、多线程的、动态的(在运行时确定引用)。

4. Java的跨平台是通过Java虚拟机(JVM)来实现的。

5. Java虚拟机(JVM)不是跨平台的,不同的操作系统有不同的JVM,目前并不是所有的系统都有JVM,所以Java不是在所有的系统都可以运行的。

6. 解释器加载的是类,而不是文件。如:javac
welcome.java java welcome

其中welcome就是带有public的那个主类,也就是与保存文件名同名的类。

7.运算符:^(异或,同为0异为1),<<(左移),>>(带符号右移),>>>(不带符号右移),三元运算符(?:)(唯一一个)。

8.Java命名规范:

常量:大写,单词间用下划线隔开。(final声明)

变量:小写,可大写,有意义。(字母、下划线、美元符;数字不能在开头)

方法:首字母小写,后面单词首字母大写。

包名:前缀是小写英文字母组成。

类名:所有单词首字母大写。

接口:所有单词首字母大写。

9.声明常量用final,例:final
float PI=3.1415926f;

10.成员变量分为两种:静态变量和实例变量。用static修饰的是静态变量,它作用范围是整个类,可被所有实例共享。通过“类名.变量名”调用。静态变量的生命周期取决于类的生命周期,类加载时,就为静态变量分配了内存空间,之后不会再为之分配内存空间。

11.在声明时,不能使用public,protected,private,static对局部变量进行修饰。不能通过类名或引用变量来访问局部变量。

12.Java数据类型分为两类:基本数据类型和复合数据类型。复合数据类型包括类(class)、接口(interface)、数组等。

13.基本数据类型的表示:01011、-031(8进制以0开头)、0X25、0xb01e(十六进制以0X或0x开头)、0X160000000L(long型以L或l结尾,可省略)、0.12f(float弄以F或f结尾,不可省)。

14.转义字符:/r(回车)、/n(换行)、/’(单引号)、/”(双引号)、/t(垂直制表符)。

15.引用类型包括类引用类型、接口引用类型和数组引用类型。定义如(Person
someBody;FileFiter fileFilter;int[] myLikes;)无论何种引用类型,它们引用的都是对象。引用类型的变量不是对象,而是对象的引用,它的值是对象的内存地址。

16. 嵌套类对其封装类有一种特权:可以不受限制的访问封装类的成员,无论封装类的成员是否声明为private.

17. 抽象类abstract
calss:不能实例化;可以含有static和final变量;可含有非抽象方法,但抽象方法一定在abstract
calss中,方法声明中不能含有private,final,static,native ,synchronized
; 隐含的,方法不是public;不是一个完事的类;仅能有一个父类;可以含有构造方法,但构造方法没有方法体。

接口:不能实例化;变量都是static或final,但没有显式声明;方法都是抽象的,所有方法都只有在其子类中实现;方法声明中不能含有private,final,static,native
,synchronized ;即使没有显式声明,方法都是public;

用于描述行为的规范;一次可以实现多个接口;不能含有构造器。

18. 1)abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

2)在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static
final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

3)abstract class和interface所反映出的设计理念不同。其实abstract
class表示的是"is-a"关系,interface表示的是"like-a"关系。

4)实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

5)接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

6)抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

7)接口中的方法默认都是 public,abstract 类型的。

19.接口使用原则:

1)接口中的成员变量默认都是public、static、final类型的,必须被显式初始化。

2)接口中的方法默认都是public、abstract类型的。

3)接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法。

4)接口没有构造方法,不能被实例化。

5)一个接口不能实现另一个接口,但它可以继承多个其他接口。

6)接口必须通过类来实现它的抽象方法。

7)与子类继承抽象父类相似,当类实现了某个接口时,它必须实现接口中所有的抽象方法,否则这个类必须被定义为抽象类。

8)不允许创建接口的实例,但允许定义接口类型的引用变量,该变量引用实现了这个接口的非抽象类的实例。

9)一个类只能继承一个直接的父类,但能实现多个接口。

20.构造方法语法规则:

1)方法名必须与类名相同。

2)不要声明返回类型。

3)不能被static、final、synchronized、abstract、native修饰。

21.构造方法只能通过以下方式被调用:

1)当前类的其他构造方法通过this语句调用它。

2)当前类的子类的构造方法通过super语句调用它。

3)在程序中通过new语句调用它。

22.如果一个类允许其他程序用new语句构造它的实例,但不允许拥有子类,那么就把类声明为finla类型。

如果一个类既不允许其他程序用new语句构造它的实例,又不允许拥有子类,那么就把类的所有构造方法声明为private类型。

23.静态工厂方法使用方式:

Class c=Class.forname(“Sample”);//返回代表Sample类的实例

目前比较流行的规范是把静态工厂方法命名为valueOf或者getInstance.

valueOf:该方法返回的实例与它的参数具有同样的值,如

Integer a=Integer.valueOf(100);//返回聚会为100的Integer对象

getInstance:返回的实例与参数匹配,如

//返回符合中国标准的日历

Calendar cal=Calendar.getInstance(Locale.CHINA);

24.静态工厂方法与用new语句调用的构造方法的区别:

1)构造方法的名字必须与类名相同,而静态工厂方法的方法名可以是任意的。

2)每次执行new语句时,都会创建一个新的对象;而静态工厂方法每次被调用的时候,是否会创建一个新的对象完全取决于方法的实现。

3)new语句只能创建当前类的实例;而静态工厂方法可以返回当前类的子类的实例,这一特性可以在创建接口时发挥作用。

25.对象的finalize()方法的特点:

1)垃圾回收器是否会执行该方法及何时执行该方法,都是不确定的。

2)finalize()方法有可能使对象复活,使它恢复到可触及状态。

3)垃圾回收器在执行finalize()方法时,如果出现异常,垃圾回收器不会报告异常,程序继续正常执行。

26.初始化问题:

1) 先实现父类的静态域,静态方法(必须调用才能动态执行)---然后再就是父类的一般域 和方法(方法必须调用才能动态执行) ,接着就是子类的静态域,静态方法(必须调用才能动态执行)---然后再就是子类的一般域 和方法(方法必须调用才能动态执行)

2)如果不涉及继承跟static,用new创建对象时,会调用那个类的构造函数,而在调用构造函数之前必需先初始化域(因为在构造函数里,可能会用到这些成员变量) ,等域初始化完后再调用构造函数。强调一点:只要是成员变量,那么不管它放在类的哪个部位(但在方法或块内部不算,因为那算是局部变量),它都在构造函数调用之前调用,这是编译器确保的。

3)如果涉及继承,当用new创建子类对象时,调用顺序是这样的:

1))先初始化父类的域(成员变量或块)

2))调用父类的构造函数(没有明确定义的话,调用默认那个,即编译器为你创建的)

3))再到子类,初始化子类的域

4))这时才轮到调用子类的构造函数

原则是:要确保域在被调用之前要被初始化.

上面是涉及两层,如果是涉及多层继承的,那么一致递推上去,即先初始化父类的域,然后调用父类构造函数,再初始化子类的域然后再调用子类的构造函数,再初始化子子类的域(用这个名字好像有点怪,哈哈,就是孙子类的意思)然后再调用子子类的构造函数,一致类推下去

4)涉及static的话,static域是在编译的时候加载的,原则是:

1))static域是在非static(上面说的都是非static)之前调用的

2))static域只初始化一次(即只调用一次),打个比方A
a = new A(); A 里有static域,只有当你第一次使用new创建对象的时候它会在非static之前调用,而如果你还想再用new创建对象时,static域这段代码是不会被调用的(因为static的东西是属于类,所以对象共享的,一次就够了)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: