When and where are strings initialized / stored in Java source code?

This is the source code I have

public class Koray {
    public static void main(String [] args) {
            System.out.println("This is a sample program.");
    } 
}

When I compile this, I get the bytecode When I look at the bytecode with the hexadecimal viewer, I see a part:

19 54 68 69 73 20 69 73 20 61 20 73 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 2E

This can be read as

This is a sample program.

If a byte is interpreted as a character

When I do

javap -c Koray.class

After splitting this class, I see:

Compiled from "Koray.java"
public class Koray {
  public Koray();
    Code:
       0: aload_0       
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return        

  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String This is a sample program.
       5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: bipush        10
      10: istore_1      
      11: return        
}

My question is, where do I see this string in the disassembled text? I just saw it in the comments

Solution

See LDC instruction? It loads a constant from the runtime constant pool This is where your string is stored

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>