课后作业——2022.09.17

1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。

import java.util.Random;
import java.util.Scanner;
public class RandomNum {
    public static void main(String[] args) {
        Random ran = new Random(System.currentTimeMillis());//以当前时间为种子
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the number of randomnumbers:");//从键盘输入要产生随机数的个数
        int in = input.nextInt();
        int j=0;//引入j用来输出换行符
        for(int i = 0 ; i < in ; i++) {
            System.out.print(ran.nextInt()+"\t");//利用for循环输出所产生的随机数
            j+=1;
            if(j==6){
                System.out.println();
                j=0;
            }
        }
    }
}

 

 

 

 

 

 

2、看以下代码,你发现了有什么特殊之处吗?

// MethodOverload.java
// Using overloaded methods
public class MethodOverload {
  public static void main(String[] args) {
    System.out.println("The square of integer 7 is " + square(7));
    System.out.println("\nThe square of double 7.5 is " + square(7.5));
  }
  public static int square(int x) {
    return x * x;
  }
  public static double square(double y) {
    return y * y;
  }
}

同样名称的函数可以不同,不同的参数类型可以自动调用相应的函数(方法),即方法的重载。

满足以下条件的两个或多个方法构成“重载”关系:

(1)方法名相同;

(2)参数类型不同,参数个数不同,或者是参数类型的顺序不同。

注意:方法的返回值不作为方法重载的判断条件。

3.查看一下JDK中System.out.println()方法,你发现了什么?

 

System.out.println()方法中实参表内可输入很多类型。

4.阶乘数怎么可能出现负数?

原因:由于计算机使用固定的位数来保存数值,因此,能处理的数值大小是有限的。50的阶乘过于大,超出了范围,导致数据溢出。

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();


}

}

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

6.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

public class Me
{
 int x=1;
 static int  y=2;
 public static void method()//静态方法
  {   
   System.out.println("实例变量x = " + new Test().x);//在静态方法中访问类的实例变量需首先进行类的实例化
   System.out.println("静态变量y = " + y);//在静态方法中可直接访问类的静态变量
  }
 public static void main(String[] args) 
    {
         Test.method();
         Test t = new Test();
        System.out.println("x = " + t.x);
    }
}

类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中"寄居",不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。

posted @ 2022-09-17 13:45  sodamate  阅读(16)  评论(0编辑  收藏  举报