【小白转码】05
一、类和对象
1.类与对象的概念
- 
什么是对象? - 
对象:是一个具有特定属性和行为特征的具体事物。 
 
- 
- 
什么是类? 
- 
- 
类与对象的关系 - 
类是对一类事物的描述,是抽象的。 
- 
对象是一类事物的实例,是具体的。 
- 
类是对象的模板,对象是类的实体。 
 
- 
2.类的定义
类的格式:
public class 类名 {
  //成员变量,描述这类事物的属性
  //成员方法,描述这类事物的行为
}
3.对象的创建与使用
创建对象语法格式: 
类名 对象名= new 类名 ();
Person p = new Person();
使用对象的成员,使用“. ”操作:
使用成员变量:对象名.属性
使用成员方法:对象名.方法名()
4.对象的内存分析
堆空间:存放new出来的对象
栈空间:存储了局部变量表
方法区:存储了常量、静态信息、类信息等
    
System.out.println(new Student());////Student@7852e922
类型
二、成员变量
1. 变量的分类
根据定义位置不同分为:
- 
局部变量:定义在方法体内或其他局部区域内的变量(之前所使用的都是main方法中定义的变量,为局部变量)。 
- 
成员变量:定义在类的成员位置,在方法体外,与方法(例如main方法)平行的位置。并且有修饰符修饰。 根据修饰的不同成员变量又分为: - 
类变量:或叫静态变量,有static修饰的成员变量。(后面再讲) 
- 
实例变量:没有static修饰的成员变量。 
 
- 
2. 成员变量的声明
class 类名{
    【修饰符】 数据类型  属性名;  
}
说明:常用修饰符有public、缺省、private、protected、final、static
数据类型可以是任意基本数据类型和引用数据类型。
属性名即变量名,符合标识符的命名规则和规范。
3.实例变量
3.1、实例变量的特点
- 
实例变量的值是属于某个对象的 - 
必须通过对象才能访问实例变量 
- 
每个对象的实例变量的值是独立的 
 
- 
- 
成员变量有默认初始值(同数组元素默认初始值) 数据类型 默认值 byte,short,int,long 0 float,double 0.0 char 0或'\u0000'表现为空 boolean false 数组,类,接口等引用类型 null 
3.2、实例变量的访问
对象.实例变量
3.3、小结:实例变量与局部变量的区别
| 实例变量 | 局部变量 | |
|---|---|---|
| 声明的位置 | 直接声明在类的成员位置 | 声明在方法体中或其他局部区域内(方法声明上,构造方法,代码块等) | 
| 修饰符 | public、private、final等 | 不能使用访问权限修饰符,可以使用final | 
| 内存加载位置 | 堆 | 栈 | 
| 初始化值 | 有默认初始化值 | 无默认初始化值 | 
| 生命周期 | 同对象的生命周期 | 随着方法的调用而存在,方法调用完毕即消失 | 
4.方法
4.1.概念
方法也叫函数,是一个独立功能的定义,是一个类中最基本的功能单元。
把一个功能封装为方法的目的是,可以实现代码重用,从而简少代码量。
4.2成员方法的分类
根据修饰不同方法主要分为两类:
- 
实例方法:没有static修饰的方法,必须通过实例对象来调用。 
- 
静态方法:有static修饰的方法,也叫类方法,主要特点是可以由类名来调用。(后面再讲) 
4.3 方法的声明
- 
方法声明的位置必须在类中方法外,在类的成员位置 
- 
语法格式: 【修饰符】 返回值类型 方法名(【参数列表 】)【extends fatherclass】【throws 异常列表】{
 方法体;
 【return 返回值;】
 }
3.实例方法的调用格式
对象名.实例方法(【实参列表】) 
4.4 形参与实参的概念理解
- 
形参:在定义方法时方法名后面括号中声明的变量称为形式参数(简称形参)即形参出现在方法定义时。 
- 
实参:调用方法时方法名后面括号中的使用的值/变量/表达式称为实际参数(简称实参)即实参出现在方法调用时。 
4.5 方法调用的内存情况
方法不调用不执行,调用一次执行一次,每次调用会在栈中有一个入栈动作,即给当前方法开辟一块独立的内存区域,用于存储当前方法的局部变量的值,当方法执行结束后,会释放该内存,称为出栈,如果方法有返回值,就会把结果返回调用处,如果没有返回值,就直接结束,回到调用处继续执行下一条指令。
栈结构特点:先进后出,后进先出。
4.6 方法参数的值传递机制
方法的参数传递机制:实参给形参赋值,那么反过来形参会影响实参吗?
- 
方法的形参是基本数据类型时,形参值的改变不会影响实参; 
- 
方法的形参是引用数据类型时,形参地址值的改变不会影响实参,但是形参地址值里面的数据的改变会影响实参,例如,修改数组元素的值,或修改对象的属性值。 - 
注意:String、Integer等特殊类型容易错 
 
- 
4.7 方法的重载 overload
方法重载:同一个类中(本类声明的或继承自父类的)的方法,方法名相同,参数列表不同的情况,这就叫方法重载。
参数列表不同:指的是参数个数不同,数据类型不同,数据类型顺序不同。
注意:与方法的返回值类型无关
4.8 可变形参
在JDK1.5之后,如果我们定义一个方法时,此时某个形参的类型可以确定,但是形参的个数不确定,那么我们可以使用可变参数。
格式:
【修饰符】 返回值类型 方法名(【非可变参数部分的形参列表,】参数类型... 形参名){  }
注意:
(1)一个方法最多只能有一个可变参数
(2)如果一个方法包含可变参数,那么可变参数必须是形参列表的最后一个
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号