一 课程内容
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 '';对象 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());
}
}