精华内容
下载资源
问答
  • 面试题:下面程序运行结果

    千次阅读 2017-01-13 15:57:09
    摘自:https://zhidao.baidu.com/question/489562987146637292.html下面程序运行结果是什么?public class Dervied extends Base {private String name = "dervied"; public Dervied() { tellName(); printName

    摘自:https://zhidao.baidu.com/question/489562987146637292.html

    下面程序的运行结果是什么?

    public class Dervied extends Base {
    
    private String name = "dervied";
    
        public Dervied() {
            tellName();
            printName();
        }
    
        public void tellName() {
            System.out.println("Dervied tell name: " + name);
        }
    
        public void printName() {
            System.out.println("Dervied print name: " + name);
        }
    
        public static void main(String[] args){
            new Dervied(); 
        }
    }
    
    class Base {
    
        private String name = "base";
    
        public Base() {
            tellName();
            printName();
        }
    
        public void tellName() {
            System.out.println("Base tell name: " + name);
        }
    
        public void printName() {
            System.out.println("Base print name: " + name);
        }
    }

    输出:

    Dervied tell name: null
    Dervied print name: null
    Dervied tell name: dervied
    Dervied print name: dervied

    关键点:问题出在构造函数的地方,对于java中的extends,每个子类构造方法的第一条语句都是隐含的调用super,而且如果父类没有这种形式的构造函数就会报错。

    详细解释
    1,首先先说一下父类与子类方法覆写(overrider)相关的概念,覆写在java中主要是通过方法表来完成,java中每个类型(Class)中都存在一个方法表,其中存放java类型的实例方法(public/protected),static方法属于静态方法,和类型相关,不属于javad实例方法。private和default属于私有方法,private/default修饰的方法不进入类型的方法表。

    2,接下来说一下和方法,其中称为类初始化方法,称为对象实例化方法,该问题就与方法息息相关。
    方法:
    Java在进行对象创建时首先进行类型加载,如果Class类型存在父类型,则需要先加载父类完成以后再加载子类型。并且对static变量进行初始化操作,对static变量或者static代码块初始化的逻辑就封装在方法中。
    Java类型初始化过程中对static变量的初始化操作依赖与对static变量的赋值语句的前后关系,static语句块与static变量声明存在位置关系,java编译器与static变量的赋值位置有关。
    方法:
    Java对象在进行实例化时,首先会进行父类的实例化操作,然后再进行子类的实例化操作。该部分操作封装在方法中,并且子类的方法中会首先对父类方法的调用。
    Java对象实例化过程中对实例域的初始化赋值操作全部在方法中进行,方法显式的调用父类的方法,实例域的声明语句以及实例初始化语句块存在位置关系,方法以构造方法作为结束。

    接下来回到这道题上来,启动java虚拟机:
    第一步:加载应用用到的类,加载顺序为Base–>Dervied,这里涉及到方法的调用,但是当前类型中没有static域或者是static{},所以方法不再讨论。

    第二步:对象实例化操作,首先我们new Dervied();,这样就触发对Dervied.的调用,但是根据以上知识(“并且子类的方法中会首先对父类方法的调用”)我们可以知道,Dervied.首先会调用到Base.方法,所以现在我们调用的方法是Base.,Base.方法中,首先是对name域(父类Base)进行初始化,然后调用tellName()方法,因为子类以及覆写了tellName()方法,所以tellName方法实际调用为Dervied.tellName()方法,tellName方法要打印name域(子类Dervied)的值,但是当前Dervied对象中的name域还没有被初始化,所以打印出来的值为null。printName()方法执行与tellName()方法一致。

    第三步:Base.方法返回到Dervied.方法中,紧接着对name域(子类Dervied)进行初始化操作,然后调用子类Dervied的tellName方法和printName方法,name域(子类Dervied)已经初始化完成,所以能正确打印出来。

    展开全文
  • 编写一个控制台应用程序,完成下列功能,并写出运行程序后输出结果。1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10结果。2) 再创建一个类B,使其...

     

    编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。

    1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。

    2) 再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。

    3) 在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。

     

    【解答】

     

     

     

     

    输出结果:

    12

    52

    展开全文
  • 指出下面程序运行结果

    千次阅读 2016-12-05 21:09:07
    运行结果 结果说明 创建对象时调用顺序如下: ①先初始化父类和子类的静态成员。 ②父类非静态成员。 ③父类构造方法。 ④子类非静态成员。 ⑤子类构造方法。 另外需要注意的是,加...

    class A {
    	static {
    		System.out.print("父类静态成员  ");
    	}
    	//初始化块,也即是非static语句块
    	{
    		System.out.print("父类非静态成员  ");
    	}
    
    	public A() {
    		System.out.print("父类构造方法  ");
    	}
    }
    
    class B extends A {
    	static {
    		System.out.print("子类静态成员  ");
    	}
    	{
    		System.out.print("子类非静态成员  ");
    	}
    
    	public B() {
    		System.out.print("子类构造方法  ");
    	}
    }
    
    public class Test {
    
    	public static void main(String[] args) {
    		A ab = new B();
    		System.out.println("\n---------------------------------");
    		ab = new B();
    	}
    }

    运行结果

    结果说明

    创建对象时调用顺序如下:

    ①先初始化父类和子类的静态成员。

    ②父类非静态成员。

    ③父类构造方法。

    ④子类非静态成员。

    ⑤子类构造方法。

    另外需要注意的是,加static的语句块在加载类时就加载初始化了;不加static的语句块即初始化块,是在创建类的对象的时候才加载,在调用构造方法之前要先调用初始化块。


    展开全文
  • 以下程序段的输出结果为()。 for(i=4;i>1;i--) for(j=1;j;j++) putchar('#'); A:无 B:###### C:# D:###
  • 习题3.6 阅读下面程序,分析其执行过程,写出输出结果 #include <iostream> using namespace std; class Student {public: Student(int n,float s):num(n),score(s){} void change(int n,float s) {num=n.....

    谭浩强c++ 面向对象程序设计(第2版)
    习题3.6 阅读下面程序,分析其执行过程,写出输出结果

    #include <iostream>
    using namespace std;
    class Student
     {
    	 public:
    	   Student(int n,float s):num(n),score(s){}
    	   void change(int n,float s) {num=n;score=s;}
    	   void display(){cout<<num<<" "<<score<<endl;}
    	 private:
    	   int num;
    	   float score;
     };
    
    int main()
    {
    	Student stud(101,78.5);
    	stud.display();
    	stud.change(101,80.5);
    	stud.display();
    	return 0;
    }
    

    输出结果

    101 78.5
    102 80.5
    

    分析:第一个直接通过析构函数赋初值,输出得到101和78.第二个的话只是做了一个修改,输出得到101和80.5。此题考察的是读程序的分析能力,难度比较简单。

    展开全文
  • 如果程序运行时间长,需要实时的获取输出,或者输出比较多的情况下,就使用stdout这样的属性,不断调用readline获取输出就好。 然后关于第二个问题。其实使用Popen类就可以完美解决,Popen类的cwd参数用来设定子...
  • 阅读下面程序,并写出运行结果

    千次阅读 2016-05-26 09:05:32
    * 文件名称:第12周项目:阅读下面程序,并写出运行结果 * 作者:马康泰 * 完成日期:2016.5.19 * 版本号:v1.0 * * 问题描述:阅读下面程序,并写出运行结果 * 输入描述: * 程序输出: */ //虚...
  • 7.1 分析并写出下面程序运行结果

    千次阅读 2017-12-01 20:19:13
    #include //#include int square(int i) { return i*i; } int main() { int i=0; i=square (i); for (;i;i++) { static int i=1; i+=square (i);
  • Python单行输出程序运行进度信息

    千次阅读 2013-12-15 21:28:20
    在纯控制台输出的程序中,有时候想要显示程序运行的进度,如果进度更新一次就输出一次,会打印很多行信息,把前面有用的信息覆盖掉了。Linux下面安装文件时出现的文本形式的进度条和百分比只在一行里面刷新,很不错...
  • Python实时获取外部程序输出结果

    千次阅读 2020-03-22 11:46:08
    如何Python实时获取外部程序输出结果,可以在运行时加上-u参数或者在print函数中使用flush=True 下面写两个脚本说明一下。 system_time.py 获取系统时间,每秒打印一次,共打印3次 # !/usr/bin/python3 # -*- coding...
  • #include &lt;iostream&gt; using namespace std; class A { private: int a,b; public: A(int aa, int bb) {a=aa; b=bb;} void printA() { cout&lt;&lt;"a: "...lt
  • 下面程序执行输出几个hello

    千次阅读 2017-03-20 22:39:21
    美团2016校园招聘 研发工程师(一) 下面程序执行输出几个hello? #include #include int main( ) { fork( ); fork( ); fork( ); printf(“hello\\n”); return 0; } A 3 B 4 C 6 D 8 正
  • 改成Python3.8解释器(红色椭圆),结果就正常输出了 本人是技术小白,之前学了一段时间python,后面没怎么深入,最近想好好学一下Python,看了一段时间的书,在Python自带的idle写过一些代码,然后下...
  • 最近刚入手一款新电脑,之前的...亲测可行,之后再使用sublime text2运行小脚本的时候却出现了只有底部出现空白框但是没有结果输出的问题,查了网上的资料有的说是热键冲突被占用有的说是python的环境变量没有添加进去
  • linux 后台运行程序输出重定向

    万次阅读 2014-05-28 09:32:40
    很多时间,我们希望程序后台运行,这样不会干扰我们做别的事,也可以关闭shell登录,
  • 程序运行结果如图所示 代码` public class Practice2 { public static void main(String[] args) { Scanner input =new Scanner(System.in); int num=0; int max=-1 ; int min =999999;...
  • 请检查下面程序,找出其中的错误并改正,然后上机调试,使之能正常运行,从键盘输入,检查输出
  • (编译正常通过会出现类似下面输出) **** Build of configuration Debug for project Test **** make all make: Nothing to be done for `all'. **** Build Finished ****   请参看 ...
  • 可以看到我们图形界面和程序运行的返回的信息是一样的,并且成功把数据展示到图形界面。 1.怎么获取输出信息。eg:我们平时用编译器,例如pycharm,运行的时候,会有很多信息...
  • 这里分享一下我用Sublime Text3写Python程序,不能运行含有输入输出程序的解决办法,即不能交互问题的解决。办法很简单,手动安装sublimerepl插件,即可配置交互环境,正常输入输出。 一、问题具体描述:安装...
  • 其实这也是一个很土鳖的问题,很...而真正的执行(就是对应于vc++6.0的那个感叹号)是绿色的空心三角,在调试菜单下面,如果输入它,那么就会得到点击运行后程序运行完不关闭窗口的特点。 如果你不喜欢这样,还有一种简
  • 以前,提到将运行结果保存到文件中,我自然而然的就会想到是用C语言读取文件的方法。但是这对于初学者来说有一定的难度。 昨天下午上课,老师教了我们一招。编写完C语言程序后,我们会将其编译成.obj文件,再进行...
  • 本文旨在解决Visual Studio 2017在运行C++程序时,控制台窗口闪退(使得观察输出结果变得困难)的问题。
  • 在windows命令行下面运行Python程序

    千次阅读 2018-03-27 10:00:19
    Python程序是以.py结尾的,编译的时候在notepad++里面运行编译,千万不能用电脑自带的记事本进行编写,那个里面会自带一些特殊字符,使得结果出现未知错误。保存好的.py文件,在C盘,建立一个work文件C:\work&gt...
  • 对于c++的初学者来说,在vs上练习编写控制台程序的时候一定会遇到一个问题,那就是程序执行完毕就立即退出,甚至我们还没有来的及看清楚程序运行结果,常常会让我们误以为是不是程序的编写出现问题,也不方便查看...
  • 运行以下程序时,从键盘输入3.6,2.4,(表示回车),则下面程序运行结果是: include <stdio.h> #include <math.h> main() { float x,y,z; scanf("%f,%f",&x,&y); z=x/y; while(1) { if(fabs(z)&...
  • 输入3个整数,从小到大排序后输出。将下面程序填写完整。 #include &amp;lt;stdio.h&amp;gt; int main() { int a,b,c,t; while(scanf(&quot;%d%d%d&quot;,&amp;amp;a,&amp;amp;b,&...
  • 后台运行python程序输出缓冲区问题

    千次阅读 2016-06-13 16:00:59
    运行程序后输出结果如下: # python test1.py stderr1 stderr2 stdout1 stdout2 可以看到stderr的输出都在stdout前面,证明了stderr输出是没有输出到缓冲区的,而stdout有。 通过上面两个实验可得出...
  • VC++编写交互程序时将打印结果输出到cmd窗口显示 地址:http://www.itwis.com/html/c/ccc/20080527/1576.html 2011-06-20 10:57:46 ...使用下面的方法可以在你的交互程序运行的同时弹出一个cm

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 898,691
精华内容 359,476
关键字:

下面程序运行后的输出结果