java中类加载(加载,验证,准备,解析,初始化)和对象内存分配这两者的顺序是怎样的?

java中类加载(加载,验证,准备,解析,初始化)和对象内存分配这两者的顺序是怎样的?(以下盲猜)
1,先分配对象内存,再进行类加载,假设已经加载过了,直接执行到初始化那一步。
2,先进行类加载,再分配对象内存;
3,依次:加载,验证,准备,解析,(猜测)分配对象内存,初始化
4,其他

类还没加载好,哪里会有对象呢,
对象分配内存空间肯定是要等到类加载之后进行,JVM会根据加载好的类,在堆中创建一个对象

加载、验证、准备、解析、初始化,对象内存分配、初始化

先加载,再分配对象内存,加载包含 加载,验证,准备,解析,初始化。这里加载的是类文件,之后才会去分配内存创建对象

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/217008
  • 这篇博客你也可以参考下:Java课后作业:采用电话传递数据,是四位的整数,传递过程中是加密的,加密如下:每位数字都加上5,然后用和除以10的余数代替该数字,第一位和第四位交换,第二位和第三位交换位置:
  • 除此之外, 这篇博客: 用java实现4种加密解密算法(包括:换位加密解密、替换加密解密、位加密解密、一次一密)中的 案例3:位加密解密算法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    
    
    public class demo {
        static char[] bitcode(char[] str, char n)                //位加密解密算法
        {
            int i, len;
            char[] wen;
    
            len = str.length;
            if ((wen = new char[len + 1]) == null) {
                System.out.print("申请内存失败!\n");
                System.exit(1);
            }
            for (i = 0; i < len; i++) {
                wen[i] = (char) (str[i] ^ n);                    //异或运算
            }
            wen[len] = '\0';
            return wen;
        }
    
        public static void main(String[] args) throws IOException {
            int i;
            char ch;
            char[] srcstr = new char[100];
            char[] miwen;
            String go;
    
            System.out.print("位加密解密算法演示!\n");
    
            do {
                System.out.print("\n请先输入替换加密解密算法中的密钥:");
                Scanner input = new Scanner(System.in);
                ch = input.next().charAt(0);                        //密钥
                System.out.print("请输入明文字符串:");
    
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
                String str = bufferedReader.readLine();
                srcstr = str.toCharArray();                //明文字符串
    
                System.out.print("输入的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(srcstr[i]);
                }
    
                miwen = bitcode(srcstr, ch);                //加密
                System.out.print("\n加密后的密文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
                miwen = bitcode(miwen, ch);                //解密
                System.out.print("\n解密出的明文为:");
                for (i = 0; i < srcstr.length; i++) {
                    System.out.print(miwen[i]);
                }
    
                System.out.print("\n继续执行(y/n)?");
                go = input.next();
            } while (go.equalsIgnoreCase("y"));
            System.out.println("演示结束!");
    
        }
    
    }
    
    
    

    执行结果如下:
    在这里插入图片描述