第2章 类与对象
类:
一些有着相同特点对象的抽象化,可以包括对象的属性、方法(行为).
语法实现:
1 public class 类名{ 2 //类所具有的属性特点 3 访问权限 数据类型 变量名 5 //类所能实现的方法 6 修饰符 返回值的类型 方法名(参数){ 7 //方法体实现 8 } 9 10 11 }
对象:
对一个类进行实例化,也就是照着类创建一个对象.就像是照着设计图纸设计产品,设计图纸就是类,生产出来的产品就是对象了.
对象的实例化:
类名 对象名=new 类名();
对象访问属性和方法的语法:
对象名.属性名;
对象名.方法名(方法所需的参数);
基本数据类型和引用数据类型:
基本数据类型有:
数值型:byte、short、int、long、float、double.
字符型:char
布尔型:boolean
除了这些基本类型外,其他java数据;类型和自定义的数据类型都是引用数据类型.
基本数据类型(值类型)的数据存储在栈内存中.而引用数据类型在堆内存中.
基本数据类型与引用数据类型的参数传递:详细见书上P17-19页
当基本类型作为参数传递时,在方法中对形参的修改并不会影响实参的值.
因为当读取到main方法时,会在栈内存中开辟一个main栈帧,用在main函数中创建的基本类型变量调用方法函数中,会在栈内存中再创建所调用的方法栈帧,只是在那个方法的栈帧中修改了基本类型变量的值,而在main方法的栈帧中的基本类型变量值出头到尾都没有修改过.
引用数据类型的参数传递:
当引用类型作为参数传递时,在方法中对形参的修改,会修改实参的值.
一开始读取到main方法,在栈内存中开辟一个main栈帧,因为是引用类型变量,所以会在堆内存中开辟内存空间存储,然后调用方法,在栈内存中再开辟一个方法栈帧,传入给这个方法的是引用类型变量的堆地址,因此,实参和形参都指向的是一个堆内存空间,执行了这个方法,修改对应的引用类型变量,然后弹出,修改的都是同一个堆内存之中的变量.
课后题目:
基本数据类型和引用数据类型的数据存储有何区别?
基本数据类型存储在栈内存,而引用数据类型存储在堆内存,这会造成在调用方法时,将基本数据类型作为参数,不会修改原有实参的值,而将引用数据类型作为方法的参数,会修改原有实参的值.
类和对象的区别是什么?
类是对象的抽象化,描绘着对象的特征、行为,而对象是类的实例化.类和对象的关系就像是制造图纸和产品的关系一样,制造图纸有着产品的细节、功能,产品按照制造图纸所描述的去生产.