Java构造方法定义:

一、在类中,构造方法是一个特殊的方法,当程序用某个类创建对象时,需要使用这个类中的构造方法进行创建;

如下演示: 通过 Structure_Method_Test() 构造方法 创建(实例化)了 类 Structure_Method_Test 的一个对象 smtest

public class Structure_Method_Test {   Structure_Method_Test(){}  //构造方法创建
public static void main(String[] args) {     Structure_Method_Test smtest = new Structure_Method_Test();  //对象创建}
}

简单的说:构造方法 就是配合 new运算符 实例化一个该类的对象;

二、类中的构造方法的名字必须与类名相同,而且方法是没有类型的;

如下演示: void Structure_Method_Test(){}  //不是构造方法,是类型为void的方法

public class Structure_Method_Test {   Structure_Method_Test(){}  //构造方法创建void Structure_Method_Test(){}  //该方法不是构造方法,是类型为void的方法public static void main(String[] args) {     Structure_Method_Test smtest = new Structure_Method_Test();  //对象创建}
}

三、在一个类中可以同时声明多个构造方法,但是这些构造方法的参数必须是不同的;

(参数不同指:参数的个数不同,名字不同、或 参数个数相同,参数列表中某个个数的类型不同 )
 如下演示:

public class Structure_Method_Test {Structure_Method_Test(int a){}        //构造方法1Structure_Method_Test(int a,int b){}  //构造方法2Structure_Method_Test(double a,int b){}   //构造方法3public static void main(String[] args) {Structure_Method_Test smtest = new Structure_Method_Test(3,5);}}

在以上代码中,构造方法1 与 构造方法2 的参数个数不同 ;构造方法2 与 构造方法3 个数相同,但是参数列表中 a 的类型不同;

构造方法特别注意:

一、当程序中某个类没有声明构造方法,那么系统会默认该类只有一个构造方法,并且这个构造方法是没有参数和方法体的,是由系统默认创建的;

如下演示:

class Default_Test{Default_Test(){}}

二、当程序中某个类声明了 多个构造方法,那么系统就不会再为该类创建默认的构造方法了;

如下演示:  Structure_Method_Test smtestone = new Structure_Method_Test();  是错误的

public class Structure_Method_Test {Structure_Method_Test(int a){}         //构造方法1Structure_Method_Test(int a,int b){}   //构造方法2public static void main(String[] args) {//报错,此时是没有默认的构造方法的,所以 () 中的参数必须要和构造方法中参数对应;Structure_Method_Test smtestone = new Structure_Method_Test(); //如下创建的构造方法是正确的  Structure_Method_Test smtest;   //对象的声明smtest = new Structure_Method_Test(1);  //为声明的对象进行分配变量,使用构造方法2//声明对象的同时 为 声明的对象进行分配变量,使用构造方法3Structure_Method_Test smtestone = new Structure_Method_Test(11,111); }
}

Java构造方法实例化对象过程:

创建一个对象包括 对象的声明 和 为对象分配变量 两个部分;

一、对象的声明

一般格式为:  类名  对象名 ;

如: Default_Test  testone ;   或者  Default_Test   test1 , test2 , test3 ;

二、为对象分配变量,完成对象的实例化

使用 new 运算符和类的构造方法为声明的变量分配变量,即完成对象的实例化;

如下演示:

public class Structure_Method_Test {Structure_Method_Test(){}              //构造方法1Structure_Method_Test(int a,int b){}   //构造方法2public static void main(String[] args) {Structure_Method_Test smtest;   //对象的声明smtest = new Structure_Method_Test();  //为声明的对象进行分配变量,使用构造方法1//声明对象的同时 为 声明的对象进行分配变量,使用构造方法2Structure_Method_Test smtestone = new Structure_Method_Test(3,5);  }
}

对象的使用:

一、对象不仅可以操作自己的变量改变状态,还可以调用类中的方法产生一定的功能;

二、对象通过使用运算符 " . " ,可以实现对自己 变量的访问 和 方法的调用;(前提是对象创建之后,而不是仅仅声明)

访问格式为:  对象 . 变量名  ; 对象 . 方法名(" ") ;

三、对象体现的封装性,即当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量;

如下演示:

public class Method_Test {double sum,number;String speak,action ;void behaviour (String st){action = st;sum = 1 + 10 ;System.out.println(action+" " + sum);}public static void main(String[] args) {Method_Test test1 = new Method_Test();  //创建对象test1Method_Test test2 = new Method_Test();  //创建对象test2test1.number = 123456 ;test2.number = 789 ;System.out.println("test1的number值="+test1.number);System.out.println("test2的number值="+test1.number);test1.speak = "这个speak是属于对象test1的";test1.speak = "这个speak是属于对象test2的";System.out.println("test1的speak值="+test1.speak);System.out.println("test2的speak值="+test1.speak);test1.behaviour("我想唱歌");test2.behaviour("我想跳舞");}}

程序输出:

test1的number值=123456.0
test2的number值=123456.0
test1的speak值=这个speak是属于对象test2的
test2的speak值=这个speak是属于对象test2的
我想唱歌 11.0
我想跳舞 11.0

在以上代码的 behaviour 方法,可以进行操作成员变量 action 与 sum ,当创建的对象 test1,test2 调用该方法时,方法中出现的成员变量分别是 test1,test2 对象的成员变量;

对象的引用和实体:

对象的引用:

   指在创建对象时,new 运算符 只能和 类的构造方法进行运算,运算的结果是一个十六进制数,这是数就说明对象的引用;

   如:new Method_Test(); 的值就是一个 引用 ;

对象的实体:

  指在Java中,对象负责存放引用的,以确保对象可以操作分配给该对象的变量以及调用类中的方法,其中分配给该对象的变量也是平时所说的对象的实体;

一、没有实体的对象称为空对象,空对象是不能进行使用的,即不能调用方法产生行为;

如下演示:   

public class Method_Test {double sum,number;String speak,action ;void behaviour (String st){action = st;sum = 1 + 10 ;System.out.println(action+" " + sum);}public static void main(String[] args) {Method_Test test1 = new Method_Test();  //创建对象test1Method_Test test2 ;  //声明对象test2,此时对象为空对象test1.number = 123456 ;test2.number = 789 ;     //错误,此时对象为空对象System.out.println("test1的number值="+test1.number);test1.behaviour("我想唱歌");test2.behaviour("我想跳舞");  //错误,此时对象为空对象}}

以上代码中,test2.number 与 test2.behaviour("我想跳舞"); 都是错误的,因为 test2 只是进行了声明,还未创建;

二、若一个类声明的两个对象具有相同的引用,那么二者具有的实体也是一样的;

如下演示:   

public class Method_Test {double sum,number;String speak,action ;void behaviour (String st){action = st;sum = 1 + 10 ;System.out.println(action+" " + sum);}public static void main(String[] args) {Method_Test test1 = new Method_Test();  //创建对象test1Method_Test test2 = new Method_Test();  //声明对象test2System.out.println("test1的引用值="+test1);System.out.println("test2的引用值="+test2);test1 = test2 ;System.out.println("test1的引用值="+test1);System.out.println("test2的引用值="+test2);}}

代码输出结果:

test1的引用值=Chapter_Four.Method_Test@7852e922
test2的引用值=Chapter_Four.Method_Test@4e25154f
test1的引用值=Chapter_Four.Method_Test@4e25154f
test2的引用值=Chapter_Four.Method_Test@4e25154f

三、Java中 “垃圾回收机制”

垃圾回收机制指系统程序会周期性的检测某个实体是否已不再被任何对象所拥有,如果发现这样的实体,则系统会自动释放实体占有的内存;

如下演示:   

public class Method_Test {Method_Test(){}Method_Test(int x,int y){}public static void main(String[] args) {Method_Test test1 = new Method_Test();  //创建对象test1Method_Test test2 = new Method_Test(1,11);;  //创建对象test2System.out.println("test1的引用值="+test1);System.out.println("test2的引用值="+test2);test1 = test2 ;System.out.println("test1的引用值="+test1);System.out.println("test2的引用值="+test2);}}

在以上代码中,执行  test1 = test2 ; 语句后,test1 的 引用就会与 test2 引用一样,而之前创建时 test1 引用中的实体将被系统进行回收;

Java构造方法定义、对象实例化的过程、对象的引用和实体相关推荐

  1. JavaScript - 对象实例化、调用对象的属性及方法

    <html><head><head><body><script language="javascript">//对象简单 ...

  2. 从JVM看类的加载过程与对象实例化过程

    一. 类的加载过程 1. 类的加载过程大致是个什么过程? 我们编写产生.java文件,这些.java文件经过Java编译器编译成拓展名为.class的文件,.class文件中保存着Java代码经转换后 ...

  3. java对象实例化内存布局与访问定位

    文章目录 1. 对象实例化方式 2. 对象创建的步骤 3. 对象的内存布局 4. 对象的访问定位 1. 对象实例化方式 通过new的方式,例如 Persion p = new Persion() 通过 ...

  4. java类怎么实例化_Java类的定义及其实例化

    如果你不了解类和对象的概念,请看我往期文章. 类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public class Dog{ ...

  5. java类的定义的实例_《Java基础知识》Java类的定义及其实例化

    类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public classDog { String name;intage;void ...

  6. Java知多少(18)类的定义及其实例化

    类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: 1 public class Dog{ 2 String name; 3 int ...

  7. 欧尼酱讲JVM(18)——对象实例化内存布局与访问定位

    目录 对象的实例化 创建对象的几种方式 从字节码角度看对象的创建过程 对象创建的六个步骤 第一步:判断对象对应的类是否加载.链接.初始化 第二步:为这个对象分配内存 第三步:处理并发安全问题 第四步: ...

  8. 定义一个dog类java_Java类的定义及其实例化

    如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念 类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public cl ...

  9. 识别无效对象和不可用对象

    ---------- pl/sql对象和视图可能变得"无效(invaid)":索引可能变得"不可用(unusable)" 根据对象无效的原因,下次访问时,对象可 ...

最新文章

  1. 一种神经元探索系统方法及装置
  2. lucene实战--打分算法没有那么难!
  3. 微信中H5同层Video播放器接入教程
  4. mysql into_MYSQL中replace into的用法
  5. 解决python导入当前文件夹下的包时可以运行,但编辑器报错
  6. 设计模式之单例模式8种实现方式,其八:枚举方式
  7. Spring 源码解析 -- SpringWeb请求映射解析
  8. Atitit.Atiposter 发帖机 信息发布器 v7 q516
  9. 粒子群优化算法matlab实现,粒子群优化算法的MATLAB程序实现+源程序
  10. 字符集,字体,编码,代码页,输入法
  11. GJB 5000B-2021下载-见文章结尾
  12. Websocket测试工具
  13. python快速搭建服务器方法
  14. 科研第一步:怎样获得好的idea?!
  15. HFSS Wave Port设置
  16. [视频教程][斯坦福大学公开课:ios7应用开发 18集]
  17. c#制作图表(从数据库读取数据,制作柱状图,扇形图)
  18. Android Studio-开发少年强国App(一)
  19. ERP、APS、MES 三者之间的关系是什么?
  20. vue3 如何给动态渲染的组件添加ref

热门文章

  1. Matlab中遇到~=
  2. R语言 Rstudio 安装 包 报错installation of package ‘*’ had non-zero exit status
  3. 阿里巴巴2018招聘笔试题喝汽水
  4. [易飞]如何制作自定义报表
  5. 洛谷P1331 海战 题解
  6. UESTC -- 1061 秋实大哥与战争(暴力/set)
  7. 图赏 Amazfit 跃我GTR 3超长21天续航,60秒出身体指标报告
  8. 智能车大赛信标组_【学院新闻】第四届福建省智能汽车竞赛圆满落幕
  9. Arduino驱动OLED显示屏
  10. 模块电路选型(4)----通信模块