「java静态编译」java静态编译和动态编译 csdn

博主:adminadmin 2022-12-28 02:51:07 81

本篇文章给大家谈谈java静态编译,以及java静态编译和动态编译 csdn对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Eclipse编译java时,函数不能声明为“静态”;只能在静态类型或顶级类型中才能声明静态

非静态的内部类里面不能定义静态方法,而你的Calculator类在main方法里,不能定义为静态类

而且,即使可以定义,你的程序也没有任何输出,下面的那个public void main不是程序的主方法,你会发现根本没有Run这个选项

如果需要使用静态方法,按下面的方式定义:

public class ww{

static class Calculator {

public static double calculateAverage(int[] numbers) {

int sum = 0;

for (int i = 0; i numbers.length; i++)

sum += numbers[i];

return sum / (double) numbers.length;

}

public static int findMaximum(int[] numbers) {

int max = numbers[0];

for (int i = 0; i numbers.length; i++)

if (numbers[i] max)

max = numbers[i];

return max;

}

}

static class da {

public static void main(String args[]) {

int numbers[] = { 23, 54, 62, 53, 12, 25, 46, 2, 5, 6, 25, 256 };

System.out.println("The average is" + Calculator.calculateAverage(numbers));

System.out.println("The max is" + Calculator.findMaximum(numbers));

}

}

}

java中的全局变量和静态变量是在编译时分配内存还是在加载时分配内存?

全局变量是在创建对象的时候分配内存的 创建对象过程为

分配空间。

递归的创建父类对象。

初始化成员变量。

调用构造方法创建一个对象。

静态变量是在类加载的时候分配空间的,静态变量和对象没有关系 是在JVM第一次读到一个类的时候加载信息的过程中分配空间的 加载过程为

1 .加载父类(如果父类已经加载过,则不在加载)。

2.初始化静态属性 。

3 .按顺序的初始化静态代码块   初始化的前提就是分配空间 。

而且静态变量在以后的创建对象的时候不在初始化 所以一般用静态来保存共享信息

静态变量存在于方法区中,成员变量存在于堆内存中,成员变量所属于对象JAVA成员变量和静态变量的区别,成员变量随着对象创建而存在。随着对象被回收而消失。静态变量随着类的加载而存在。

静态变量是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。

对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。

而在以Pascal为代表的许多程序语言中,所有局部变量都由系统自动分配存储空间,而所有全局变量的存储空间则以静态分配的方式获取,因此由于实际上“局部变量”和“全局变量”这两个术语已足以涵盖所有的情况,在这些程序语言中通常不使用“静态变量”这一术语,而直接以“全局变量”代之。

在这些程序语言中,静态变量就是全局变量,而即使在有明确区分全局和静态变量的程序语言中,在编译后的代码里二者也以相同的方式获取存储空间。而今术语“静态变量”的概念则主要基于C族语言的“static”的定义。

静态变量也可以用于存储常数。具体来说,静态变量可用const,constant或final等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区。

偶是一名java初学者,请问一下,如何理解静态方法和动态方法,并且如何使用?

方法中 用static修饰的方法 称为静态方法 java的工作机制简单说 我们所编写的代码 计算机是必能识别的 要通过java虚拟机的变异 转换成机器码 然后交给计算机分配内存 执行。 静态方法在编译以后 会在内存中 划出空间来存放此实例 所以 不需要实例化该类 就可以调用静态方法。

动态方法,指的是 动态创建,编译过后 没有预留给它内存 只有在创建实例的时候 才会有实例存在 在没有创建实例之前 是不能调用的

下面是例子

public static void say()

{

System.out.println("此处是静态方法");

}

public void sayhello()

{

System.out.println("此处是动态方法");

}

public static void main(String[] args) {

//静态方法 不需要实例化 只需要类名就可以

Method.say();

//动态方法 需要实例化才能调用方法

new Method().sayhello();

}

在静态方法中 是不能直接调用动态方法的 因为该实例不存在

在动态方法中 是可以直接调用静态方法的 因为在编译过程中 已经创建了实例

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 静态类和非静态类的区别

静态类和非静态类的主要区别:

主要区别在于静态类不能实例化,静态类编译器能够执行检查确保不是偶然的添加实例成员,C#编译器会自动把它标记为sealed,静态类中不能创建非静态的方法,即静态方法中只能创建静态方法,但在非静态类中可以调用静态方法。

静态类的主要特性:

1:仅包含静态成员。

2:无法实例化。

3:是密封的。

4:不能包含实例构造函数。

5:非静态类可以包含静态的方法、字段、属性或事件;

6:静态方法和属性不能访问其包含类型中的非静态字段和事件

7:静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员;

8:C# 不支持静态局部变量(在方法内部定义静态变量)。

非静态类在使用时必须要实例化,每次使用时都要进行实例化,一般情况下使用比较频繁的类,可以使用静态类,比如LogClass,ConfigClass等等。

java静态编译的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java静态编译和动态编译 csdn、java静态编译的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。