首页

this关键字、构造方法及对象的创建

搜索

1. 掌握this关键字  //代表当前对象,代码更加明确

1) 用于在方法内指代当前对象,如:

this.p-->当前对象的属性p

---------------------------------------

当一个方法内属性与参数或局部变量同名时,

必须使用this得到当前对象的属性

---------------------------------------

2. 重点:掌握构造方法的定义

2.1 什么是构造方法?

一种特殊的方法,在创建对象过程中自动调用,

通常用于设置属性的初值

语法:

public 类名(形式参数){   //public似乎可以省略

... ...//构造方法体

}

如:

public Point(){}

public Point(int x,int y){... ...}

2.2 说明:

1) 没有参数的构造方法称为默认构造方法

如:public Point(){ }

2) 构造方法可以重载,即定义具有不同参数的构造方法

如: public Point(int x,int y){  

this.x=x; // 将参数x的值赋给当 前对象的属性

this.y=y;

}

2.3 难点:理解创建对象和构造方法之间的关系

(构造方法是在创建对象过程中自动调用的)

Point p1=new Point(); //调用默认构造方法

Point p2=new Point(100,200);//传递与构造方法对应的实参,在创建对象p2的过程中,自动调用具有两个参数的构造方法

重要规则:

如果一个类没有定义任何构造方法,系统自动提供无参默认的构造方法;

如果一个类已经定义了构造方法,系统不会自动提供无参默认的构造方法

3. 重点:理解对象的创建过程

3.1 JVM的主要内存结构:

1) 栈结构(Stack) - 用于存放方法的参数和局部变量

     具有后进先出的特点

如:int i=1;//局部变量,在栈中分配4个字节的空间

char c;//占用2个字节的空间,默认值为'\u0000'

Point p1;//p1是一个局部变量,默认值为null

2) 堆结构(heap) - 用于存放对象,为对象的分配空间

    堆中的对象不再使用时,会自动从堆中移除,这种特性称为垃圾回收

3.2 对象的创建过程:

Point p=new Point(3,5);

Step1. 首先将变量p存放在Stack(栈)中,此时p的默认值为null

Step2. JVM在heap(堆)中分配合适的空间以存取Point类型对象的数据

    对象的属性存储在对象中,每个属性具有对应的默认值:0,0.0,'\u0000',false,null

    每一个对象都会具有一个起始的内存地址

Step3. 设置对象属性的初值:

public int x=1;

Step4. 调用对应的构造方法:

JVM-->public Point(int x,int y)

将实参3和5传递给对应的形参

运行时形参的值存在于栈中

Step5. JVM将堆中对象的起始地址赋给变量p,

       变量p的值实际上是对象在堆的起始地址

       int i=1;//变量的值为1

       Point p=new Point(3,5);

//变量p的值为Point对象在堆中的起始地址

       变量p通常称为引用变量,p的类型称为引用类型

4. 区分基本类型和引用类型:

   基本数据类型:byte,short,int,long,float,double,char,booolean

int i=1;-->局部变量i在栈结构中存储的是实际的值

   引用类型:例如:数组,String,Point类等

 引用类型的局部变量或参数在栈结构中存储的是对象在堆中的起始地址

int[] arr=new int[10];//在堆中

--> JVM在堆中分配40个字节的空间

    并将起始地址赋给栈中的引用变量arr

掌握null的使用:

Point p;//p的默认值为null

if(p==null){

输出true

}

p.x=100;//此时抛出空指针异常

5. (重点,难点) 掌握调用方法时的按值传递的规则:

规则一: 调用方法时,将实参的值传递给形参(引用类型传递的是地址)

int max(int a,int b){

return a>b?a:b;

}

..main(..){

int c=max(10,20);

//10-->a,20-->b

}

规则二: 调用方法后,形参变化的值不会传递给实参,

6. 掌握Random类的使用

1) java.util.Random类用于生成各种随机数,

   创建Random类:

Random r=new Random();

2) 常用方法:

   int nextInt() - 返回随机的一个int类型的整数

   int nextInt(int num)

- 返回0到num之间随机的一个整数,可能包括0,但不包括num

   double nextDouble() - 返回0.0~1.0之间的随机一个浮点数

 

上一页 下一页