您现在的位置是: 首页 > 个人博客 > 据说是一道华为Java面试题 个人博客
据说是一道华为Java面试题
2018-12-26 11:12:31
【问答】1827人已围观
简介 请问下面程序将会输出什么?程序如下:public class Test { class A{ private static final int m = 10; public A(){ change(); } public void change(){ System.ou......
请问下面程序将会输出什么?程序如下:
public class Test { class A{ private static final int m = 10; public A(){ change(); } public void change(){ System.out.println(m); } } class B extends A{ private static final int num = 20; public void change(){ System.out.println(num); } } }
输出测试:
public class Test2 { public static void main(String[] args) { new Test().new B(); } }
结果公布,最终会输出:20,为什么?分析一下继承的初始化顺序。
继承的初始化顺序一般如下:
父类的静态变量-->父类的静态代码块-->子类的静态变量-->子类的静态代码快-->父类的非静态变量(父类的非静态代码块)-->父类的构造函数-->子类的非静态变量(子类的非静态代码块)-->子类的构造函数
值得注意的是:父类的非静态变量(父类的非静态代码块)是同一级的,看哪个部分写在类的最前面谁就先被执行,子类的非静态变量(子类的非静态代码块)也是一样。
所以这道题,实例化一个子类,首先会去执行父类的构造方法,执行构造方法中的函数change,但是由于change函数被子类重写了,所以执行的将是子类的change,所以会输出20;
但是,如果我们把子类的中的
private static final int num = 20;
改为
private int m = 20;
那么结果又会输出什么呢?结果是0,因为在父类的构造方法中调用子类的change方法输出num的时候,num作为一个实例变量,这时候还没有被实例化赋值,所以取得是初始值0。
上一篇: 有趣的Java字符串
相关文章
随机图文
javase+sqlserver部署项目教程
很多刚接触编程的同学,还不清楚如何使用eclipse部署javase+sqlserver项目,这里作一个简单的介绍:##软件安装1.jdk配置 首先安装好jdk,我一般使用1.8版本的jdk。配置好JDK环境变量。 jdk下载,包含jdk1.7和jdk1.8,32位(i586)和64位(x64),请看清楚再下载,下载地址如下: 百度网盘下载链接:https://pan.baidu.com/s/1O2eHQ83LB4SmDI7ivTKApA 提取码:0cdj 或者官网下载: jdk1.7下载,下载需要登录oracle账户,地址如下: https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html jdk1.8下载,地址如下 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装参考文档如下: http://www.xiaoniucr.com/article/view/9.html2.安装eclipse 我一般使用mar2版本。请自行选择32位或者64位下载。 百度网盘下载链接:https://pan.baidu.com/s/14Fo2b4znVPF6JrEmcZyc1Q 提取码:cwoc 官网下载地址如下: http://www.eclipse.org/downloads/packages/release/mars/2/eclipse-ide-java-ee-developers eclipse为免安装软件,下载到某个目录,解压就好了,发送快捷方式到桌面。 注意eclipse的版本必须和JDK版本一致,即eclipse必须保持和JDK同时是 32位或者64位,否则会打不开或者报错。3.sqlserver安装 sqlserver一般安装sqlserver2008-r2版本的。 sqlserver2008-r2百度网盘下载链接:https://pan.baidu.com/s/1fo261JzvkbFbu75KI3ahBA 提取码:g9hw sqlserver2008-r2安装参考如下:http://www.xiaoniucr.com/article/view/15.html 由于sqlserver的安装步骤比较多,安装过程中容易出现失误,导致安装失败,下面提供卸载步骤: 步骤参考:http://www.xiaoniucr.com/article/view/14.html##项目导入 eclipse点击File→Import弹出如下选择框 点击next进行项目选择导入 选择完项目之后,最后点击Finish,项目就导入进了eclipse。 ##项目jdk配置 仅仅将项目导入到eclipse还不够,要运行这个项目,还必须为项目设置jdk环境,操作如下: 鼠标选中项目,右键Properties,跳出如下窗体: 点击edit跳出如下窗体,进行jre环境的选择: 选择完jdk之后,点击Apply应用,最后点击[OK]按钮,进行确认,这样jdk就设置好了,如下: ##数据库配置1.首先,导入数据库,步骤参考如下:http://www.xiaoniucr.com/article/view/18.html2.要想正确的连接sqlserver数据库,必须在代码中将数据库的用户名和密码配置,改为你的电脑安装的sqlserver的用户名和密码, 其中,用户名一般都为sa,不需要更改,密码为学生自己安装sqlserver时设置的密码。 具体如何操作,在项目源码包中【配置】文件夹下都会包含一份【详细配置.docx】文件,参照里面的数据库配置进行配置即可。 这里需要注意的是,数据库有两种连接方式,一种是在Windows系统上用windows身份登录, 另外一种是用sa身份登录,在程序中我们使用sa账户连接数据库。 ##项目启动 以上步骤都完成之后,就可以启动项目了,javase项目的启动,一般都是使用Run as Java Application的形式,操纵如下: 找到项目main方法所在的java类,然后右键Run as,选择Java Application的形式启动,即可。 详细操作见:【详细配置.docx】文件中的项目部署,里面都会详细告知。前端学习小笔记
ie9开始支持h5,ie9以下使用html5shiv静态资源包来兼容h5h5使用svg(xml描述2D图形)来构建矢量图像,使用Canvas(javascript脚本)来构建图形。关于查询或者添加中文乱码问题
如果你的项目在使用过程中:1.遇到输入中文无法查询(有记录,但是查询无结果)2.添加中文,保存之后页面显示乱码(比如号?????乱码)。 请检查如下两个配置,并作修改: 1.检查数据库链接地址,是否有如下标红配置,没有请加上,示例: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/driving?useUnicode=true&characterEncoding=UTF-8 jdbc.user=root jdbc.password=root 以上配置可以在数据库配置文件中找到,比如.properties文件,有的是直接写在代码中。具体改动点在程序包中的详细配置文件中会有说明。 2.检查tomcat配置,找到apache-tomcat-7.0.70\conf\server.xml文件,如果不存在如下标红配置,请加上。注意:是8080端口的这个,添加完成之后,请重启tomcat;tomcat重启之后,该配置会被刷掉,所有要不时的检查改配置是否存在。 3.如果以上两种方法还没有解决问题, 那就可能就是数据库编码问题了。 参考如下解决方法:http://www.xiaoniucr.com/article/view/12.html 注意:一般第三种情况可以直接解决问题。 eclipse+tomcat部署web项目教程
有些学生可能刚接触软件这一行,对项目部署可能不太熟悉,下面介绍eclipse如何配置tomcat,部署web项目。 首先下载tomcat服务器,一般选择tomcat7或者8的版本。 tomcat百度网盘下载链接:https://pan.baidu.com/s/1UK1wAlCCk0jN_4ZNPERfsg 提取码:p7e2 tomcat官网下载链接:http://tomcat.apache.org/download-70.cgi eclipse中,Window→Preferences,开启如下配置界面: 点击Add选择对应版本的tomcat服务器添加 选择tomcat7进行配置,点击Next下一步 为tomcat7服务器设置目录,选择前面下载的tomcat,选择完成之后点击确定。 配置tomcat的jre环境 部署完成,点击OK. 到这里,eclipse配置tomcat就已经可以,如果你想配置tomcat8,步骤也是一样。 那么如何使用配置的tomcat服务器,部署我们的web程序呢? 首先打开eclipse的Servers面板,有些学生可能第一次使用eclipse,找不到Servers面板在哪里。 Window→Show View→Other,会弹出一个搜索框,我们直接搜Servers就出现了Servers面板,双击就行了。 单击如下按钮,创建一个tomcat服务器实例 选择前面配置的tomcat版本,直接点Finish. 进一步配置使用tomcat实例,Server Locations选择中间的选项,Deploy path设置webapps. 到这里,我们tomcat的基本配置就全部完成了,接下来,我们只要将项目加载到tomcat中。 选中上面的tomcat实例,右键Add and Remove,会弹出一个项目选择框,我们只要选择我们要部署的项目就可以了。 项目加载好了,最后就是项目启动了,有两种方式启动,左边的debug和右边的run,两种方式任选其一。 项目启动成功,以及如何停止项目服务。这里要注意,如果要关闭项目,请先停止服务(下方的正方形红点),在关闭eclipse。 为此本人简单录制了一个javaweb项目部署演示视频,主要使用的是eclipse开发工具,演示eclipse配置tomcat服务器进行项目部署。演示视频如下:
点击排行
