对象的引用和实体、类与程序的基本结构
对象的引用和实体
类是体现封装的一种数据类型,类所声明的变量被称为对象。new运算符的作用就是为对象分配变量,即分配内存。对象本身负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法。分配给对象的变量被习惯性称作对象的实例。
-
避免使用空对象
没有实体的对象称作空对象,空对象不能使用。
-
重要结论
一个类创建得两个对象,如果具有相同的引用,那么就具有相同的实体。
-
垃圾收集
周期性地检测某个实体是否已不再被任何对象所拥有,如果发现这样的实体,就释放实体占用的内存。
Point p1=new Point(5,15) Point p2=new Point(8,18)
那么内存模型如图所示
假如在程序中使用了如下的赋值语句:
p1=p2;
Example4_4.java
class Point{ int x,y;//成员变量: Point(int a,int b){//定义构造方法 this.x=a;//成员变量;横纵坐标 this.y=b; } }//结束点类的定义 public class Example4_4 { public static void main(String[] args) { Point p1,p2;//声明两个点对象,引用型变量。 p1=new Point(5,6);//创建一个点对象 p2=new Point(12,56); System.out.println("p1的引用是:"+p1); System.out.println("p2的引用是:"+p2); System.out.println("p1的坐标是:("+p1.x+","+p1.y+")"); System.out.println("p1的坐标是:("+p2.x+","+p2.y+")"); p1=p2; System.out.println(); System.out.println("执行P2赋予P1后:"); System.out.println("p1的引用是:"+p1); System.out.println("p2的引用是:"+p2); System.out.println("p1的坐标是:("+p1.x+","+p1.y+")"); System.out.println("p1的坐标是:("+p2.x+","+p2.y+")"); } }
类与程序的基本结构
Example4_5.java
代码示例:
//定义一个矩形 public class Rect { double width,height;//定义矩形的属性:宽、高 double computerArea() {//定义计算面积的方法 return width*height; } }
//定义一个梯形 public class Lader { double above,buttom,height;//定义梯形的属性:上底、下底、高 double computerArea() { return (above+buttom)*height; } }
//定义主类,用于测试 public class App { public static void main(String[] args) { Rect rect=new Rect();//声明一个矩形对象,并创建,该类是与本类不在同一个文件中。 rect.height=2; rect.width=4; double area=rect.computerArea(); System.out.println("矩形对象rect的面积="+area); Lader lader = new Lader(); lader.above=2; lader.buttom=3; lader.height=4; area=lader.computerArea(); System.out.println("梯形对象lader的面积="+area); } }
运行结果:
本文来自博客园,作者:涂勇军,转载请注明原文链接:https://www.cnblogs.com/tuyongjun/p/16186481.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?