Java 类、对象和方法

  • 类的基础知识
  • 如何创建对象
  • 引用变量和赋值
  • 方法
  • 返回值
  • 实参与形参
  • 构造函数
  • 垃圾回收机制
  • this关键字

类的基础知识

类是定义对象形式的模板,指定了数据以及操作数据的代码。

Java中使用类的规范来构造对象,而对象是类的实例。

类是逻辑抽象的,只有类的实例——对象才是内存中的物理表示。

类一般都包含方法和变量,通过class创建类。

这是简单的Rectangle类,包含了方法和变量:

class Rectangle{public Rectangle(double length, double width) {this.length = length;this.width = width;}private double length;private double width;public double getArea() {return length * width;}public void show() {System.out.println("length = " + length + " width = " + width);}
}

对于Rectangle类我们可以写一个程序来使用:

//This is a simple class
public class ClassTest {public static void main(String[] args) {Rectangle r = new Rectangle(1,1);r.show();}
}class Rectangle{public Rectangle(double length, double width) {this.length = length;this.width = width;}private double length;private double width;public double getArea() {return length * width;}public void show() {System.out.println("length = " + length + " width = " + width);}
}

输出结果如下:

length = 1.0 width = 1.0

保存这个文件的文件名应该是ClassTest.java。因为main()方法在名为ClassTest类中。

如何创建对象

Rectangle r = new Rectangle(1,1);

这段代码的含义是:先声明一个名为r的Rectangle类型的变量,它现在只是一个可以引用对象的变量,而没有指明什么对象,再new一个实例对象,并将引用赋给r。

new运算符为对象动态分配内存(即运行时分配),并返回一个对它的引用。
该引用是由new分配的对象在内存中的地址。

引用变量和赋值

在赋值运算中,对象引用赋值与基本类型变量赋值的工作方式不同,从以下例子中将能看出:

将Rectangle类进行改进:

class Rectangle{public Rectangle(double length, double width) {this.length = length;this.width = width;}private double length;private double width;public void setLength(double length) {this.length = length;}public void setWidth(double width) {this.width = width;}public double getArea() {return length * width;}public void show() {System.out.println("length = " + length + " width = " + width);}
}

此时使用ClassTest.java程序来验证:

//This is a simple class
public class ClassTest {public static void main(String[] args) {Rectangle r = new Rectangle(1,1);r.show();Rectangle r1 = r;r1.setLength(2);r.show();r1.show();}
}class Rectangle{public Rectangle(double length, double width) {this.length = length;this.width = width;}private double length;private double width;public void setLength(double length) {this.length = length;}public void setWidth(double width) {this.width = width;}public double getArea() {return length * width;}public void show() {System.out.println("length = " + length + " width = " + width);}
}

输出结果如下:

length = 1.0 width = 1.0
length = 2.0 width = 1.0
length = 2.0 width = 1.0

此时的r和r1都指向同一个对象,从而导致输出结果相同。

方法

这些都属于改进Rectangle类的方法:

public Rectangle(double length, double width) {this.length = length;this.width = width;
}
public void setLength(double length) {this.length = length;
}
public void setWidth(double width) {this.width = width;
}
public double getArea() {return length * width;
}
public void show() {System.out.println("length = " + length + " width = " + width);
}

通过方法,就可以操作类中的数据,在程序中,也主要通过类的方法来与类进行交互。

返回值

引起方法返回的条件有两个:

  1. 遇到方法的右花括号
  2. 执行return语句

在以下几个方法中都有它们的返回:

public void setLength(double length) {this.length = length;
}
public void setWidth(double width) {this.width = width;
}
public double getArea() {return length * width;
}
public void show() {System.out.println("length = " + length + " width = " + width);
}

然而返回值的种类有两种:无返回值和有返回值。

当遇到return语句,使得方法返回时,有两种形式:

  1. 使用void方法,也就是无返回值,则是使用‘“return;”进行返回。
  2. 有返回值时,使用“return value;”返回其值。其返回的数据类型也必须和返回类型兼容。

实参与形参

实参:向方法传递的值称为实参。
形参:在方法中接受实参的变量称为形参。

public void setLength(double length) {       //传递给length的值为实参,length作为方法的形参。this.length = length;
}

一个方法可以有多个形参,在声明的时候只需用逗号隔开即可,形参的类型可相互不同。

public int myMeth(int a, double b, char c){//...
}

构造函数

构造函数是在创建对象得时初始化对象,它的名称与类名相同,语法与方法相似,且没有显式的返回类型。

例如:

public Rectangle(double length, double width) {this.length = length;this.width = width;
}

所有类都具有自己的构造函数,如果没有显式的定义出来,Java自动为类提供一个默认的构造函数来初始化所有的成员变量,其默认值为0、null和false,一旦自己定义了构造函数,将不会使用默认的构造函数。

垃圾回收机制

Java的垃圾回收系统会自动回收无用对象,主要工作方式是:当不存在对某对象的任何引用时,该对象就被认定没有存在的必要了,它所占用的内存就要被释放。

垃圾回收只是在程序执行的过程中偶然发生,满足两个条件将运行:

  1. 有对象要回收
  2. 需要回收这些对象

this关键字

当调用一个方法时,会向它自动传递一个隐式实参,它是对调用对象(即调用方法的对象)的一个引用,这个引用叫做this。

private double length;
private double width;
public Rectangle(double length, double width) {this.length = length;this.width = width;
}
public void setLength(double length) {this.length = length;
}
public void setWidth(double width) {this.width = width;
}

this的主要用途:当发生局部变量名隐藏实例变量时,通过this引用它,得到隐藏实例变量的访问权。

Java 类、对象和方法相关推荐

  1. 获取随机数的方式Random类对象的方法 java 0913

    获取随机数的方式Random类对象的方法 java 0913 Random类 实例化这个类得到一个对象 利用对象的方法获取整数 代码 import java.util.Random;public cl ...

  2. java分布式对象——远程方法中的参数和返回值+远程对象激活

    [0]README 1)本文文字描述转自 core java volume 2, 旨在学习 java分布式对象--远程方法中的参数和返回值+远程对象激活 的相关知识: [1]远程方法中的参数和返回值 ...

  3. 规则引擎集成接口(九)Java类对象

    Java类对象 右键点击"对象库" -"添加java类对象",如下图: 弹出窗体,在文本框中输入类的全名"com.flagleader.test.Te ...

  4. java 编写方法和属性,Java类属性及方法的定义

    文章导读 [在定义类时,经常需要抽象出它的属性和方法,并定义在类的主体中.本文探讨Java类属性及方法的定义和使用.通过本文的学习,你将了解如何在Java类中定义属性及方法.属性值的设置和获取.] 本 ...

  5. thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)

    前言 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到 ...

  6. 看完这篇你还敢说分不清 Java 类 对象 实例 变量间的区别?

    看完这篇你还敢说分不清 Java 类 对象 实例 变量间的区别? 什么是类? 什么是对象? 什么是变量? 对象和类的关系: Java中的类: Java中的对象 Java中的变量 Java 中调用 对象 ...

  7. JSON对象转为Java类对象

    本文讲述两种方法,使JSON对象转为Java类对象.基于FastJson1 对于以下的JSON对象: {"message": "成功","code&q ...

  8. JSP中调用java类中的方法

    JSP中调用java类中的方法 1.新建一个项目,在src文件夹下添加一个包:如:test 2.再在包中添加一个类:如 package test; public class conDatabase { ...

  9. 定义C++类对象的方法

    定义C++类对象的方法 我们学习了类的定义,与C语言的struct结构体类型定义差不多.那么,C语言可以使用struct结构体类型来定义对象,那么,C++同样可以使用类来定义对象. C++使用类来定义 ...

  10. java object对象的方法_Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

最新文章

  1. RNN,LSTM,GRU基本原理的个人理解重点
  2. Bitmap使用PictureBox后提示Bitmap占用
  3. QML与Qt C++ 交互机制探讨与总结
  4. 启动nuxt项目fsevents报错
  5. hdu 5636 Shortest Path(Floyd最短路)
  6. UML图入门学习笔记
  7. stl源码分析de练习
  8. mysql binlog使用_mysql binlog 基本使用
  9. 多线程的那点儿事(之无锁队列)
  10. (转)LuaPlus C++ 函数互调
  11. rrdtool安装编译提示错误:Can’t locate ExtUtils/MakeMaker.pm in @INC
  12. SSM第一篇 最简单的SSM框架搭建过程--SSM简单整合
  13. 键盘调节台式计算机声音,完美:如何增加键盘上的音量
  14. php函数改变图片大小,php实现修改图片大小的方法
  15. 基于拉格朗日差值算法的BMP图像缩放
  16. js使用cookie实现7天免登录
  17. 深度学习究竟怎么入门?两位Google大神掀起剑气之争
  18. 筛选两张表中id不同的数据
  19. 简单制作一个Python聊天机器人
  20. 鲜为人知的火箭尾喷管黑科技 不是你想象的那样简单

热门文章

  1. 5.1.2全景声音箱摆位_杜比全景声7.1.2和7.1.4音箱摆位有什么区别
  2. 软考—信息项目管理师(项目立项管理)
  3. 清华大学保研计算机推荐信模板,清华保研推荐信模板
  4. C#调用系统打印机(XP-58小票打印)
  5. n9100 分区 Linux,​史上最全的三星N9100官方固件
  6. Undefined class constant ‘SERIALIZER_IGBINARY‘ 解决方法
  7. Win10系统安装失败?用这种方法一键就解决了
  8. Appearance-and-Relation Networks for Video Classification论文笔记 (ARTnet)
  9. Weblogic安装及配置
  10. 优科豪马冬季SUV轮胎G072的性能特点全解