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

      

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

  • 相关阅读:
    3.2 线程复用:线程池
    3.1.7 线程阻塞工具类:LockSupport
    3.1.6 循环栅栏:CyclicBarrier
    3.1.4 读写锁
    3.1.5 倒计时器:CountDownLatch
    3.1.3 允许多个线程同时访问:信号量
    3.1.2 condition 条件
    3.1.1 重入锁 以及源码分析
    2.8.4 错误的加锁
    jsp中 scope="application" 表示
  • 原文地址:https://www.cnblogs.com/dwx8845/p/11695452.html
Copyright © 2011-2022 走看看