首页 > 技术文章 > java-堆,栈,类和对象,方法

beiluoL 2019-03-06 15:44 原文

栈(Stack):也被称为虚拟机栈,用来存放在方法执行时的变量。其中包括了
变量的句柄(变量名)和变量的值。引用类型的值放的是地址值。并且
栈中的变量会在方法结束后消亡.

堆(Heap):通过new创建出来的对象都放在堆空间中,还包括像数组
集合等这些都存在堆中,堆空间的每一个地址都是唯一的,栈中句柄
引用堆的地址值,所以如果一个地址被多个句柄引用,其中一方改变
会影响其他正在使用的句柄。堆中的内存通过GC来回收.

常量池:常量是不可变的变量,直接赋值的String变量的值就存储在
常量池中,String的每次改变都会创建一个新的变量


类和对象
类:由一组事物的特征和行为抽象的一个概念
对象:具体存在的事物

类和对象是相互的,需要去描述一个复杂的事物,需要根据事物的特征
和行为抽象出类
根据类(模版)来创建的对象,这个对象具有类描述的所有的特征和行为

编写类的时候考虑内聚性
一个类应该只描述和当前类相关的事物,比如学生类中就需要只放
学生的基本的特征和行为,而不要出现无关的比如班级名和老师的电话

类不能直接使用(非绝对),类本身是抽象的,应该要使用类的对象
使用对象通过类来创建,语法
类名 对象名 = new 类名();
对象名.属性 对象名.方法()

一个类是可以创建N个对象,这些对象之间互不影响,每个对象在堆中
都有自己的空间

方法:一组代码封装的特定的功能
java的方法分为有参和无参,还分为带返回和无返回
声明方法的语法:
访问修饰符 返回类型 方法名(【参数列表】){
方法体
【return 返回值】
}

局部变量和全局变量
全局变量:类中声明的属性就被称为全局变量,也可以称为成员变量
局部变量:声明在方法中的变量称为局部变量

全局变量的使用范围:在整个类的所有方法中共享使用
局部变量的使用范围:在方法内有效(逻辑控制语句的花括号内)

在同一个方法中不能有两个局部变量同名,但是局部变量可以和全局
变量同名。如果局部和全局同名,在方法中使用的时候优先使用局部
变量,如果非要使用全局变量 this.全局变量

局部变量需要赋予初始值才能使用
全局变量不需要,有默认值,引用类型null


方法的参数分为
形参:形式参数,定义在方法的小括号内,形参的作用用来
接收在调用该方法时传递过来的实参的数据。java方法中的
形参需要声明参数类型
实参:调用带参方法时,传递的实际的数据或者一个变量称为
实参,数据交给形参接收使用,实参的个数和类型要与形参
一一对应

在传参时,java传递的是值,基本类型的数据值和引用类型
的地址值。如果传递的是String,形参的改变不会影响实参
String是不可变类型

带返回的方法需要使用return关键字
return关键字:一个方法中可以有多个return语句,但是只能执行
一条return,在执行完return语句后方法会立即结束,并且返回
return后面的值。如果return后面跟了数据,需要指定方法的返回
类型

 

推荐阅读