Java面试 - 在Java中, 既然构造方法是一个方法,那么为什么不使用void 定义呢?
Java程序编译器是根据代码结构来进行编译处理的,执行的时候也是根据代码结构来处理的。
如果在构造方法上使用void,那么此结构就会与普通方法的结构相同,这样编译器会认为此方法是一个
普通方法,而普通方法与构造方法最大的区别在于构造方法是在类对象实例化的时候调用的,而
普通方法是在类对象实例化产生之后调用的。
举例:
public class Student{
private String name;
//定义Student有参构造方法
public Student(String name){
this.name = name;
System.out.println("调用Student有参构造方法,初始化Student name");
}
//定义getName()方法,获取Student name
public String getName(){
System.out.println("调用getName(),获取Student name");
return name;
}
public static void main(String[] args) {
Student student = new Student("Jack Ma");
String studentName = student.getName();
System.out.println("学生姓名:" + studentName);
}
}
运行Debug模式,查看运行结果
调用Student有参构造方法,初始化Student name
调用getName(),获取Student name
学生姓名:Jack Ma
分析:
Student student = new Student("Jack Ma");
1、通过new Student() 为Student 在堆内存中创建一个内存空间,此时name=null
2、调用Student有参构造方法Student(String name),通过this.name = name为Student name进行初始化,
此时name=Jack Ma。由此可知,构造方法是在类对象实例化的时候调用的。
String studentName = student.getName();
System.out.println("学生姓名:" + studentName);
3、类对象student实例化后,调用getName(),获取Student name。可见,getName()作为普通方法是在类对象实例化产生之后调用的。
4、最后打印结果:学生姓名:Jack Ma。
Java面试 - 在Java中, 既然构造方法是一个方法,那么为什么不使用void 定义呢?的更多相关文章
- java Class中得到构造方法Constructor、方法Method、字段Field
常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...
- 【Java面试】Spring中 BeanFactory和FactoryBean的区别
一个工作了六年多的粉丝,胸有成竹的去京东面试. 然后被Spring里面的一个问题卡住,唉,我和他说,6年啦,Spring都没搞明白? 那怎么去让面试官给你通过呢? 这个问题是: Spring中Bean ...
- [Java面试二]Java基础知识精华部分.
一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...
- 【Java面试】java基础篇
总结个人的面试经历以及一些网上的的面试题,以供以后面试与巩固java基础. 1.String.StringBuilder和StringBuffer的区别 String用于存储不可变字符串的类,Stri ...
- Java面试之Java基础问题答案口述整理
Java面试之基础问题答案口述整理 面向对象的理解 面向对象思想就是在计算机程序设计过程中,把具体事物的属性特性和行为特征抽象出来,描述成计算机事件的设计思想.它区别于面向过程的思想,强调的是通过调用 ...
- java面试2(java技术栈和Hollis面试内容分享)
1.什么是java虚拟机? java虚拟机(JVM)是一个可执行java字节码的虚拟机进程,java源文件被编译成能被java虚拟机可执行的字节码文件. 2.什么是平台无关性,java是如何做到平台无 ...
- Java面试大纲-java面试该做哪些准备,java开发达到这样的水平可以涨工资
Java培训结束,面临的就是毕业找工作.在找工作时,就要针对性地做充分的面试准备.准备不充分的面试,完全是浪费时间,更是对自己的不负责. 上海尚学堂Java培训整理出Java面试大纲,其中大部分都是面 ...
- java面试之----堆(heap)、栈(stack)和方法区(method)
JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method)也叫静态存储区. 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的 ...
- Java面试17|Java基础
Linux上配置Java基础环境: https://www.cnblogs.com/kerrycode/archive/2015/08/27/4762921.html 1.final相关 (1)fin ...
随机推荐
- Good Bye 2018题解
Good Bye 2018题解 题解 CF1091A [New Year and the Christmas Ornament] 打完cf都忘记写题解了qwq 题意就是:给你一些黄,蓝,红的球,满足蓝 ...
- 如何在openfoam中使用probes?【转载】
The probes functionObject 可以监测结果和在后处理中提出结果处理结果.基本用法如下: in $FOAM_TUTORIAL/oodles/pitzDaily/ case func ...
- OpenFOAM 中边界条件的设定【转载】
转载自:http://blog.sina.com.cn/s/blog_a0b4201d0102v7jt.html 用习惯了FLUENT的操作界面,再使用OpenFOAM就会觉得非常繁琐.遇到的第一个问 ...
- 走进JavaWeb技术世界16:极简配置的SpringBoot
一位阿里 Java 工程师的技术小站.作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时 ...
- 学号 20175313 《Android程序设计》实验报告
目录 一.实验内容 (1)Android Stuidio的安装测试 (2)Activity测试 (3)UI测试 (4)布局测试 (5)事件处理测试 二.实验步骤 (1)Android Stuidio的 ...
- git 比较两个分支不同的commit
比如我们有 2 个分支:master, dev,现在想查看这两个 branch 的区别,有以下几种方式: undefined 1.查看 dev 有,而 master 中没有的: 1.查看 dev 有, ...
- OpenJudge计算概论-矩阵交换行
/*======================================================================== 矩阵交换行 总时间限制: 1000ms 内存限制: ...
- IO流的标准处理代码
FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("aaa.t ...
- Visual studio 正在从以下位置加载符号:Microsoft符号服务器 尝试取消禁用后续符号加载
正在从以下位置加载符号:Microsoft符号服务器 尝试取消禁用后续符号加载 进入VS---工具---选项----调试----符号,看右边有个“Microsoft符号服务器”,将前面的勾去掉,( ...
- 算法习题---4-2正方形(UVa201)
一:题目 判断一个点阵中含有几个正方形(数正方形) 如图例中:有2个边长为1的正方形,1个边长为2的正方形 (一)题目详解 (二)样例输入 4 表示每行每列各有4个顶点 16 表示整个点阵中共有16条 ...