Java学习——用题目考察对Java的理解和认识

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。Java学习——用题目考察对Java的理解和认识,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

引出


1.下面程序段如何执行:

package com.tianju.test;

public class TestWeekDemo2 {
    public static void main(String[] args) {
        String s1 = "a"+"b";
        String s2 = new String(s1);
        if (s1==s2){
            System.out.println("= = is succeeded");
        }
        if (s1.equals(s2)){
            System.out.println(".equals() is succeeded");
        }
    }
}

解析:
每次调用String方法都会创建一个新的String,==用来判断两个引用是否指向同一个对象;.equals()方法用来比较值是否相等;
综上,程序的输出为.equals() is succeeded。

2.代码执行顺序

子类A继承父类B, A a = new A();
则父类B构造函数、
父类B静态代码块、
父类B非静态代码块、
子类A构造函数、
子类A静态代码块、
子类A非静态代码块
执行的先后顺序是?

解析:
静态先执行,父类的静态先于子类:
父类B静态代码块 —> 子类A静态代码块;

然后new 子类A的时候,先new 父类B:
父类B的非静态代码块 —> 父类B的构造函数

最后是子类A的代码:
子类A的非静态代码块 —> 子类A的构造函数

在这里插入图片描述

类的初始化顺序

在这里插入图片描述

最一般的初始化顺序,包含继承 A->B

父类 static 属性/代码块: 只创建一次
子类的static属性/代码块 :只创建一次
父类的代码块/属性
父类的构造方法
子类的代码块/属性
子类的构造方法

3.public static int i的赋值问题

类X代码如下:

package com.tianju.entity;

public class X {
    public static int i;
    public int j;
}

测试程序代码如下:

package com.tianju.testweek;

import com.tianju.entity.X;

public class TestXDemo1 {
    public static void main(String[] args) {
        X x1 = new X();
        X x2 = new X();
        x1.i = 3;
        x1.j = 4;
        x2.i = 5;
        x2.j = 6;
        System.out.println(
                x1.i + " " +
                x1.j + " " +
                x2.i + " " +
                x2.j);
    }
}

输出值为什么?

解析:
静态先执行,所以静态的i为5,j是不同对象的值,因此分别为4,6
答案:5 4 5 6

4.同上

类代码

package com.tianju.entity;

public class Test {
    public static int stVar = 100;
    public int var = 200;
    public String toString(){
        return var + " :" + stVar;
    }
}

测试用例:

package com.tianju.testweek;

import com.tianju.entity.Test;

public class TestTestDemo2 {
    public static void main(String[] args) {
        Test t1 = new Test();
        t1.var = 300;
        System.out.println(t1);

        Test t2 = new Test();
        t2.stVar = 300;
        System.out.println(t2);
    }
}

解析:略
答案:
300 :100
200 :300

4.要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )

A.让该类不使用任何关键字
B.使用orivate:关键字
C.使用orotected关键字
D.使用void关键字

答案:A


总结

刷题是可以是手段,做题不是目的,看题是为了检验掌握相关知识

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/165165.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!