您现在的位置是: 首页 > 个人博客 > 据说是一道华为Java面试题 个人博客
据说是一道华为Java面试题
2018-12-26 11:12:31
【问答】2189人已围观
简介 请问下面程序将会输出什么?程序如下: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字符串
相关文章
随机图文
jdk详细安装步骤图解
由于部分同学对jdk安装不是很熟悉,下面详细介绍jdk的安装步骤: jdk下载,包含jdk1.7和jdk1.8的32位(i586)和64位(x64),7u80就是1.7的jdk,8u191就是1.8的jdk;i586表示32位,x64表示64位。 请看清楚再下载,下载地址如下: 百度网盘下载链接: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 安装参考文档如下: jdk优先选择1.8,一般是最后一个(64位操作系统) 双击exe程序执行安装 点击下一步,开始安装 设置安装路径 正在安装jdk jdk安装完之后,还需要安装jre,设置jre的安装路径 jre安装中 安装完成 jdk安装完之后,还需要配置环境变量,步骤如下: 环境变量配置,一共需要配置3个系统变量:JAVA_HOME,CLASSPATH,PATH。这里注意是系统变量哦!Win+R组合键之后,弹出一个运行窗口,在输入框中输入sysdm.cpl命令,会弹出一个系统属性的窗口,点击【高级】菜单,就可以看到下面的【环境变量】按钮,点击就可以弹出下面的环境变量配置窗口。 1.新建JAVA_HOME系统变量,输入值为你的jdk目录,我的是C:\Program Files (x86)\Java\jdk1.7.0_80 2.新建CLASSPATH系统变量,值为【.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar】,中括号中红色的一串文本。 3.Path变量,Path变量是已经存在的,这里只作修改。这里注意,Win7和Win10系统操作有点不一样。(谨慎操作,不要把path删了哦!),win7系统直接双击Path,在后面编辑添加变量信息,加上【%JAVA_HOME%\bin】,括号中的红色文本,复制粘贴上去就好了,不要忘了分号。如图:下面是win7的,直接在path后面粘贴进去就好了。 win10双击Path之后,会弹出一个【编辑环境变量】窗口,在窗口右上角点击【新建】,然后把要加的变量加进去就好了。 如图:下面是win10的,点击new,然后直接把【%JAVA_HOME%\bin】,中括号中的红色一串复制粘贴进去就好了,这里没有分号。 以上操作都完成之后,在cmd控制台中输入java -version,如果有jdk版本信息输出,则说明安装成功。
关于查询或者添加中文乱码问题
如果你的项目在使用过程中: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 注意:一般第三种情况可以直接解决问题。
sqlserver卸载详细步骤图解
sqlserver的安装过程还是稍微有点复杂的,同学们很容易在安装过程中,因为各种原因导致安装失败。 下面我们就针对sqlserver2008-r2,来详细介绍sqlserver的卸载步骤。 首先找到控制面板的卸载程序,在程序列表中找到我们此次的目标【Microsoft SQL Server 2008 R2】,右键选卸载。 点击“删除”按钮 按常理会出现如下图,如果“重新启动计算机”一栏显示未通过,则重启计算机,在重复上面的步骤。 如果全部显示已通过,则点击“确定”进入下一步。 接下来,点击下一步 全部勾选,接着点击“下一步” 下一步 点击“删除”按钮 等待删除卸载,过程大概20-30分钟 删除完成,点击关闭。 接着在继续卸载2008的其他组件--Native Client 卸载完成,界面会自动关闭 接着卸载Compact组件,卸载完成,界面也会自动消失。 到这里控制面板的卸载就已经完成了,接下来,我们还需要删除历史安装遗留目录,主要是以下两个目录。 C:\Program Files\Microsoft SQL Server C:\Program Files (x86)\Microsoft SQL Server 历史安装目录删除完毕之后,我们还需要删除注册表的一些东西,主要是以下几个地方。 删除所有sqlserver相关的注册表值。 Win+R,在搜索框中输入指令regedit,进去注册表。 1.HKEY_CURRENT_USER\ Software\ Microsoft\ Microsoft SQL Server 2.HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\ Microsoft SQL Server(这个地方注意了,在这个附近,有可能有你安装的部分组件的注册嘛,名字前缀都是Microsoft SQL,一并删除了。) 3.HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ MSSQLServer 还有最后一个比较特殊的: 4.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中的PendingFileRenameOperations 全部清除干净之后,重新启动电脑,后面就可以再次进行过安装了。good luck!
mysql数据库编码修改教程
由于mysql的默认编码是Latin1,不支持中文,这样就会存在插入或者查询中文乱码的问题。 下面教大家如何查看自己数据库的编码,如图: 首先通过cmd命令进入到数据库安装目录的bin目录下,然后登陆数据库,输入数据库密码,进入数据库。 可以看到数据库编码是Latin1,那么如何把它修改为支持中文的utf8呢? 网上很多教程是简单的修改表的字符编码,这种方式指标不治本,在数据库服务重启之后,字符编码又会被还原成Latin1。 其实,最直接最有效一劳永逸的方法就是通过修改数据库的my.ini文件,修改数据库编码。那么我数据库的my.ini文件在哪? 一般如果mysql默认安装的话,my.ini都在C:\ProgramData\MySQL\MySQL Server 5.6\这个目录下,ProgramData是个隐藏文件。 如果不是默认目录安装的话,按照下面方式去找: 首先在计算机服务列表中找到mysql服务,右键属性,如下图,就可以看到自己的my.ini文件路径(往右边拉一点)。 找到my.ini文件之后(有些是没有my.ini文件的,需要自己添加一个) 右键编辑,进行如下配置: 分别在client下添加:default-character-set=utf8 在mysql下添加:default-character-set=utf8 在mysqld添加:character-set-server=utf8 修改之后,在计算机服务列表中重启mysql服务。 再次查询编码,发现编码已经变为utf8了。 到这里数据库的编码就已经修改完成了,再也不用担心中文乱码了。
点击排行
javaweb+mysql项目部署教程
点赞排行
javaweb+mysql项目部署教程