Java课程笔记_2

一 课程内容

 1 int是32位数,所以在用16进制表示时0xffffffff(f表示1111)。负数是该数绝对值补码取反加1。

 2 面向过程编程:先确定算法,再确定数据结构。

面向对象编程,先确定数据结构,再确定运算。

3 this变量代表对象本身。当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量。this简化构造函数的调用,如this.x = x,将局部变量值赋给成员变量x。

4 构造方法名字和类名相同,并且没有返回值。

主要用于为类的对象定义初始化状态

我们不能直接调用构造方法,必须通过new关键字调用,从而创建类的实例

(1)当没有定义构造方法时,JAVA编译器为我们提供一个缺省的不带参数的构造方法。(2)当已经定义一个构造方法时,不管该方法带不带参数,JAVA编译器都不会提供缺省构造方法。(3)当定义两个构造方法时,带参数的调用带参数构造方法,反之亦然。这也是方法的重载。

5 缺省构造方法各种数据类型初始值:数值型 0;boolean false;char '\0';对象 null。

6 Point()

    {

        this(1,1);    在不带参数的构造方法中调用带参数的构造方法

    }

7 实例方法和实际数据成员:实例方法是一个类的实例(对象)所调用的成员方法。

所有的对象所调用的成员方法在内存中只有一份拷贝,但是在内存中可能有多个对象,每个对象在内存中都存在一份拷贝,所以成员变量值可能不同。如:

pt.output()和pt2.output()只有一份拷贝,但是pt.x和pt2.x有两份拷贝。

8

(1)静态方法可以作为类的方法,在类加载时分配内存空间,所以直接调用,在。不是静态的方法作为实例(对象)的方法,需要new分配空间以后调用。

(2)静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。

(3)可以用类的对象obj去调用静态的方法method(),如:obj.method()。

(4)静态变量在内存中只有一个拷贝,所以多个对象给静态变量赋值,以最后一个为准。

 9 java Point这条解释语句先执行main方法的原因在于有static,是函数在加载Point类时运行,否则必须得在创建完对象后才能运行。

 10 方法重载在同一个类中,方法重写(覆盖)在父类和子类之间。

 11 每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。由于子类在定义父类已有的方法时会覆盖父类的方法,所以用super来访问父类被覆盖的变量和方法。

 12 多态性:通过覆盖父类的方法实现,在运行时根据数据传递的对象引用,来调用相应的方法。

 13

面向过程编程:

class Rectangle

{

    Static int perimeter(int length,int width)

    {

        return 2*(length+width);

    }

    int area(int length,int width)

    {

        return length*width;

    }

    public static void main(String[] args)

    {

        

        System.out.println("perimeter = "+ Rectangle.perimeter(5,4));

        System.out.println("area of = "+ Rectangle.area(5,4));

    }

}

 

面向对象编程:

class Rectangle

{

    int l,w;

    int perimeter()

    {

        return 2*(l+w);

    }

    int area()

    {

        return l*w;

    }

    public static void main(String[] args)

    {

        Rectangle rect1=new Rectangle();

        Rectangle rect2=new Rectangle();

        

        rect1.l=10;

        rect1.w=5;

        System.out.println("perimeter of rect1 = "+rect1.perimeter());

        System.out.println("area of rect1 = "+rect1.area());

        

        rect2.l=6;

        rect2.w=4;

        System.out.println("perimeter of rect2 = "+rect2.perimeter());

        System.out.println("area of rect2 = "+rect2.area());

        

    }

}

posted on 2014-07-06 13:55  追梦的小屁孩  阅读(150)  评论(0编辑  收藏  举报