
正文
java静态代码不是,java静态代码块和静态方法执行顺序
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java里不是说静态方法静态代码块静态变量里不允许用类型形参吗,为什么...
建议还是全局把。 静态局部变量时不可取的。他只是把变量定义在全局存储区。但是作用域还是本身这个函数。。 只能用全局或者参数方法。 全局我不说了。参数方法如下。
所为程序,是接顺序一句一句的执行。所以,我们来看这段代码。main方法,程序的入口,拥有a,b两个局部变量。a,b变量值分别为10,20。
而静态方法不需要构件对象,所以他在调用方法是,根本没有判断参数的约束条件,所以虚拟机压根就不希望这种事情发生,所以在编译时就报错了。
与此完全一致的是,类的静态变量和方法也在所有的实例间共享,所以在静态方法,静态初始化或者静态变量的声明和初始化中不允许使用类型形参。
静态方法相当于 长辈,非静态方法(变量)相当于晚辈。静态方法不能调用非静态变量是因为,当长辈出生的时候,他不知道会有晚辈。而晚辈出生的时候他是知道有个长辈的。
super.data是不可用的。原因:从根本上说,静态变量不管类是否实例化都会存在,而实例变量只有类实例化了 才存在。直接调用静态方法时并不确定实例变量是否存在。
相关问答
Q1: java中静态方法不是说不能存在非静态变量的吗?那为什么这样写又可以...
1、因为第一个你是在静态方法中使用了非静态的属性!记住:在java的静态方法中,不能使用非静态的属性和方法!静态变量属于类,不依赖于对象的加载而是依赖于类的加载。
2、首先需要说明的是:你的问题是有错误的。问题应该是:JAVA类中为什么 非静态成员方法 可以直接使用 非静态变量 而静态仿法(如:main方法)就需要创建个对象来调用才可以使用非静态变量呢?因为静态方法只能使用静态变量。
3、不可以的 JAVA中的对应关系为:静态方法中 只可以访问静态变量,不可以访问非静态变量 如上,会标红报错。非静态方法中,没有限制。
4、因为,静态就意味着首先分配内存。如果作为普通的静态方法,自然是不能引用其他的非静态方法的,原因很简单,其他的非静态方法在内存中是没有的,那你怎么引用?而静态方法能引用其他静态方法的原理同上也差不多了。
5、非静态的方法、变量可以操作(包含引用、修改其值,方法调用等)静态的方法、变量;反之,静态的方法、变量则不能操作非静态的方法、变量,静态的只能操作静态的(这么一说,好像静态的很吃亏哦)。
6、这就是你老师说的,静态方法先进来,非静态的后进来(new 了之后再进来)。
Q2: java的一个类,不加static修饰,默认是静态的吗
1、一些中文资料或者中文翻译资料上写的类方法和静态方法指的都是用static修饰的方法,因此是静态方法,而称之为类方法是因为调用该方法仅需要类名点方法名,比如math.sqrt()。
2、可以加,也可以不加,看你的程序需求,如果需要全局变量就加public 修饰符,如果需要静态变量就加static修饰符,如果只在本类里面使用就加private修饰符。
3、普通类是不能声明为static的,想要使用类里的静态方法或变量,只需要将方法或变量声明为static即可,即使类不是static,也可以直接调用其中的方法或变量,所以静态类并没有什么意义。
4、Java中可以有静态内部类也可没有。静态内部类是是要加static的。外部类可以直接 用 . 来调用静态内部类 方法和属性,这样会非常方便和便捷。但是静态内部类,可指向不了外部的,所以你访问不了外部的属性和方法。
5、不用是静态的,非静态类中可以有静态方法,但静态类中只能有静态方法。
Q3: java中static作用详解
1、static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。
2、static是静态修饰符,static可以用来区分成员变量、方法是属于类本身还是属于类实例化后的对象。有static修饰的成员属于类本身,没有static修饰的成员属于类的实例。
3、static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。
4、Java 中也支持用 static 关键字修饰的成员方法,即静态成员方法。与此相对应的没有用 static 修饰的成员方法称为非静态成员方法。与静态成员变量类似,静态成员方法是类方法,它属于类本身而不属于某个对象。
5、作用于导包上时:用import static代替import静态导入包是JDK5中的新特性。
Q4: java,静态方法为什么不能调用类成员?
1、从层级上看,静态方法属于类级别,成员变量属于对象级别。同时静态方法也先于构造函数执行,内存也没给类成员分配空间,说白就是都不存在,你静态方法调用一个不存在的变量肯定不行的呀。
2、首先内部的静态类他是不能直接被实例化的。你必须实例化外部类才能实例化它。而外部类不是默认加载的,他只有在手动实例化之后才有内存分配。这时问题出现了。
3、因为你还没有给这个对象开辟空间(用new关键字开辟空间)。
4、静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。而对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问非静态方法。
Q5: Java构造函数,构造代码块和静态代码块的区别
直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。静态代码块:在java中使用static关键字声明的代码块。
构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。
静态代码块 只执行一次,比如,当你想要创建10个对象时,当创建第一个对象时,执行一次,然后当你继续创建剩余的对象时,这个静态代码块就不会被执行了。
关于java静态代码不是和java静态代码块和静态方法执行顺序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








