动手动脑2

zlj843767688 zlj843767688     2023-01-15     423

关键词:

---恢复内容开始---

1.动手实验:继承条件下的构造方法调用

class Grandparent 



    public Grandparent()
 	

        	System.out.println("GrandParent Created.");
	



    public Grandparent(String string) 
	

        	System.out.println("GrandParent Created.String:" + string);
	
 





class Parent extends Grandparent



    public Parent()
	 

        	//super("Hello.Grandparent.");

        	System.out.println("Parent Created");
	
       // super("Hello.Grandparent.");

	  





class Child extends Parent 



    public Child()
	 
	
        System.out.println("Child Created");

	  





public class TestInherits 



    public static void main(String args[])
	 

        	Child c = new Child();
	
  


  结果技术分享图片

结论:是第一个语句

通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。

2

为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?

答:构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。

3.

参看ExplorationJDKSource.java示例 此示例中定义了一个类A,它没有任何成员: class A

package z;

public class ExplorationJDKSource 

	/**
	 * @param args
	 */
	public static void main(String[] args) 
		System.out.println(new A());
	



class A

  技术分享图片

使用javap –c命令反汇编ExplorationJDKSource.class 得:

技术分享图片

结论:

main方法实际是调用了String类的valueOf()方法而valueOf方法内部又调用Object.toString方法:public String toString()return getClass().getName()+”@”+Integer.toHexString(hashCode());

hashCode方法是本地方法,由JVM设计者实现:public native int hashCode()。

4.

请自行编写代码测试以下特性(动手动脑): 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字

package z;
class person
    public person()
    
        System.out.println("A");
    

class me extends person

    public me()
    
        super();
        System.out.println("B");
    

class you extends person
	public you() 
		super();
		System.out.println("C");
	

public class test 

    public static void main(String[] args) 
        // TODO Auto-generated method stub
        me me = new me();
    


  

 技术分享图片

(1)覆盖方法的允许访问范围不能小于原方法。

(2)覆盖方法所抛出的异常不能比原方法更多。

(3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

(4)不能覆盖静态方法。

 

动手动脑2

1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。importjavax.swing.JOptionPane;publicclasssuiji publicstaticvoidmain(Stringargs[]) intvalue; Stringoutput=""; for(inti=1;i<=1000;i++) value=1+(int)(Math.rando 查看详情

课程3动手动脑.

...ueMultiplier=75=16807C=0当显示过2^31-2个数之后,才可能重复。动手动脑:编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。packagedemo;//RandomInt.java//Shifted,scaledrandominte 查看详情

动手动脑2(代码片段)

1.//作者:冯晨//日期2018.10.15packagesuijishushengcheng;publicclassHpublicstaticvoidmain(String[]args)for(intj=0;j<1000;j++)inti=(int)(Math.random()*100000);System.out.println(i);2.重载在同一类中进行,同名却不同用。 查看详情

动手动脑

一.【类型转换】  —>无精度损失--à有精度损失Byte1字节  -2的7次方到2的7次方-1short2字节 -2的15次方到2的15次方-1int4字节   -2的31次方到2的31次方-1long8字节 -2的63次方到2的63次方-1float4字节 &... 查看详情

第三讲动手动脑-2(代码片段)

publicclassFruitpublicStringtoString()return"FruittoString.";publicstaticvoidmain(Stringargs[])Fruitf=newFruit();System.out.println("f="+f);//System.out.println("f="+f.toString());结果:f=FruittoSt 查看详情

动手动脑2

1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数a.利用产生随机数的公式X(n+1)=(aXn+c)modm计算出所需要的随机数,利用for循环产生每二十个一行的随机数b.源代码packagesuijshu10001;publicclassTest{publiclongx=123456L;pu... 查看详情

实验2及动手动脑(代码片段)

importjava.util.Scanner;publicclassSushupublicstaticvoidmain(String[]args)intflag=0;int[]a=newint[100];Scannersc=newScanner(System.in);System.out.println("请输入第一个数字");intx=Integer.parseInt(sc.nextLin 查看详情

动手动脑,无法自拔

1.动手动脑 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。而foo类中有一个publicfoo(intinitValue)类,导致系统不能引用默认的构造函数。2.动手动脑 实例:TextStaticInitialalizeBlock.java: classRoot{s... 查看详情

方法的动手动脑

动手动脑:(1)纯随机数发生器Modulus=231-1=int.MaxValueMultiplier=75=16807C=0当显示过231-2个数之后,才可能重复。动手动脑:编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。代码如下:package suijishu; public&... 查看详情

动手动脑2

首先,如果做的听的递归的题目多了之后,就会发现,递归要满足两个条件:一是,要有使递归进行下去的变量,在这里就是row和col(行和列);二是,要有终止递归的条件,在这里就是当row和col相等或者col==1的时候。递归在经典... 查看详情

2动手动脑问题及实验性问题

1、编写一个方法,使用算法生成指定数目(比如1000个)的随机整数 importjava.util.Scanner; importjava.util.Random; publicclassRandomInt {/***@paramargs*/  publicstaticvoidmain(String[]args)  {  //TODOAuto-generatedmethodstub    查看详情

java第三章动手动脑

动手动脑1.(1)intvalue=100;(2)MyClassobj=newMyClass();这两种定义方式一样吗?答:定义方式相同,其中(1)是(2)的简化写法。2.结果为false,原因:比较对象是否相同时,比较的是对象指向的内存地址,如果要比较对象是否相同... 查看详情

课堂动手动脑

动手动脑1.当在捕获到异常的处理代码里加入system.exit()时,finally的代码块是不会执行的。            2.Catchwho结果:          & 查看详情

java-02-动手动脑

1.设计思想:利用随机数产生公式,递归调用,输出一定数量的随机数。2.源代码:importjava.util.Scanner;publicclassSuiji_2{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubScannerin=newScanner(System.in);System.out.println("产 查看详情

动手动脑2

1.纯随机数生成方法:我们可以用math.random来生成随机数,但是通过这种方法生成的随机数会出现重复,因此它生成的随机数称为伪随机数。为了避免发生重复,可以运用种子和random类共同生成随机数,这种方法通过对种子的不... 查看详情

动手动脑(课堂作业02)

1,生成随机数(数学公式)publicclassSuiji{privatestaticfinalintN=200;privatestaticfinalintLEFT=40;privatestaticfinalintRIGHT=1000;privatestaticlongx0=1L;privatelonga=1103515245L;privatelongc=12345L;privatelongm=2 查看详情

覆盖动手动脑(代码片段)

package代码测试2;publicclassoverridepublicstaticvoidmain(Stringargs[])sonc=newson();c.emm();classparentspublicvoidemm()System.out.println("吴林祥");classsonextendsparentspublicvoidemm()super.emm(); 查看详情

动手动脑02

1请看以下代码,你发现了有什么特殊之处吗?原因:上述示例代码展示了Java的“方法重载(overload)”特性。满足以下条件的两个或多个方法构成“重载”关系:(1)方法名相同;(2)参数类型不同,参数个数不同,或者是参... 查看详情