如何深入理解Java(四)面向对象编程的精髓?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1222个文字,预计阅读时间需要5分钟。
一. 局部变量和成员变量 + 局部变量 + 成员变量(全局变量) + 在方法中定义,在方法外定义,类内部的变量 + 栈内存中 + 堆内存中 + 局部变量没有默认值 + 成员变量有默认值 + 当前方法 + 当前类的变量
一.局部变量和成员变量
局部变量
成员变量(全局变量)
定义在方法中
定义在方法外,类之内的变量
栈内存中
堆内存中
局部变量没有默认值
成员变量有默认值
当前方法
当前类的方法
不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同(因为是值传递,和c语言的函数传值类似)
二.引用类型
Java 语言中除基本类型之外的变量类型都称为引用类型。
Java中的对象和数组是通过引用对其操作的.
- 引用可以理解为一种受限的指针
- 指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,只能进行赋值运算。
- 引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)
三.内存分析
栈satck:
- 存放:局部变量
- 先进后出,自下而上存储(ABCD的可能弹出顺序:DCBA,ABCD,BACD...)但是CABD不可以。
- 方法执行完毕,自动释放空间
堆heap:
- 存放new出来的对象
- 需要垃圾回收器来回收:System.gc()
方法区method area:
- 存放:类的信息(代码)、 static变量、字符串常量等
四.构造方法
定义:
创建对象的时候默认会调用构造方法来创建对象,(在堆中开辟空间),可以完成成员变量的某些初始化工作。
构造方法的语法:
- 方法名称:构造方法的方法名称必须更类的名称保持一致
- 访问修饰符:
- 形参:用户可以自定义添加,跟方法的普通参数一样。
- 方法体:完成对象的初始化功能
- 返回值:没有返回值
注意
五.构造方法重载
定义
在一个类中可以包含多个重名的方法,但是参数列表(int a, String b)不能相同
- 参数个数
- 参数类型
- 参数顺序
一般构造方法都会进行重载(一个类中可能包含多个属性值,当只需要给部分属性初始化的时候不需要调用不同的构造方法)
六.案例
一定要细细琢磨public class Point { int x; int y; //设置二维的坐标点 public void set(int xx,int yy){ x = xx; y = yy; } public double calcDistance(Point p){ return Math.sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); } public void changePoint(Point p){ int a = p.x; p.x = x; x = a; int b = p.y; p.y = y; y = b; } public void show(){ System.out.println("["+x+","+y+"]"); } public static void main(String[] args) { Point p1 = new Point(); p1.set(3,5); Point p2 = new Point(); p2.set(2,4); System.out.println(p1.calcDistance(p2)); p1.changePoint(p2); p1.show(); p2.show(); }}本文共计1222个文字,预计阅读时间需要5分钟。
一. 局部变量和成员变量 + 局部变量 + 成员变量(全局变量) + 在方法中定义,在方法外定义,类内部的变量 + 栈内存中 + 堆内存中 + 局部变量没有默认值 + 成员变量有默认值 + 当前方法 + 当前类的变量
一.局部变量和成员变量
局部变量
成员变量(全局变量)
定义在方法中
定义在方法外,类之内的变量
栈内存中
堆内存中
局部变量没有默认值
成员变量有默认值
当前方法
当前类的方法
不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同(因为是值传递,和c语言的函数传值类似)
二.引用类型
Java 语言中除基本类型之外的变量类型都称为引用类型。
Java中的对象和数组是通过引用对其操作的.
- 引用可以理解为一种受限的指针
- 指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,只能进行赋值运算。
- 引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)
三.内存分析
栈satck:
- 存放:局部变量
- 先进后出,自下而上存储(ABCD的可能弹出顺序:DCBA,ABCD,BACD...)但是CABD不可以。
- 方法执行完毕,自动释放空间
堆heap:
- 存放new出来的对象
- 需要垃圾回收器来回收:System.gc()
方法区method area:
- 存放:类的信息(代码)、 static变量、字符串常量等
四.构造方法
定义:
创建对象的时候默认会调用构造方法来创建对象,(在堆中开辟空间),可以完成成员变量的某些初始化工作。
构造方法的语法:
- 方法名称:构造方法的方法名称必须更类的名称保持一致
- 访问修饰符:
- 形参:用户可以自定义添加,跟方法的普通参数一样。
- 方法体:完成对象的初始化功能
- 返回值:没有返回值
注意
五.构造方法重载
定义
在一个类中可以包含多个重名的方法,但是参数列表(int a, String b)不能相同
- 参数个数
- 参数类型
- 参数顺序
一般构造方法都会进行重载(一个类中可能包含多个属性值,当只需要给部分属性初始化的时候不需要调用不同的构造方法)

