zoukankan      html  css  js  c++  java
  • java基础(1)

    class test  
    {
        static {
           
            a=3;
            //System.out.println(a);
        }
        
        static int a = 1;
    	String b = "ff";
    	
    
        
    
    	public static void main (String[] args) throws java.lang.Exception
    	{
    		System.out.println("hi");
    		new test();
    		
    	}
    	
    
    }
    

      这样的代码有没语法错误呢?  实际上是没有的。可能有人认为是不行的,变量定义在代码块赋值后面,先赋值了。既然这样是对的,那么看下面这段代码对不对呢。

    class test  
    {
        static {
           
            a=3;
            System.out.println(a);
        }
        
        static int a = 1;
    	String b = "ff";
    	
    
        
    
    	public static void main (String[] args) throws java.lang.Exception
    	{
    		System.out.println("hi");
    		new test();
    		
    	}
    	
    
    }
    

      在静态代码块中有一条输出语句,应该有挺多人看了上面的例子以为这段代码的语法是正确的吧。其实System.out.println(a);这段代码是有错误的。

    a=3;是赋值

    System.out.println(a);是调用   两个是不一样概念的。

    为什么错呢?这个是编译期异常。遵循一个先定义后使用的原则。不过能赋值这里就不太能够理解了。难道是先加载类的结构信息,构造函数,方法,属性等。即使变量定义在最后一行,还是可以在第一行进行赋值。

  • 相关阅读:
    MySQL数据类型
    MySQL体系结构
    数据库MySQL——安装
    MySQL安装-windows安装
    vc++木马源码免杀一些常用方法
    222
    11
    metasploit(MSF)渗透平台命令大全
    Oracle数据库提权(dba权限执行系统命令)
    Python之random模块和time模块
  • 原文地址:https://www.cnblogs.com/hjy9420/p/4988832.html
Copyright © 2011-2022 走看看