他们执行顺序为: 静态代码块》普通代码块》构造方法》静态成员方法》普通成员方法之前就说了静态代码块是自动执行的,也就是程序已启动就加载了所以静态代码块是最先执行的,二非静态代码块与静态代码块都是在JVM加载时启动,都比构造方法先执行。而静态方法要比实例方法效率更高,静态方法是在类声明的时候就加载到内存里,实例方法需要通过new关键词创建对象调用。而执行到new关键字时会首
一.java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法
# Java静态方法在方法区加载的实现过程
## 1. 流程表格
| 步骤 | 操作 |
| ---- | ---- |
| 1 | 编写java源文件,包含静态方法的定义 |
| 2 | 编译java源文件生成.class字节码文件 |
| 3 | 类加载器加载.class文件到方法区 |
| 4 | 静态方法在方法区中被加载并执行 |
## 2. 详细步骤
### 步骤一:编写java
最近心情不大好,没心思继续深挖SpringMVC,所以那个坑今天暂时不填,找点Java内存相关的内容随便看看写写,只是写写自己的理解,有不正确或不准确的地方请见谅. 一直以来,对于Java,或者说JVM的内存认识,都是零零碎碎的,这次正好借这个机会给自己整理一下.Java内存区域在理解JMM前,我们需要先了解一下Java内存区域的划分:方法区(Method Area): 方法区又叫静态区,静态
转载
2023-12-15 20:54:58
48阅读
java 堆、栈、方法区堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 3、new出来的对象,有初始值。栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在
转载
2023-10-19 11:49:33
16阅读
http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html 总结:对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行
转载
精选
2016-01-29 16:28:25
561阅读
静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。//如果类中包含多个静态代码块,那么将按照”先定义的代码先执行,后定义的代码后执行”。 //注意:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。构造代码块直接在类中定义且没有加static关键字的代码块
转载
2023-11-09 11:10:00
173阅读
1、方法区(Method Area),又称永久代(Permanent Generation),又称非堆区(Non-Heap space)方法区是被所有线程共享。 所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。 简单说,所有定义的方法的信息都保存在该区域,此区属于共享区间。静态变量、常量、类信息(构造方法/接口定义) 、运行时常量池存在方法区中 。 但是实例变量 存在堆内存中
转载
2023-06-18 16:42:23
74阅读
1、方法区栈、堆、方法区的交互关系:方法区:《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行缩。”但对于HotspotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看作是一块独立于Java堆的内存空间。方法区(Method Area)与Java堆一样,是各个线程共享的内存区
# 如何在Java静态代码块内调用静态方法
## 引言
作为一名经验丰富的开发者,我将帮助你解决一个关于Java中静态代码块如何调用静态方法的问题。在本文中,我将详细介绍整个流程,并为你提供详细的代码示例和解释。
## 流程图
```mermaid
flowchart TD
A(定义静态方法) --> B(定义静态代码块)
B --> C(调用静态方法)
```
## 步骤详
class ccc1 { static { System.out.println("ccc1 1"); } public ccc1() { System.out.println("ccc1 2"); } { System.out.println("ccc1 3"); } } public class
转载
2017-06-23 20:21:00
340阅读
java 静态代码块 静态方法区别
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的
转载
精选
2008-05-28 13:40:40
3454阅读
1、总结如下:1、Java中静态变量只能在类主体中定义,不能在方法中定义。2、静态变量属于类所有而不属于方法。3、静态块:用static申明,JVM加载类时执行,仅执行一次。4、构造块:类中直接用{ }定义,每次创建对象时执行5、执行顺序优先级:静态代码块 > main() > 构造代码块 > 构造方法6、类的加载顺序父类静态对象和静态代码块子类静态对象和静态代码块父类非静态对象
转载
2023-05-26 21:09:14
125阅读
先引入一份代码:public class A{
public A(){
System.out.println("构造方法中a=30");
a=30;
}
{
System.out.println("构造代码块1中a=40");
a=40;
}
int a=init();
{
System.out.print
一,静态类二,静态方法 [访问权限修饰符] static [返回值类型] 方法名([参数列表]){ 语句序列 } 在外部调用静态方法时,可以使用“类名.方法名”的方式,也可以使用“对象名.方法名”的
转载
2023-10-11 15:51:32
33阅读
直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。注意:1 静态代码块不能存在于
转载
2023-12-12 20:14:04
45阅读
(一)java 静态代码块 静态方法区别 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口 两者的区别就是:静态代码块是自动执行的;
转载
2023-12-20 09:24:11
27阅读
# 理解 Java 非静态方法在元数据区的实现
在 Java 中,我们的代码在运行时会经历多个阶段,其中最重要的一个阶段就是将 Java 类加载到内存中。这个过程涉及到元数据区的使用,而非静态方法在这个过程中扮演着重要的角色。对于初学者来说,理解这些概念可能会有点困难,下面我们将有步骤地解释这一过程,并通过代码示例来演示。
## 流程概述
首先,我们来看看整个流程是如何进行的,特别是如何涉及
静态代码块,构造代码块,构造方法的区别1.普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”普通代码块的结构:{ 普通代码块 } 2.静态代码块:(1)静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时
转载
2023-11-27 22:34:11
53阅读
static修饰的变量称为静态变量,static修饰的方法称为静态方法。静态变量and静态方法处于静态区,对于同一个类创建的多个对象来说是共享的。静态变量and静态方法对于每个对象的调用结果都是一样的,无论是改变前或者改变后。成员变量和成员方法处于非静态区,对于同一个类创建的多个对象来说是私有的。静态变量的好处:多个对象公用一个变量,节约堆内存。举例说明以上知识点:class Test {
p