「java非静态代码是什么」java中静态和非静态

博主:adminadmin 2023-03-18 22:28:09 404

今天给各位分享java非静态代码是什么的知识,其中也会对java中静态和非静态进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA 静态代码块和非静态代码块 作用?

静态代码块是在类加载进jvm时类实例化之前运行的,比如业务场景有这种类初始化时需要加载许多资源,在运行实例化类的时候会影响程序响应时间,所以就在项目启动的时候加载类的时候就初始化了.非静态代码块是在类实例化的时候才会运行,所以静态代码块的执行一定在非静态代码块执行之前执行.至于你上面的第一个问题要看具体业务场景和需求,赋值都可以实现.第二个问题,可能是写那句代码的人要看程序加载后有没有执行那部分代码而加上的,知道了静态代码块和非静态代码块的本质区别,为什么那么做和目的你就应该知道了.

java 中什么叫做静态和非静态。 还有什么叫做静态初始化和动态初始化。

静态就是属于类的,非静态就是不属于类的,属于对象的

静态初始化和动态初始化是创建数组的概念。

静态初始化:创建数组时,程序员显式地为数组中的元素赋初值,你不指定数组长度

动态初始化:创建数组时,由系统默认地为数组中的元素赋初值,你指定数组长度

比如:静态初始化就是

int[]

a;

a

=

{1,2,3};

动态初始化:

int[]

a;

a

=

new

int[3];

java 中静态代码和非静态代码块的区别!

相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,

一般在代码块中对一些static变量进行赋值。

不同点:静态代码块在非静态代码块之前执行(静态代码块—非静态代码块—构造方法)。

静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new

一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。

例:

//普通类

public class PuTong {

public PuTong(){

System.out.print("默认构造方法!--");

}

//非静态代码块

{

System.out.print("非静态代码块!--");

}

//静态代码块

static{

System.out.print("静态代码块!--");

}

public static void test(){

{

System.out.println("普通方法中的代码块!");

}

}

}

//测试类

public class TestClass {

/**

* 区别两次new静态与非静态代码块执行情况

*/

public static void main(String[] args) {

PuTong c1 = new PuTong();

c1.test();

PuTong c2 = new PuTong();

c2.test();

}

}

/*

运行输出结果是:

静态代码块!--非静态代码块!--默认构造方法!--普通方法中的代码块!

非静态代码块!--默认构造方法!--普通方法中的代码块!

*/

java静态类和非静态类的区别?

一、非静态内部类:

1、变量和方法不能声明为静态的。(类的编译顺序:外部类–静态方法或属性–内部类,如果内部类声明为静态的,造成编译顺序冲突。个人理解)

2、实例化的时候需要依附在外部类上面。比如:B是A的非静态内部类,实例化B,则:A.B b = new A().new B();

3、内部类可以引用外部类的静态或者非静态属性或者方法。

二、静态内部类:

1、属性和方法可以声明为静态的或者非静态的。

2、实例化静态内部类:比如:B是A的静态内部类,A.B b = new A.B();

3、内部类只能引用外部类的静态的属性或者方法。

4、如果属性或者方法声明为静态的,那么可以直接通过类名直接使用。比如B是A的静态内部类,b()是B中的一个静态属性,则可以:A.B.b();

区别:

(1)内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。

(2)非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。

(3)一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。

在java中,什么叫静态,什么叫非静态

由static 关键修饰的内容 为静态 ; 反之 ,为非静态

静态变量 属于 类 ,为所有对象共有

分静态变量 属于 对象 , 每个对象都可以有且属性值可以各异

静态变量优于非静态变量加载,故 静态代码块中不能引用非静态成员,会报错

什么是Java语言中所说的非静态方法,它和静态方法有何区别?

非静态方法是相对于静态方法来说的。静态方法使用static关键字来标示,非静态方法没有此关键字。

他们之间最大的区别在于它们生命周期的不同,静态方法属于全局方法,当静态方法第一次被访问的时候,就将常驻内存直到整个系统被销毁;而非静态方法则与类有关,只有该方法所在的类被实例化之后,该方法才能被访问,类被销毁的同时方法也被销毁。生命周期的不同决定了它们的调用方式的不同,静态方法使用(类名.方法名)来调用,而非静态方法则需要(new类名().方法名)来调用。

同时与之相关的就是,静态方法不能调用非静态方法和属性。在了解了它们生命周期的不同后,这一点也比较好理解,因为静态方法生命周期比非静态方法和属性长,当调用非静态方法和属性时就会产生非静态方法和属性已经被销毁的情况导致程序出错。

java非静态代码是什么的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中静态和非静态、java非静态代码是什么的信息别忘了在本站进行查找喔。