您现在的位置是: 首页 > 个人博客 > 据说是一道华为Java面试题 个人博客
据说是一道华为Java面试题
2018-12-26 11:12:31
【问答】2152人已围观
简介 请问下面程序将会输出什么?程序如下: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字符串
相关文章
随机图文
大家猜一猜运算结果?
大家决定下面这段代码的运算结果是什么呢?public class Test { public static void main(String[] args) { int n = getNum(); System.out.println(n); } public static int getNum(){ int a = 10; try { a = 20; throw new RuntimeException(); } catch (Exception e) { a = 30; return a; }finally{ a = 40; } }}略微思考,大家都应该知道结果,是30,分析一下:首先,初始化变量a的值为10,继续执行,重新将a赋值为20,这时抛了一个异常,被catch捕获,这是a再次被重新赋值为30,这时候看到了return关键字,程序保存方法返回值(这个返回值将作为最后的运行结果,返回给外部调用),最后执行finally,执行完之后,再把前面运行得到的结果返回给程序调用。
关于Access denied问题的解决办法
再启动javaweb项目的时候,我们不经意间会遇到一个如下问题:造成这种问题的原因有很多种,比如,账户密码错误,或者数据库权限设置问题。首先确认自己项目配置文件的数据库名和密码是否配置正确,这个原因也可能导致。如果配置文件中你的数据库账户和密码确认无误,但依然出现以上错误,请按照如下步骤操作:1.登录mysql cd D:\mysql-5.6.24-win32.1432006610\mysql-5.6.24-win32\bin mysql -u root -p 输入你的数据库密码,按enter确定登录。 2.修改数据库密码 切换到mysql自带库:use mysql; 如果你的mysql版本是5.7以下(不包括5.7),请使用如下sql命令修改密码: update user set Password = password ('123456') where User = 'root'; 如果你的mysql版本是5.7及以上,请使用如下sql命令修改密码: update user set authentication_string=password('123456') where user='root';3.刷新权限 flush privileges;4.退出数据库 quit;5.重启数据库 net stop mysql net start mysq具体演示操作如下:最后在使用navicat for mysql测试一下是否可以登录。如果可以,在eclipse重启项目,使用浏览器访问页面,如果不在报错,那么恭喜你,问题解决了。如果你不记得你的数据库密码了,你可以通过在数据库安装目录bin下,添加配置skip-grant-tables添加这个配置的作用是为了使用cmd控制台登录数据库时,跳过密码验证,不必输入密码,直接enter即可进入数据库。然后重启mysql服务器。
关于查询或者添加中文乱码问题
如果你的项目在使用过程中: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 注意:一般第三种情况可以直接解决问题。
javaweb+mysql项目部署教程
一.必备软件java运行环境:jdkjava开发编辑器:eclipse数据库:mysql数据库可视化工具:navicat for mysql或者navicat premium web服务器:tomcat以上软件请务必全部下载安装,请到我的百度网盘里下载!二.软件安装1.jdk配置 首先安装好jdk,我一般使用1.8版本的jdk。配置好JDK环境变量。 jdk下载,包含jdk1.7和jdk1.8,32位(i586)和64位(x64),现在电脑操作系统一般都是64位的,建议下载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 安装参考文档如下: http://www.xiaoniucr.com/article/view/9.html2.安装eclipse 我一般使用mar2版本。请自行选择32位或者64位下载。win32-x86_64的就是64位的,win32的就是32位的。 现在电脑操作系统一般都是64位的,所以请下载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.mysql安装 mysql我使用的是5.7.24的版本。现提供5.6.42和和5.7.24安装版本的下载地址。 建议下载mysql-installer-community-5.7.24.0.msi安装版本,按照步骤一步步执行安装。 mysql百度网盘下载链接: 链接:https://pan.baidu.com/s/1PObOxF0CCKIgg9kzIFDnkA 提取码:zq1j mysql官网下载地址:https://dev.mysql.com/downloads/installer/5.6.html mysql安装教程参考:http://www.xiaoniucr.com/article/view/10.html 安装过程中请记住自己的数据库用户名和密码,项目配置需要用到。 由于部分同学第一次安装过程中出现失误,需要完全卸载mysql进行再次安装,mysql完全卸载比较费劲,参考步骤如下: mysql卸载参考:http://www.xiaoniucr.com/article/view/13.html4. eclipse配置tomcat tomcat版本一般选择8.0.47的版本。请下载8.0.47的版本。 tomcat为免安装版本,下载之后无需安装,直接解压到某个盘的根目录即可。 tomcat百度网盘下载链接:链接:https://pan.baidu.com/s/1eChKbCVH7_u7csyQSvlAoQ 提取码:zmoa tomcat官网下载链接:http://tomcat.apache.org/download-70.cgi 配置参考地址:http://www.xiaoniucr.com/article/view/7.html二.项目配置1.项目导入 File → Import → General → Existing Project Into Workspace2. 项目配置 选中项目,右键→Properties→Java Build Path,检查项目是否存在Jar包缺失,一般不会存在,以防万一。3. 项目乱码问题 一般来说,项目不会存在乱码问题,如果存在中文乱码,请修改编码,操作如下:选中项目,右键→Properties→Resource,text file encodeing,选择对应的编码格式,一般来说都是utf-8。五.详细部署教程 详细部署教程,见下面演示视频: Note:项目在第一次成功部署后,下次启动,请注意:
点击排行
javaweb+mysql项目部署教程
点赞排行
javaweb+mysql项目部署教程