Java课程作业之动手动脑(三)
1.以下代码为何无法通过编译?哪儿出错了?

在Foo类中已经有了一个Foo的含参构造方法,所以在定义Foo类对象时不能使用new Foo()方法。在Foo类中再写一个无参构造方法,就能编译了。
如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。
2.使用上页幻灯片中定义的类,以下代码输出结果是什么?自行总结Java字段初始化的规律。


输出结果:

规律:
类的初始化块,可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。类的这种“没有名字”的“成员”,多用于初始化类的字段。
public int field=100; 在定义时进行初始化,此时field = 100;System.out.println(obj.field); 输出field的值100。
obj=new InitializeBlockClass(300);System.out.println(obj.field);利用构造方法进行初始化,field的值初始化为300,输出300。
3.请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。
输出结果:

总结:所有的静态初始化块都优先执行,其次才是非静态的初始化块和构造函数,它们的执行顺序是:父类的静态初始化块>子类的静态初始化块>父类的初始化块>父类的构造函数>子类的初始化块>子类的构造函数.
4.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?
public class Example {
int a = 1;//类的实例变量,初始化值为1
static int b = 2;//类的静态变量,初始化值为2
public static void method()//静态方法
{
System.out.println("实例变量a = " + new Example().a);//在静态方法中访问类的实例变量需首先进行类的实例化
System.out.println("静态变量b = " + b);//在静态方法中可直接访问类的静态变量
}
public static void main(String[] args)
{
Example.method();
Example ex = new Example();
System.out.println("a = " + ex.a);
}
}
结果截图:

Java课程作业之动手动脑(三)的更多相关文章
- Java课程作业之动手动脑(六)
1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. import java.io.IOException; import java.nio.file ...
- Java课程作业之动手动脑(五)
1.请阅读并运行AboutException.java示例. import javax.swing.*; class AboutException { public static void main( ...
- Java课程作业之动手动脑(四)
1.继承条件下的构造方法调用 class Grandparent { public Grandparent() { System.out.println("GrandParent Creat ...
- Java课程作业之动手动脑(二)
纯随机数发生器 编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. import java.util.Scanner; public class test { public stat ...
- java课堂作业3 动手动脑
第一题 测试一下代码查看输出结果 public class InitializeBlockDemo { /** * @param args */ public static void main(Str ...
- JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...
- Java类和对象动手动脑
动手动脑1 以下代码为何无法通过编译?哪儿出错了?
- Java文件与类动手动脑
动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOExcepti ...
- Java第一节课动手动脑
在第一节课的动手动脑中,主要解决四则运算问题. 首先第一个是出30道四则运算题目,在100以内.这个问题需要控制随机数生成的范围和结果的范围在100以内就可以. 第一次改进是3点:一为避免重复,二为定 ...
随机推荐
- 【MySQL】批量数据循环插入
双重循环插入 DELIMITER ;; CREATE PROCEDURE test_insert() BEGIN ; ; ) DO -- repeat ; -- select a; ) DO ); ; ...
- SPI 核的寄存器空间
SPI 核的寄存器空间 寄存器的地址与定义: 寄存器描述与配置: 复位寄存器: 控制寄存器: 状态寄存器: 数据发送寄存器: 在使用DTR之前,一定要经过复位处理. 对于DTR的操作中,首先写入com ...
- golang 指针在struct里的应用
type aa struct { b *int c string } func main() { var data int = 0 var ip *int /* 声明指针变量 */ ip = & ...
- Windows核心编程 中部分代码 Delphi 实现
// ① Delphi 使用 Interlocked 系列函数 var MyValue:Longint = ; // = Integer begin InterlockedIncrement(MyVa ...
- 数据库返回刚插入记录的ID
--创建数据库和表create database MyDataBaseuse MyDataBase create table mytable(id int identity(1,1),name var ...
- 【优化】自定义抛出throw 对象练习
package ltb6w; import java.util.*; public class Bank { private boolean bool=true; private String sel ...
- sqlserver 查询表中的主键、外键列及外键表,外表中的主键列
1.获取主键信息 EXEC sp_pkeys @table_name='{0}' 2.获取外键 方法二 SELECT Field=(SELECT name FROM syscolumns WHERE ...
- Foxmail Gmail Outlook
三个邮件客户端都比较好,但是作为用户精力是非常有限地,必须优中选优. 我选outlook,非常值得拥有. 理由如下: (1)和office完美契合 (2)和生产环境完美契合 (3)免费 (4)良好地任 ...
- 【转】SOA架构设计经验分享—架构、职责、数据一致性
1.背景介绍 最近一段时间都在做系统分析和设计工作,面对的业务是典型的重量级企业应用方向.突然发现很多以往觉得很简单的问题变得没有想象的那么容易,最大的问题就 是职责如何分配.论系统架 ...
- Java学习——使用final修饰符
package Pack1; import java.awt.*; import java.applet.*; class ca { static int n = 20; final int nn; ...