zoukankan      html  css  js  c++  java
  • java 第三次课后作业

    1、java字段初始化的规律

    public class gouzao {

    public static void main(String[] args) {
    test te=new test();
    System.out.println(te.field);
    te=new test(300);
    System.out.println(te.field);
    }

    }

    package text9;

    public class test {
    {
    field=100;
    }
    public int field=100;
    public test(int value) {
    this.field=value;
    }
    public test() {

    }
    }

    结果

    100

    300

    该初始化快的值初始化块和字段的初始值无关,该变量的数值大小取决于初始化块和设定的字段的初始值先后关系,Java会将最后一次的初始化结果赋给该变量。

    2.

    package com;
    
    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();
    		
    
    	}
    }
    

      

     有结果可以看的执行顺序是先父类后子类执行初始化快,之按普通初始化、无参数、有参数的构造器顺序执行也是先父类后子类,若执行子类需要向父类传参则先执行父类则执行子类。

    3、

    package text9;
    
    public class gouzao {
    
    	public static void main(String[] args) {
    		gouzao gou1=new gouzao();
    		gouzao gou2=new gouzao();
    		gouzao gou3=new gouzao();
    		gouzao gou4=new gouzao();
    		System.out.println("总共创建的对象个数"+n);
    	}
    
    	static int n=0;
    	public gouzao()
    	{
    		n++;
    	}
    }
    

      

     此函数查看构造函数被调用了多少次。

    4.

    package text9;
    
    public class gouzao
    {
     int x = 3;//类的实例变量
     public static void fw()//静态方法
      {   
       System.out.println("实例变量x = " + new gouzao().x);
     //需要先实例化之后才可以访问。
      }
    
     public static void main(String[] args) 
        {
    	     gouzao.fw();
             gouzao gou = new gouzao();
            System.out.println("x = " + gou.x);
        }
    }
    

      

     在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有将其实例化这种方式。也就是说,调用静态方法可以无需创建对象

  • 相关阅读:
    184. Department Highest Salary【leetcode】sql,join on
    181. Employees Earning More Than Their Managers【leetcode】,sql,inner join ,where
    178. Rank Scores【leetcode】,sql
    177. Nth Highest Salary【leetcode】,第n高数值,sql,limit,offset
    176. Second Highest Salary【取表中第二高的值】,sql,limit,offset
    118. Pascal's Triangle【LeetCode】,java,算法,杨辉三角
    204. Count Primes【leetcode】java,算法,质数
    202. Happy Number【leetcode】java,hashSet,算法
    41. First Missing Positive【leetcode】寻找第一个丢失的整数,java,算法
    删除
  • 原文地址:https://www.cnblogs.com/dwx8845/p/11695452.html
Copyright © 2011-2022 走看看