Java 类的一般特征

1. 创建类的对象时的内存结构

用图来解释:

使用new 创建 a1 时,成员变量的值都是初始默认值。 然后显式的改变其属性的值。

创建a3 时,a3 是直接指向 a1, 即a3 = a1, 两个对象是一样的, 修改其一 会改变另一个。

2. 成员变量和局部变量的区别

成员变量:如果在声明的时候,不显式的赋值,那么不同数据类型会有不同的默认初始化值。

局部变量:一定要显式的赋值。(局部变量没有默认初始化值)

二者在内存中存放的位置不同:成员变量存在于堆空间中;局部变量:栈空间中。函数代码执行完,局部变量  即被弹出栈。

(题外话:关于变量的分类:1)按照数据类型的不同:基本数据类型(8种)  & 引用数据类型

                                      2)按照声明的位置的不同:成员变量 & 局部变量 )

3. 匿名类对象:创建的类的对象是匿名的。

     1)当我们只需要一次调用类的对象时,我们就可以考虑使用匿名的方式创建类的对象。

     2)特点:创建的匿名类的对象只能够调用一次!

4. 方法的重载(overload)

    要求:1.同一个类中   2.方法名必须相同     3.方法的参数列表不同(①参数的个数不同②参数类型不同)
    补充:方法的重载与方法的返回值类型没有关系!

(eclipse 多行注释:Ctrl+/  或 Ctrl + Shift + / ; 取消多行注释:Ctrl + / , Ctrl +Shift + \ 。)

5. 可变个数的形参的方法:

     * 1.格式:对于方法的形参: 数据类型 ... 形参名

     * 2.可变个数的形参的方法与同名的方法之间构成重载

     * 3.可变个数的形参在调用时,个数从0开始,到无穷多个都可以。

     * 4.使用可变多个形参的方法与方法的形参使用数组是一致的。

     * 5.若方法中存在可变个数的形参,那么一定要声明在方法形参的最后。

     * 6.在一个方法中,最多声明一个可变个数的形参。

6. 方法的参数传递

Java里方法的参数传递方式只有一种:值传递。  即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。

     1)形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量

   2)形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量。

以交换两个变量的值阐述。

(1) 直接在main 函数里


参数交换直接在栈里进行。

(2)定义一个swap(int i, int j) 函数。


在调用函数后,并不能实现变量值的交换。因为只是值传递。

(3)定义一个swap(DataSwap d) 函数。DataSwap 是定义的一个类,里面有两个参数 i 和 j 。


因为是引用类型变量,传递的是地址,所以在调用函数的时候可以实现变量值的交换。

看一个例子:

class Value {
	int i = 15;
}

class TestValue {
	public static void main(String argv[]) {
		TestValue t = new TestValue();
		t.first();
	}
	public void first() {
		int i = 5;
		Value v = new Value();
		v.i = 25;
		second(v, i);
		System.out.println(v.i);
	}
	public void second(Value v, int i) {
		i = 0;
		v.i = 20;
		Value val = new Value();
		v = val;
		System.out.println(v.i + " " + i);
	}
}

问 TestValue 执行完的结果。


 

所以是:15 0
            20

7. 面向对象特征之一:封装和隐藏

四种访问权限修饰符:

对于class的权限修饰只可以用public和default(缺省)。

  public类可以在任意地方被访问。

  default类只可以被同一个包内部的类访问。

8. 构造器

构造器的特征:

       它具有与类相同的名称

       它不声明返回值类型。(与声明为void不同)

       不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

构造器的作用:创建对象;给对象进行初始化 。

注意:Java语言中,每个类都至少有一个构造器

            默认构造器的修饰符与所属类的修饰符一致

            一旦显式定义了构造器,则系统不再提供默认构造器

           一个类可以创建多个重载的构造器

           父类的构造器不可被子类继承

9. this 关键字

    * 1.可以用来修饰属性、方法、构造器

    * 2.this理解为当前对象或当前正在创建的对象.谁调用我,this 就表示谁。比如:this.name,this.show();
 
    * 3.可以在构造器中通过“this(形参)”的方式显示的调用本类中其它重载的指定的构造器。
          *   要求:1.在构造器内部必须声明在首行!

        2.若一个类中有n个构造器,那么最多有n-1个构造器中使用了this(形参);

                      3.调用this()的构造器不能构成环。

10. JavaBean是一种Java语言写成的可重用组件。所谓javaBean,是指符合如下标准的Java类:
          类是公共的
          有一个无参的公共的构造器
          有属性,且有对应的get、set方法

11. package 关键字

       package:声明源文件所在的包,写在程序的第一行。

                      *   每“.”一次,表示一层文件目录。

                      *   包名都要小写。

12. import 关键字

        若引入的包为:java.lang,则编译器默认可获取此包下的类,不需要再显示声明。

        import语句出现在package语句之后、类定义之前

        可以使用import lee.* ;语句,表明导入lee包下的所有类。而lee包下sub子包内的类则不会被导入。import lee.sub.*;

        import语句不是必需的,可坚持在类里使用其它类的全名

        JDK 1.5加入import static语句,表示导入指定类的static的属性或方法。

        如果导入的类是java.lang包下的,如:System String Math等,就不需要显式的声明。

JDK中主要的包介绍:

1.  java.lang----包含一些Java语言的核心类,如String、Math、Integer、  System和Thread,提供常用功能。

2.  java.net----包含执行与网络相关的操作的类和接口。

3.  java.io   ----包含能提供多种输入/输出功能的类。

4.  java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。

5.  java.text----包含了一些java格式化相关的类

6.  java.sql----包含了java进行JDBC数据库编程的相关类/接口

7.  java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界    面(GUI)。

8.  java.applet----包含applet运行所需的一些类。

posted @ 2016-04-21 22:00  岳灵珊  阅读(451)  评论(0编辑  收藏  举报