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 ...
随机推荐
- learning scala stripMargin
(1)Scala中创建多行字符串使用Scala的Multiline String. 在Scala中,利用三个双引号包围多行字符串就可以实现. 代码实例如: val foo = "" ...
- Windows下OpenFOAM开发及使用环境配置指南 (2)【转载】
转载自:http://openfoam.blog.sohu.com/158751915.html *************************************************** ...
- 我的BO之导航属性
我的BO 1-我的BO之强类型 2-我的BO之数据保护 3-我的BO之状态控制 4-我的BO之导航属性 数据需要导航 数据之间普遍存在关系,做业务处理时往往也是按照关系在数据之间查询和处理.业务处理可 ...
- pc电源cpu插座和显卡插座
cpu插座是8口的,一般4+4 显卡插座是6口的,也有8口的用6+2 6+2的中2有一个小边,组合成8口也不能插入cpu插座.
- Flutter移动电商实战 --(48)详细页_详情和评论的切换
增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/material.dart'; i ...
- nodejs取参四种方法 req.body, req.params, req.param, req.body
获取请求很中的参数是每个web后台处理的必经之路,nodejs的 express框架 提供了四种方法来实现. req.body req.query req.params req.param() 首先介 ...
- vlookup实战_英语单词更新
https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149( 欢迎关注博主 ...
- JavaScript中三个等号和两个等号的区别(“===”与“==”的区别)
1.===:三个等号我们称为等同符,当等号两边的值为相同类型的时候,直接比较等号两边的值,值相同则返回true,若等号两边的值类型不同时直接返回false. 例:100===“100” //返回f ...
- 123457123457#0#-----com.yimeng.wangZheChengYu01--前拼后广--成语头脑王者
com.yimeng.wangZheChengYu01--前拼后广--成语头脑王者
- building confluentinc kafka-connect-hdfs
When I try to compile I get an error about a missing SNAPSHOT dependency. The error looks something ...