静态代码块问题 System.out.println(C.value)

本文深入探讨了Java中的继承概念,通过具体示例演示了如何在类B中继承类A的所有属性和方法,同时展示了子类如何添加自己的属性和方法以及复写基类的方法。文章还解释了静态代码块的执行时机及其与类加载的关系。
/**
 * 作者:Shishuai
 * 文件名:Demo
 * 时间:2019/8/20 11:05
 */

package com.qf.test.day21;
/**
类B继承类A,按照继承来说B中将拥有A中的所有属性和方法,
但是A中不一定有B中的所有属性和方法
因为B继承A之后还可以添加自己的属性和方法 同时B也可以复写基类的方法*/
public class Demo {
    public static void main(String[] args) {

        System.out.println(C.value);
        //这个就是直接调用了C的属性value(因为C继承B B继承A 所以A中的属性也被C拥有)
        // 并没有实例化类对象
        //静态代码块  随着类的加载而执行,而且只执行一次
        //这个输出语句 从C找到B 从B找到A 在A中找到value 所以需要加载类A 所以先执行A静态的代码块 再找value的值输出
    }
}
class A{
    public static int value =3;

    static {
        System.out.println("A-------------");
    }
}

class B extends A{

    static {
        System.out.println("B-------------");
    }
}

class C extends B{
    static {
        System.out.println("C-------------");
    }
}

实验作业二 基本数据类型与数组实验目的 1. 了解 Java 的数据类型 2. 掌握各种变量的声明方式及其使用范围。 实验要求 1. 编写一个声明 Java 不同数据类型变量的程序。 2. 编写一个关于变量的使用范围的程序。 实验内容(一) 声明不同数据类型的变量1.编写声明不同数据类型变量的程序文件 KY2_1.java,源代码如下。 public class KY2_1 { public static void main(String args[]) { byte b=0x55; short s=0x55ff; int i=1000000; long l=0xffffL; char c='a'; float f=; double d=0.7E-3; boolean B=true; String S="这是字符串类数据类型"; System.out.println("字节型变量 b = "+b); System.out.println("短整型变量 s = "+s); System.out.println(" 整型变量 i = "+i); System.out.println("长整型变量 l = "+l); System.out.println("字符型变量 c = "+c); System.out.println("浮点型变量 f = "+f); System.out.println("双精度变量 d = "+d); System.out.println("布尔型变量 B = "+B); System.out.println("字符串类对象 S = "+S); } } 2. 编译并运行该程序 3. 把程序的输出结果写在实验报告中。如果不给上面程序中的变量赋初始值的话,看看该程序是否还能正确运行?如果不可以,请指出为什么?(二) 了解变量的使用范围 1.建立 KY2_2.java 文件,通过本程序了解变量的使用范围,源代码如下。 public class KY2_2 { static int i=10; public static void main(String args[]) { { int k=10; System.out.println("i="+i); System.out.println("k="+k); } System.out.println("i="+i); System.out.println("k="+k); } } 2.编译 KY2_2.java 看看这个程序是否会出错?为什么会出现编译错误,请在实验报告中给出理由! 3.修改上面的程序,让它能正确运行。 4.把修改后的源程序以及程序的输出结果写在实验报告中。 思考:KY2_2.java 程序说明了什么问题? (三) 使用数组和输出语句1. 下列程序标注的【代码1】和【代码2】的输出结果是什么?上机调试public class Main {   public static void main(String args[]) {     int [] a={10,20,30,40},b[]={{1,2},{4,5,6,7}};     b[0] = a;     b[0][1] = b[1][3];     System.out.println(b[0][3]); //【代码1】     System.out.println(a[1]);   //【代码2】   }}2. 上机调试下列程序,注意System.out.print()System.out.println()的区别。public class Main { public static void main(String args[]) { int x=234,y=432; System.out.println(x+"<"+(2*x)); System.out.print("我输出结果后不回车"); System.out.println("我输出结果后自动回车到下一行"); System.out.println("x+y= "+(x+y)); }}实验总结请在实验报告中对本次实验内容进行总结。
09-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值