首页 > 编程语言 >java类与对象课后测试

java类与对象课后测试

时间:2022-10-08 09:11:24浏览次数:45  
标签:java 课后 System 测试 println Foo public 变量 out

1.测试ClassAndObjectTest.java

public class ClassAndObjectTest 
{

    public static void main(String[] args) 
    {
        //创建类的实例,定义一个对象变量引用这一实例
        MyClass obj = new MyClass();
        //通过对象变量调用类的公有方法
        obj.myMethod("Hello");
        //给属性赋值
        obj.setValue(100);
        //输出属性的当前值
        System.out.println(obj.getValue());
        //直接访问对象公有字段
        obj.Information = "Information";
        //输出对象公有字段的当前值
        System.out.println(obj.Information);
    }
}

/**
 * 自定义Java类的示例
 */
class MyClass 
{
    // 公有字段
    public String Information = "";

    // 自定义公有Java实例方法
    public void myMethod(String argu) 
    {
        System.out.println(argu);
    }

    // 定义属性:私有字段+get方法+set方法
    private int value;
    public int getValue() 
    {
        return value;
    }
    public void setValue(int value) 
    {
        this.value = value;
    }

}

需要定义一个对象变量,然后“new”一个对象,赋值给对象变量

2.早期我们经常这样定义变量“int value=100;”,而前面的示例中这样定义变量“MyClass obj=new MyClass();”,这两种方式定义的变量是一样的吗?

不一样

“引用”一个对象的变量称为“引用类型”的变量,有时又简称为“对象变量”。诸如int,float之类的变量称为“原始数据类型”的变量)。

从变量与内存分配上讲,当声明一个对象类型的变量时,实际上并没有创建一个对象,此变量=null。定义一个原始类型的变量时,会马上给其分配内存。

3.对于原始数据类型的变量(比如int),可以直接使用“==”判断两变量值是否相等,那么对象变量也可以使用“==”判断两变量值是否相等吗?

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
Foo obj1 = new Foo();
Foo obj2 = new Foo();
System.out.println(obj1==obj2);
    }
}
class Foo{
    int value=100;
}

运行结果:

 

 不可以,类似于字符串的比较大小,使用equals()进行比较,用法与其相同。当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。

4.以下代码为何无法通过编译?哪儿出错了?

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
     Foo obj1 = new Foo();
    }
}
class Foo{
    int value;
public Foo(int initValue){
    value=initValue;
}
}

如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。所以可以将“Foo obj1 = new Foo();”改为“Foo obj1 = new Foo(4);”

5.运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”

class Root
{
    static
    {
        System.out.println("Root的静态初始化块");
    }
    {
        System.out.println("Root的普通初始化块");
    }
    public Root()
    {
        System.out.println("Root的无参数的构造器");
    }
}
class Mid extends Root
{
    static
    {
        System.out.println("Mid的静态初始化块");
    }
    {
        System.out.println("Mid的普通初始化块");
    }
    public Mid()
    {
        System.out.println("Mid的无参数的构造器");
    }
    public Mid(String msg)
    {
        //通过this调用同一类中重载的构造器
        this();
        System.out.println("Mid的带参数构造器,其参数值:" + msg);
    }
}
class Leaf extends Mid
{
    static
    {
        System.out.println("Leaf的静态初始化块");
    }
    {
        System.out.println("Leaf的普通初始化块");
    }    
    public Leaf()
    {
        //通过super调用父类中有一个字符串参数的构造器
        super("Java初始化顺序演示");
        System.out.println("执行Leaf的构造器");
    }

}

public class TestStaticInitializeBlock
{
    public static void main(String[] args) 
    {
        new Leaf();
        

    }
}

运行结果:

 

 静态初始化块只执行一次。创建子类型的对象时,也会导致父类型的静态初始化块的执行。

标签:java,课后,System,测试,println,Foo,public,变量,out
From: https://www.cnblogs.com/liucaizhi/p/16767912.html

相关文章

  • JavaWeb/JavaEE开发入门(概述-总纲)
    作为初学者的浅知薄见,漫谈概览.欢迎指正和交流.1.从SE到Web到EE开发刚入门Java开发的时候,即使对于计算机网络有所了解,但是对于从围绕JDK展开学习的JavaSE的过程......
  • JavaScript高级复习——构造函数和原型
    构造函数JavaScript的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的this上添加。通过这两种方式添加的成员,就分别称之为静态成员和实例成员......
  • Java Agent到内存马(一)
    目录关于JavaAgent介绍使用方式premainagentmain方式参考关于JavaAgent介绍在jdk1.5之后引入了java.lang.instrument包,该包提供了检测java程序的Api,比如用于......
  • Java流程控制复习
    Java流程控制复习1.用户交互Scanner通过Scanner类的next()和nextLine()方法获取输入的字符串注意:next():一定要读取到有效字符后才可以结束输入对于输入有效字......
  • 服务器Linux系统(Ubuntu)安装Java
    下载Java  前往Java官网找到对应版本链接并右键复制链接  这里使用的是Ubuntu云服务器于是下载Linuxx64CompressedArchieve,复制该项链接  用管理员账户登......
  • python写脚本测试执行为什么要写if __name__ == '__main__'
    我的博客在写python脚本的时候,例如,我写一个test1.pydeftest(n):print(n)if__name__=='__main__':n=1test(1)接下来打开cmd命令窗口,执行命令python......
  • java 范型的通配符
    一、需要通配符的原因假设类Manager继承Employee,并且有如下的范型Pair类classPair<T>{privateTfirst;privateTsecond;publicPair(){......
  • java中,如何解决@NotBlank不生效的问题 @NotBlank @NotEmpty不生效,以及对象嵌套问题
    这篇文章主要介绍了如何解决@NotBlank不生效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。1.解决@NotBlank不生效最近做一个新......
  • Java19虚拟线程都来了,我正在写的线程代码会被淘汰掉吗?
    Java19中引入了虚拟线程,虽然默认是关闭的,但是可以以Preview模式启用,这绝对是一个重大的更新,今天Java架构杂谈带大家开箱验货,看看这家伙实现了什么了不起的功能。1为什么......
  • Java俱乐部社团面试记录
    Java俱乐部社团面试记录1.申请表自身能拿出手的太少了,能写在申请表上的除了自己的热情,近乎没有,该打打大大小小的比赛了2.个人介绍自己过于紧张,一进门脑子只剩空气了3.......