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 ...
随机推荐
- 小程序官方基础项目api请求
onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now ...
- DOM操作2
一.API和WebAPI API就是接口,就是通道,负责一个程序和其他软件的沟通,本质是预先定义的函数. Web API是网络应用程序接口.包含了广泛的功能,网络应用通过API接口,可以实现存储服务. ...
- *51nod 1815
从若干个数中选出最大的任意两数取模之后的结果 严格次大值 对于此题 首先缩点 然后拓扑排序 维护到达每个点的最大值与严格次大值 感觉思路与代码都OK啊 then.... #include <io ...
- Ubuntu16.04 安装 CUDA9.2(总结一些新手容易遇到的问题)
系统:Ubuntu16.04 64bit 显卡:Nvidia GEFORCE 940MX 驱动:NVIDIA-Linux-x86_64-396.18.run 软件:cuda_9.2.88_396.26 ...
- Shiro + Redis集成思路
首先,确保Spring配置完毕了. 集成Shiro 1.在pom.xml中追加依赖 <dependency> <groupId>org.apache.shiro</gro ...
- Smali语法基础
Smali是什么 Smali是Android虚拟机的反汇编语言. 我们都知道,Android代码一般是用java编写的,执行java程序一般需要用到java虚拟机,在Android平台上也不例外,但是 ...
- python 查看某个模块都有什么方法
1.看官方文档 https://docs.python.org/3/search.html?q=os&check_keywords=yes&area=default 2.看源码 3.d ...
- springboot读取外部配置文件
springboot项目打成jar包后不好进行配置文件修改,可设置为读取外部配置文件,方便进行配置修改. 步骤: 1.将jar包中的application.properties配置文件复制到自定义路径 ...
- 微信小程序 wxParse插件显示视频
修改wxParse/html2json.js 文件 ,在 html2json(html, bindName) 方法里 var node = { node: 'element', tag: tag, } ...
- java集合类型源码解析之ArrayList
前言 作为一个老码农,不仅要谈架构.谈并发,也不能忘记最基础的语言和数据结构,因此特开辟这个系列的文章,争取每个月写1~2篇关于java基础知识的文章,以温故而知新. 如无特别之处,这个系列文章所使用 ...