Java封装和构造

这篇博客介绍了Java类的成员变量、方法、构造块和静态代码块的基础知识,并通过示例代码展示了它们的执行顺序。同时,提供了两个类的实例,演示了构造块和静态代码块的执行优先级。此外,还定义了一个表示二维平面上点的类MyPoint,包含了构造方法和计算两点距离的方法。
摘要由CSDN通过智能技术生成

一. 单选题(共10题,83分)

 

1. (单选题) Java类的成员变量可以分为类变量和实例变量,两者最主要的区别是(  )。

  • A. 前者可以继承,而后者不能继承。
  • B. 前者无需创建对象直接引用,而后者不能。
  • C. 前者可以再赋值,而后者不可以。
  • D. 前者只能存在于抽象类,而后者不是。

我的答案: B正确答案: B

8.3

2. (单选题) Java规定类的方法支持重载,其含义是(  )。

  • A. 一个方法可以调用同类中的另一个方法。
  • B. 一个方法可以被重复调用。
  • C. 可以存在多个同名方法。
  • D. 可以存在多个同名无参数方法。

我的答案: C正确答案: C

8.3

3. (单选题)

下列代码在编译时会发生错误,下面哪种修改可以更正错误?(   )

 class Test{

         private int m;

         public static void fun(){

                System.out.println(m);

         }

}

  • A. 将private int m 改为protected int m
  • B. 将private int m改为public int m
  • C. 将private int m改为static int m
  • D. 将private int m 改为int m

我的答案: C正确答案: C

8.3

4. (单选题)

分析如下的Java程序代码,编译运行后的输出结果是(  )。

public class Test{

        int count=9;

        public void count1(){

                count=10;

                System.out.print("count1="+count);

        }

        public void count2(){

                System.out.print("count2="+count);

        }

        public static void main(String[] args){

                Test t=new Test();

                t.count1();

                t.count2();

        }

}

        

  • A. count1=9 count2=9
  • B. count1=10 count2=9
  • C. count1=10 count2=10
  • D. count1=9 count2=10

我的答案: B正确答案: B

0

5. (单选题)如果一个类中定义了一个static代码块,该代码块(  )。

  • A. 在执行main()方法之前执行。
  • B. 在执行main()方法之后执行。
  • C. 在创建这个类的对象之前执行。
  • D. 在创建这个类的对象之后执行。

我的答案: A 正确答案: A

0

6. (单选题) Java的static代码块(  )。

  • A. 是创建对象时自动执行的一段代码。
  • B. 是程序加载时自动执行的一段代码。
  • C. 是包含静态变量的一段代码。
  • D. 是包含静态方法的一段代码。

我的答案: B 正确答案: B

0

7. (单选题) Java中类的成员变量和成员方法的访问控制修饰符说明成员的可被访问的范围,(   )。

  • A. 其中public表示可被访问的范围最大,protected表示可被访问的范围最小。
  • B. 其中public表示可被访问的范围最大,private表示可被访问的范围最小。
  • C. 其中缺省表示可被访问的范围最大,private表示可被访问的范围最小。
  • D. 其中public表示可被访问的范围最大,缺省表示可被访问的范围最小。

我的答案: B正确答案: B

8.3

8. (单选题)引用Java类库中的一个类的成员,(  )。

  • A. 该类的定义必须有public修饰符。
  • B. 必须先创建对象再引用。
  • C. 是否需要创建对象取决于算法。
  • D. 是否需要创建对象取决于该成员的特征。

我的答案: D正确答案: D

0

9. (单选题)一个类中的某个变量如果为静态变量,说明该变量(  )。

  • A. 是不能更改的。
  • B. 是不能为空的。
  • C. 在声明时使用了static修饰符。
  • D. 在声明时使用了final修饰符。

我的答案: C正确答案: C

8.3

10. (单选题)如果一个类的一个构造方法的第1条语句是this();,其功能是(  )。

  • A. 调用父类的无参构造方法。
  • B. 调用本类的无参构造方法
  • C. 调用父类的this()方法。
  • D. 调用本类的this()方法。

我的答案: B正确答案: B

2.编程练习:(要求两个类定义在一个.java文件中)

1.创建类Code,类中编写构造块、静态代码块以及构造方法

2.创建CodeBlock,类中编写的构造块、静态代码块以及构造方法

3.在主函数中测试他们的执行的优先顺序(运行结果参见效果图)

class Code{

       {

          System.out.println("Code的构造块");
        }

        static{

         System.out.println("Code的静态代码块");
         }

     public Code(){

         Systm.out.println("CodeBlock的构造方法");

        }

}

public class CodeBlock{

{

System.out.print("CodeBlock的构造块");

}

static{
System.out.printfln("CodeBlock的静态代码块");

}

public CodeBlock(){

     System.out.println("CodeBlock的构造方法");

}

      public static void main(String[] args){
            System.out.pritnln("CodeBlock的主方法");

           System.out.println("产生Code类实例对象");

           new Code();

           System.out.println("产生CodeBlock类实例对象");

          new CodeBlock();

       }

}

编写一个表示二维平面上的点的类MyPoint,满足以下条件:

(1)定义private的成员变量x和y,表示点的x和y坐标,类型为整数。

(2)定义两个MyPoint的构造方法,一个构造方法不带参数,且x和y的初始值为0,另一个构造方法有两个参数,参数名为x和y,类型为整数,用这两个参数分别作为初始x和y的坐标。

(3)定义一个getD方法,功能为返回两个坐标点(由MyPoint定义)距离,值为float类型。

(4)编写main方法,打印坐标点(2,3)到点(4,5)的距离。运行结果:2.828427

注:可以使用Math.sqrt()方法计算平方根。

import java.lang.*;

public class MyPoint{

                   private int x,y;

                   public MyPoint(){

                               x=0;

                               y=0;

                      }

                   public MyPoint(int x,int y){

                                this.x=x;

                                this.y=y;

                   }

                  public static float getD(MyPoint p1,MyPoint p2){

                              float d1=(float)Math.pow(p2.x-p1.x,2)+(float)Math.pow(p2.y-p1.y,2);

                              float d2=(float)Math.pow(d1,0.5);

                               return d2;

                   }

          public static void main(String[] args){

               MyPoint p1=new MyPoint(2,3);

               MyPoint p2=new MyPoint(4,5);

              float d=(float)MyPoint.getD(p1,p2);

              System.out.print(d);

           }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四维空间中的未知点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值