{"id":390298,"date":"2024-06-29T09:09:27","date_gmt":"2024-06-29T09:09:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=390298"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=390298","title":{"rendered":"<span>\u041e\u0441\u043d\u043e\u0432\u044b Java Bytecode<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438 \u043a\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e<\/h2>\n<p><em>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u043e\u0439 \u0438 \u043e\u0431\u044a\u0435\u043c\u043d\u043e\u0439<\/em><\/p>\n<p>\u041a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438, \u043d\u0430 habr \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e bytecode (<a href=\"https:\/\/habr.com\/ru\/post\/111456\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/264919\/\" rel=\"noopener noreferrer nofollow\">\u0434\u0432\u0430<\/a>), \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438, \u0438 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f), \u043c\u043d\u043e\u0433\u0438\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b <em>\u0442\u043e\u043b\u044c\u043a\u043e<\/em> \u043e\u0441\u043d\u043e\u0432\u044b Java Bytecode. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0440\u044f\u0434 \u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>. <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043c\u043d\u043e\u0433\u0438\u0435 \u0442\u0435\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0440\u0435\u0439\u043c\u044b, \u043c\u043d\u043e\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b), \u0438\u043d\u0430\u0447\u0435 \u043e\u043d\u0430 \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435<\/p>\n<\/p>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e Bytecode<\/h2>\n<p>\u0422\u0435\u043c\u0430 bytecode \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043a\u0443\u0447\u043d\u0430\u044f \u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0422\u0430\u043a \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e \u043e\u0441\u043d\u043e\u0432\u044b bytecode:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/bc8\/d57\/54a\/bc8d5754a255d2aac8567cf9c0e6f4b9.jpeg\" width=\"194\" height=\"259\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bc8\/d57\/54a\/bc8d5754a255d2aac8567cf9c0e6f4b9.jpeg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<ul>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Java Machine \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u0445\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 bytecode \u0438 \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0441\u043b\u043e\u043c\u0430\u0442\u044c (\u043f\u0440\u0438\u0432\u0435\u0442, Lombok)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e \ud83d\ude42<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u0430\u043a \u0447\u0438\u0442\u0430\u0442\u044c .class \u0444\u0430\u0439\u043b<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c .class \u0444\u0430\u0439\u043b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f<\/p>\n<p><code>javac File.java<\/code><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f .class \u0444\u0430\u0439\u043b. \u0424\u043e\u0440\u043c\u0430\u0442 class \u0444\u0430\u0439\u043b\u0430 &#8212; \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439, \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b JVM. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u043e &#8212; 1 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430 1 \u0444\u0430\u0439\u043b. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 class \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0439 class \u0444\u0430\u0439\u043b \u0432 hex \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 &#171;\u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u0430\u0439\u0442&#187; &#8212; CAFEBABE, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430. <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439<\/p>\n<p><code>javap File<\/code><\/p>\n<p>javap \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 <code>java.lang.Object<\/code><\/p>\n<h4>\u0411\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h4>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c, \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u0438 \u043f\u043e\u043b\u044f\u043c (\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f)<\/p>\n<p><code>javap java.lang.Object<\/code><\/p>\n<pre><code class=\"java\">Compiled from \"Object.java\" public class java.lang.Object {   public java.lang.Object();   public final native java.lang.Class&lt;?> getClass();   public native int hashCode();   public boolean equals(java.lang.Object);   protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;   public java.lang.String toString();   public final native void notify();   public final native void notifyAll();   public final native void wait(long) throws java.lang.InterruptedException;   public final void wait(long, int) throws java.lang.InterruptedException;   public final void wait() throws java.lang.InterruptedException;   protected void finalize() throws java.lang.Throwable;   static {}; }<\/code><\/pre>\n<h2>-p<\/h2>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b<\/p>\n<p><code>javap -p java.lang.Object<\/code><\/p>\n<pre><code class=\"java\">Compiled from \"Object.java\" public class java.lang.Object {   public java.lang.Object();   private static native void registerNatives();   public final native java.lang.Class&lt;?> getClass();   public native int hashCode();   public boolean equals(java.lang.Object);   protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;   public java.lang.String toString();   public final native void notify();   public final native void notifyAll();   public final native void wait(long) throws java.lang.InterruptedException;   public final void wait(long, int) throws java.lang.InterruptedException;   public final void wait() throws java.lang.InterruptedException;   protected void finalize() throws java.lang.Throwable;   static {}; }<\/code><\/pre>\n<h3>-v<\/h3>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (verbose), \u0442\u0430\u043a\u0443\u044e, \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0442.\u0434.<\/p>\n<p><code>javap -v java.lang.Object<\/code><\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">Classfile jar:file{\u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443}   Last modified 15.12.2018; size 1497 bytes   MD5 checksum 074ebc688a81170b8740f1158648a3c7   Compiled from \"Object.java\" public class java.lang.Object   minor version: 0   major version: 52   flags: ACC_PUBLIC, ACC_SUPER Constant pool:    #1 = Integer            999999    #2 = String             #16            \/\/ @    #3 = String             #38            \/\/ nanosecond timeout value out of range    #4 = String             #42            \/\/ timeout value is negative    #5 = Utf8               ()I    #6 = Utf8               ()Ljava\/lang\/Object;    #7 = Utf8               ()Ljava\/lang\/String;    #8 = Utf8               ()V    #9 = Utf8               (I)Ljava\/lang\/String;   #10 = Utf8               (J)V   #11 = Utf8               (JI)V   #12 = Utf8               (Ljava\/lang\/Object;)Z   #13 = Utf8               (Ljava\/lang\/String;)V   #14 = Utf8               &lt;clinit>   #15 = Utf8               &lt;init>   #16 = Utf8               @   #17 = Utf8               Code   #18 = Utf8               Exceptions   #19 = Utf8               LineNumberTable   #20 = Utf8               Signature   #21 = Utf8               SourceFile   #22 = Utf8               StackMapTable   #23 = Utf8               append   #24 = Utf8               clone   #25 = Utf8               equals   #26 = Utf8               finalize   #27 = Utf8               getClass   #28 = Utf8               getName   #29 = Utf8               hashCode   #30 = Utf8               java\/lang\/Class   #31 = Utf8               java\/lang\/CloneNotSupportedException   #32 = Utf8               java\/lang\/IllegalArgumentException   #33 = Utf8               java\/lang\/Integer   #34 = Utf8               java\/lang\/InterruptedException   #35 = Utf8               java\/lang\/Object   #36 = Utf8               java\/lang\/StringBuilder   #37 = Utf8               java\/lang\/Throwable   #38 = Utf8               nanosecond timeout value out of range   #39 = Utf8               notify   #40 = Utf8               notifyAll   #41 = Utf8               registerNatives   #42 = Utf8               timeout value is negative   #43 = Utf8               toHexString   #44 = Utf8               toString   #45 = Utf8               wait   #46 = Class              #30            \/\/ java\/lang\/Class   #47 = Class              #31            \/\/ java\/lang\/CloneNotSupportedException   #48 = Class              #32            \/\/ java\/lang\/IllegalArgumentException   #49 = Class              #33            \/\/ java\/lang\/Integer   #50 = Class              #34            \/\/ java\/lang\/InterruptedException   #51 = Class              #35            \/\/ java\/lang\/Object   #52 = Class              #36            \/\/ java\/lang\/StringBuilder   #53 = Class              #37            \/\/ java\/lang\/Throwable   #54 = Utf8               ()Ljava\/lang\/Class;   #55 = Utf8               ()Ljava\/lang\/Class&lt;*>;   #56 = Utf8               (Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;   #57 = NameAndType        #29:#5         \/\/ hashCode:()I   #58 = NameAndType        #15:#8         \/\/ \"&lt;init>\":()V   #59 = NameAndType        #41:#8         \/\/ registerNatives:()V   #60 = NameAndType        #45:#10        \/\/ wait:(J)V   #61 = NameAndType        #27:#54        \/\/ getClass:()Ljava\/lang\/Class;   #62 = NameAndType        #28:#7         \/\/ getName:()Ljava\/lang\/String;   #63 = NameAndType        #44:#7         \/\/ toString:()Ljava\/lang\/String;   #64 = NameAndType        #43:#9         \/\/ toHexString:(I)Ljava\/lang\/String;   #65 = NameAndType        #15:#13        \/\/ \"&lt;init>\":(Ljava\/lang\/String;)V   #66 = NameAndType        #23:#56        \/\/ append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;   #67 = Methodref          #46.#62        \/\/ java\/lang\/Class.getName:()Ljava\/lang\/String;   #68 = Methodref          #48.#65        \/\/ java\/lang\/IllegalArgumentException.\"&lt;init>\":(Ljava\/lang\/String;)V   #69 = Methodref          #49.#64        \/\/ java\/lang\/Integer.toHexString:(I)Ljava\/lang\/String;   #70 = Methodref          #51.#57        \/\/ java\/lang\/Object.hashCode:()I   #71 = Methodref          #51.#59        \/\/ java\/lang\/Object.registerNatives:()V   #72 = Methodref          #51.#60        \/\/ java\/lang\/Object.wait:(J)V   #73 = Methodref          #51.#61        \/\/ java\/lang\/Object.getClass:()Ljava\/lang\/Class;   #74 = Methodref          #52.#58        \/\/ java\/lang\/StringBuilder.\"&lt;init>\":()V   #75 = Methodref          #52.#63        \/\/ java\/lang\/StringBuilder.toString:()Ljava\/lang\/String;   #76 = Methodref          #52.#66        \/\/ java\/lang\/StringBuilder.append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;   #77 = Utf8               Object.java {   public java.lang.Object();     descriptor: ()V     flags: ACC_PUBLIC     Code:       stack=0, locals=1, args_size=1          0: return       LineNumberTable:         line 37: 0    public final native java.lang.Class&lt;?> getClass();     descriptor: ()Ljava\/lang\/Class;     flags: ACC_PUBLIC, ACC_FINAL, ACC_NATIVE     Signature: #55                          \/\/ ()Ljava\/lang\/Class&lt;*>;    public native int hashCode();     descriptor: ()I     flags: ACC_PUBLIC, ACC_NATIVE    public boolean equals(java.lang.Object);     descriptor: (Ljava\/lang\/Object;)Z     flags: ACC_PUBLIC     Code:       stack=2, locals=2, args_size=2          0: aload_0          1: aload_1          2: if_acmpne     9          5: iconst_1          6: goto          10          9: iconst_0         10: ireturn       StackMapTable: number_of_entries = 2         frame_type = 9 \/* same *\/         frame_type = 64 \/* same_locals_1_stack_item *\/           stack = [ int ]       LineNumberTable:         line 149: 0    protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;     descriptor: ()Ljava\/lang\/Object;     flags: ACC_PROTECTED, ACC_NATIVE     Exceptions:       throws java.lang.CloneNotSupportedException    public java.lang.String toString();     descriptor: ()Ljava\/lang\/String;     flags: ACC_PUBLIC     Code:       stack=2, locals=1, args_size=1          0: new           #52                 \/\/ class java\/lang\/StringBuilder          3: dup          4: invokespecial #74                 \/\/ Method java\/lang\/StringBuilder.\"&lt;init>\":()V          7: aload_0          8: invokevirtual #73                 \/\/ Method getClass:()Ljava\/lang\/Class;         11: invokevirtual #67                 \/\/ Method java\/lang\/Class.getName:()Ljava\/lang\/String;         14: invokevirtual #76                 \/\/ Method java\/lang\/StringBuilder.append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;         17: ldc           #2                  \/\/ String @         19: invokevirtual #76                 \/\/ Method java\/lang\/StringBuilder.append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;         22: aload_0         23: invokevirtual #70                 \/\/ Method hashCode:()I         26: invokestatic  #69                 \/\/ Method java\/lang\/Integer.toHexString:(I)Ljava\/lang\/String;         29: invokevirtual #76                 \/\/ Method java\/lang\/StringBuilder.append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;         32: invokevirtual #75                 \/\/ Method java\/lang\/StringBuilder.toString:()Ljava\/lang\/String;         35: areturn       LineNumberTable:         line 236: 0    public final native void notify();     descriptor: ()V     flags: ACC_PUBLIC, ACC_FINAL, ACC_NATIVE    public final native void notifyAll();     descriptor: ()V     flags: ACC_PUBLIC, ACC_FINAL, ACC_NATIVE    public final native void wait(long) throws java.lang.InterruptedException;     descriptor: (J)V     flags: ACC_PUBLIC, ACC_FINAL, ACC_NATIVE     Exceptions:       throws java.lang.InterruptedException    public final void wait(long, int) throws java.lang.InterruptedException;     descriptor: (JI)V     flags: ACC_PUBLIC, ACC_FINAL     Code:       stack=4, locals=4, args_size=3          0: lload_1          1: lconst_0          2: lcmp          3: ifge          16          6: new           #48                 \/\/ class java\/lang\/IllegalArgumentException          9: dup         10: ldc           #4                  \/\/ String timeout value is negative         12: invokespecial #68                 \/\/ Method java\/lang\/IllegalArgumentException.\"&lt;init>\":(Ljava\/lang\/String;)V         15: athrow         16: iload_3         17: iflt          26         20: iload_3         21: ldc           #1                  \/\/ int 999999         23: if_icmple     36         26: new           #48                 \/\/ class java\/lang\/IllegalArgumentException         29: dup         30: ldc           #3                  \/\/ String nanosecond timeout value out of range         32: invokespecial #68                 \/\/ Method java\/lang\/IllegalArgumentException.\"&lt;init>\":(Ljava\/lang\/String;)V         35: athrow         36: iload_3         37: ifle          44         40: lload_1         41: lconst_1         42: ladd         43: lstore_1         44: aload_0         45: lload_1         46: invokevirtual #72                 \/\/ Method wait:(J)V         49: return       StackMapTable: number_of_entries = 4         frame_type = 16 \/* same *\/         frame_type = 9 \/* same *\/         frame_type = 9 \/* same *\/         frame_type = 7 \/* same *\/       LineNumberTable:         line 447: 0         line 448: 6         line 451: 16         line 452: 26         line 456: 36         line 457: 40         line 460: 44         line 461: 49     Exceptions:       throws java.lang.InterruptedException    public final void wait() throws java.lang.InterruptedException;     descriptor: ()V     flags: ACC_PUBLIC, ACC_FINAL     Code:       stack=3, locals=1, args_size=1          0: aload_0          1: lconst_0          2: invokevirtual #72                 \/\/ Method wait:(J)V          5: return       LineNumberTable:         line 502: 0         line 503: 5     Exceptions:       throws java.lang.InterruptedException    protected void finalize() throws java.lang.Throwable;     descriptor: ()V     flags: ACC_PROTECTED     Code:       stack=0, locals=1, args_size=1          0: return       LineNumberTable:         line 555: 0     Exceptions:       throws java.lang.Throwable    static {};     descriptor: ()V     flags: ACC_STATIC     Code:       stack=0, locals=0, args_size=0          0: invokestatic  #71                 \/\/ Method registerNatives:()V          3: return       LineNumberTable:         line 41: 0         line 42: 3 } SourceFile: \"Object.java\" <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0412 IDEA \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/3c3\/61c\/f76\/3c361cf7673358cfcc15311ee14fe7c9.jpg\" alt=\"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043b\u044f Java\" title=\"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043b\u044f Java\" width=\"326\" height=\"185\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3c3\/61c\/f76\/3c361cf7673358cfcc15311ee14fe7c9.jpg\" data-blurred=\"true\"\/><figcaption>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043b\u044f Java<\/figcaption><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/0f0\/0e9\/1c3\/0f00e91c306349fd4b012e43b3d4fc0f.jpg\" alt=\"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043b\u044f Kotlin\" title=\"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043b\u044f Kotlin\" width=\"499\" height=\"525\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f0\/0e9\/1c3\/0f00e91c306349fd4b012e43b3d4fc0f.jpg\" data-blurred=\"true\"\/><figcaption>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043b\u044f Kotlin<\/figcaption><\/figure>\n<h2>\u0427\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 .class \u0444\u0430\u0439\u043b<\/h2>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 .class \u0444\u0430\u0439\u043b\u0430 (<a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se16\/html\/jvms-4.html\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a>):<\/p>\n<pre><code class=\"json\">ClassFile {     u4             magic;     u2             minor_version;     u2             major_version;     u2             constant_pool_count;     cp_info        constant_pool[constant_pool_count-1];     u2             access_flags;     u2             this_class;     u2             super_class;     u2             interfaces_count;     u2             interfaces[interfaces_count];     u2             fields_count;     field_info     fields[fields_count];     u2             methods_count;     method_info    methods[methods_count];     u2             attributes_count;     attribute_info attributes[attributes_count]; }<\/code><\/pre>\n<p><code>u1<\/code>,\u00a0<code>u2<\/code>, and\u00a0<code>u4<\/code>\u00a0 &#8212; \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u0435\u0439<\/p>\n<p><code>cp_info<\/code>, <code>field_info<\/code>, <code>method_info<\/code>, <code>attribute_info<\/code> &#8212; \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0438\u0436\u0435<\/p>\n<ul>\n<li>\n<p>magic &#8212; \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 (0xCAFEBABE), \u043c\u044b \u043e \u043d\u0435\u0439 \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438. <\/p>\n<\/li>\n<li>\n<p>minor_version, major_version &#8212;  \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 .class \u0444\u0430\u0439\u043b\u0430 (\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0438\u0436\u0435)<\/p>\n<\/li>\n<li>\n<p> constant_pool_count \u0438 constant_pool &#8212; \u0434\u043b\u0438\u043d\u0430 \u043f\u0443\u043b\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438 \u0441\u0430\u043c \u043f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 (\u00a0\u041f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 &#8212; \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u0438\u043c\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043f\u043e\u043b\u0435\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0434\u0435\u043b <code>Constant pool<\/code> \u043f\u0440\u0438 \u0432\u044b\u0432\u043e\u0434\u0435 javap -v)<\/p>\n<\/li>\n<li>\n<p>access_flags &#8212;  \u043d\u0430\u0431\u043e\u0440 \u0444\u043b\u0430\u0433\u043e\u0432 (public, abstract, enum \u0438 \u0442.\u0434.)<\/p>\n<\/li>\n<li>\n<p>this_class &#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441<\/p>\n<\/li>\n<li>\n<p>super_class &#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441<\/p>\n<\/li>\n<li>\n<p>interfaces_count \u0438 interfaces &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>fields_count \u0438 fields &#8212; \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u043f\u043e\u043b\u044f\u043c<\/p>\n<\/li>\n<li>\n<p>methods_count \u0438 methods &#8212; \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>attributes_count \u0438 attributes &#8212; \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c<\/p>\n<\/li>\n<\/ul>\n<h2>\u0412\u0435\u0440\u0441\u0438\u0438 class \u0444\u0430\u0439\u043b\u043e\u0432<\/h2>\n<p>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 jvm: <code>Exception in thread \"main\" java.lang.UnsupportedClassVersionError: ...   has been compiled by a more recent version of the Java Runtime (class file version 55.0),    this version of the Java Runtime only recognizes class file versions up to 52.0<\/code>. \u0417\u0434\u0435\u0441\u044c 55.0 \u0438 52.0 &#8212; \u0432\u0435\u0440\u0441\u0438\u0438 class \u0444\u0430\u0439\u043b\u043e\u0432. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 class \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u0430\u043a\u0430\u044f jvm \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0438\u0437 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se16\/html\/jvms-4.html\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>:<\/p>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"177\" width=\"177\">\n<p>\u0412\u0435\u0440\u0441\u0438\u044f <\/p>\n<p>Java SE<\/p>\n<\/th>\n<th data-colwidth=\"177\" width=\"177\">\n<p>\u0414\u0430\u0442\u0430 \u0432\u044b\u0445\u043e\u0434\u0430<\/p>\n<\/th>\n<th data-colwidth=\"176\" width=\"176\">\n<p>Major<\/p>\n<\/th>\n<th>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435  major \u0432\u0435\u0440\u0441\u0438\u0438<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>1.0.2<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u041c\u0430\u0439 1996<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>45<\/p>\n<\/td>\n<td>\n<p>45<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>1.1<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0424\u0435\u0432\u0440\u0430\u043b\u044c 1997<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>45<\/p>\n<\/td>\n<td>\n<p>45<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>1.2<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0414\u0435\u043a\u0430\u0431\u0440\u044c 1998<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>46<\/p>\n<\/td>\n<td>\n<p>45 .. 46<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>1.3<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u041c\u0430\u0439 2000<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>47<\/p>\n<\/td>\n<td>\n<p>45 .. 47<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>1.4<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0424\u0435\u0432\u0440\u0430\u043b\u044c 2002<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>48<\/p>\n<\/td>\n<td>\n<p>45 .. 48<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>5.0<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2004<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>49<\/p>\n<\/td>\n<td>\n<p>45 .. 49<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>6<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0414\u0435\u043a\u0430\u0431\u0440\u044c 2006<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>50<\/p>\n<\/td>\n<td>\n<p>45 .. 50<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>7<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0418\u044e\u043b\u044c 2011<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>51<\/p>\n<\/td>\n<td>\n<p>45 .. 51<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>8<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u041c\u0430\u0440\u0442 2014<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>52<\/p>\n<\/td>\n<td>\n<p>45 .. 52<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>9<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2017<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>53<\/p>\n<\/td>\n<td>\n<p>45 .. 53<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>10<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u041c\u0430\u0440\u0442 2018<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>54<\/p>\n<\/td>\n<td>\n<p>45 .. 54<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>11<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2018<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>55<\/p>\n<\/td>\n<td>\n<p>45 .. 55<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>12<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u041c\u0430\u0440\u0442 2019<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>56<\/p>\n<\/td>\n<td>\n<p>45 .. 56<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>13<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2019<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>57<\/p>\n<\/td>\n<td>\n<p>45 .. 57<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>14<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u041c\u0430\u0440\u0442 2020<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>58<\/p>\n<\/td>\n<td>\n<p>45 .. 58<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>15<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2020<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>59<\/p>\n<\/td>\n<td>\n<p>45 .. 59<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"177\" width=\"177\">\n<p>16<\/p>\n<\/td>\n<td data-colwidth=\"177\" width=\"177\">\n<p>\u041c\u0430\u0440\u0442 2021<\/p>\n<\/td>\n<td data-colwidth=\"176\" width=\"176\">\n<p>60<\/p>\n<\/td>\n<td>\n<p>45 .. 60<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u0414\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 Java, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 5, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 <code>Major-44=\u0412\u0435\u0440\u0441\u0438\u044f Java<\/code><\/p>\n<h2>access_flags<\/h2>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"161\" width=\"161\">\n<p>Flag Name (\u0418\u043c\u044f \u0444\u043b\u0430\u0433\u0430)<\/p>\n<\/th>\n<th data-colwidth=\"151\" width=\"151\">\n<p>Value (\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435)<\/p>\n<\/th>\n<th>\n<p>Interpretation (\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f)<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_PUBLIC<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x0001<\/p>\n<\/td>\n<td>\n<p>public, \u0432\u0438\u0434\u0435\u043d \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_FINAL<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x0010<\/p>\n<\/td>\n<td>\n<p><code>final<\/code>; \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_SUPER<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x0020<\/p>\n<\/td>\n<td>\n<p>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u0443\u043f\u0435\u0440-\u043a\u043b\u0430\u0441\u0441\u0430 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <em>invokespecial<\/em>. (<a href=\"http:\/\/weblog.ikvm.net\/PermaLink.aspx?guid=99fcff6c-8ab7-4358-9467-ddf71dd20acd\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a> \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_INTERFACE<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x0200<\/p>\n<\/td>\n<td>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0435 \u043a\u043b\u0430\u0441\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_ABSTRACT<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x0400<\/p>\n<\/td>\n<td>\n<p>\u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439, \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_SYNTHETIC<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x1000<\/p>\n<\/td>\n<td>\n<p>\u0421\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u043d\u0435 \u0438\u0437 \u043a\u043e\u0434\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_ANNOTATION<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x2000<\/p>\n<\/td>\n<td>\n<p>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_ENUM<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x4000<\/p>\n<\/td>\n<td>\n<p>Enum<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"161\" width=\"161\">\n<p><code>ACC_MODULE<\/code><\/p>\n<\/td>\n<td data-colwidth=\"151\" width=\"151\">\n<p>0x8000<\/p>\n<\/td>\n<td>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c, \u043d\u0435 \u043a\u043b\u0430\u0441\u0441 \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>\u0412\u043d\u0443\u0442\u0440\u044c Bytecode<\/h2>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"java\">public class SayHello {     public static void main(String[] args) {         System.out.println(\"Hello, world!\");     } }<\/code><\/pre>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e:<\/p>\n<p><code>javac SayHello.java<\/code><\/p>\n<p><code>javap -v -p SayHello<\/code><\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">Classfile {\u043f\u0443\u0442\u044c \u0434\u043e \u0444\u0430\u0439\u043b\u0430}   Last modified Jul 22, 2021; size 423 bytes   MD5 checksum b20c6d9cd0d9345e3cc8b95a0c0cda71   Compiled from \"SayHello.java\" public class SayHello   minor version: 0   major version: 55   flags: (0x0021) ACC_PUBLIC, ACC_SUPER   this_class: #5                          \/\/ SayHello   super_class: #6                         \/\/ java\/lang\/Object   interfaces: 0, fields: 0, methods: 2, attributes: 1 Constant pool:    #1 = Methodref          #6.#15         \/\/ java\/lang\/Object.\"&lt;init>\":()V    #2 = Fieldref           #16.#17        \/\/ java\/lang\/System.out:Ljava\/io\/PrintStream;    #3 = String             #18            \/\/ Hello, world!    #4 = Methodref          #19.#20        \/\/ java\/io\/PrintStream.println:(Ljava\/lang\/String;)V    #5 = Class              #21            \/\/ SayHello    #6 = Class              #22            \/\/ java\/lang\/Object    #7 = Utf8               &lt;init>    #8 = Utf8               ()V    #9 = Utf8               Code   #10 = Utf8               LineNumberTable   #11 = Utf8               main   #12 = Utf8               ([Ljava\/lang\/String;)V   #13 = Utf8               SourceFile   #14 = Utf8               SayHello.java   #15 = NameAndType        #7:#8          \/\/ \"&lt;init>\":()V   #16 = Class              #23            \/\/ java\/lang\/System   #17 = NameAndType        #24:#25        \/\/ out:Ljava\/io\/PrintStream;   #18 = Utf8               Hello, world!   #19 = Class              #26            \/\/ java\/io\/PrintStream   #20 = NameAndType        #27:#28        \/\/ println:(Ljava\/lang\/String;)V   #21 = Utf8               SayHello   #22 = Utf8               java\/lang\/Object   #23 = Utf8               java\/lang\/System   #24 = Utf8               out   #25 = Utf8               Ljava\/io\/PrintStream;   #26 = Utf8               java\/io\/PrintStream   #27 = Utf8               println   #28 = Utf8               (Ljava\/lang\/String;)V {   public SayHello();     descriptor: ()V     flags: (0x0001) ACC_PUBLIC     Code:       stack=1, locals=1, args_size=1          0: aload_0          1: invokespecial #1                  \/\/ Method java\/lang\/Object.\"&lt;init>\":()V          4: return       LineNumberTable:         line 1: 0    public static void main(java.lang.String[]);     descriptor: ([Ljava\/lang\/String;)V     flags: (0x0009) ACC_PUBLIC, ACC_STATIC     Code:       stack=2, locals=1, args_size=1          0: getstatic     #2                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream;          3: ldc           #3                  \/\/ String Hello, world!          5: invokevirtual #4                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V          8: return       LineNumberTable:         line 3: 0         line 4: 8 } SourceFile: \"SayHello.java\" <\/code><\/pre>\n<\/div>\n<\/details>\n<pre><code class=\"json\">minor version: 0   major version: 55   flags: (0x0021) ACC_PUBLIC, ACC_SUPER   this_class: #5                          \/\/ SayHello   super_class: #6                         \/\/ java\/lang\/Object   interfaces: 0, fields: 0, methods: 2, attributes: 1<\/code><\/pre>\n<p>\u0412\u0435\u0440\u0441\u0438\u044f 55.0, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 Java 11 (55-44=11)<\/p>\n<p><code>access_flags<\/code> &#8212; ACC_PUBLIC, ACC_SUPER, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441\u0443\u043f\u0435\u0440\u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p><code>this_class<\/code> &#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 (<code>SayHello<\/code>)<\/p>\n<p><code>super_class<\/code> &#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441  (<code>java\/lang\/Object<\/code>)<\/p>\n<p><code>interfaces: 0, fields: 0, methods: 2, attributes: 1<\/code> &#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043f\u043e\u043b\u0435\u0439, \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432<\/p>\n<p><code>Constant pool<\/code>: &#8212; \u043f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u043a\u043e\u0434\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0432\u043e\u0434\u0438\u043c (SayHello)<\/p>\n<p><code>SourceFile <\/code>&#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u0430\u0442\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432<\/p>\n<p><em>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u0444\u0430\u0439\u043b \u0441 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0435\u043c :<\/em><\/p>\n<pre><code class=\"java\">public class SayHello { public final String hello = \"Hello\"; }<\/code><\/pre>\n<p>\u0427\u0430\u0441\u0442\u044c bytecode, \u043a\u0430\u0441\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u043f\u043e\u043b\u044f:<\/p>\n<pre><code class=\"java\">  public final java.lang.String hello;     descriptor: Ljava\/lang\/String;     flags: (0x0011) ACC_PUBLIC, ACC_FINAL     ConstantValue: String Hello<\/code><\/pre>\n<p>    \u0414\u043b\u044f \u043f\u043e\u043b\u0435\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0444\u043b\u0430\u0433\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0438\u043c\u044f, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 (\u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u044f) \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b (\u0437\u0434\u0435\u0441\u044c, ConstantValue)<\/p>\n<p>\u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b (descriptor) \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439 \u0438\u043c\u0435\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442:<\/p>\n<ul>\n<li>\n<p>B &#8212; byte<\/p>\n<\/li>\n<li>\n<p>C &#8212; char<\/p>\n<\/li>\n<li>\n<p>D &#8212; double<\/p>\n<\/li>\n<li>\n<p>F &#8212; float<\/p>\n<\/li>\n<li>\n<p>I &#8212; int<\/p>\n<\/li>\n<li>\n<p>J &#8212; long<\/p>\n<\/li>\n<li>\n<p>S &#8212; short<\/p>\n<\/li>\n<li>\n<p>Z &#8212; boolean<\/p>\n<\/li>\n<li>\n<p>L\u0438\u043c\u044f_\u043a\u043b\u0430\u0441\u0441\u0430 &#8212; cc\u044b\u043b\u043e\u0447\u043d\u044b\u0439 \u0442\u0438\u043f (\u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 &#8212; Ljava\/lang\/String)<\/p>\n<\/li>\n<li>\n<p>[ &#8212; \u043c\u0430\u0441\u0441\u0438\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 long[] \u0431\u0443\u0434\u0435\u0442 [J<\/p>\n<\/li>\n<\/ul>\n<h2>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u0435\u0442\u043e\u0434\u0430<\/h2>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043b\u0430\u0441\u0441:<\/p>\n<pre><code class=\"java\">public class Main {      public static void main(String[] args) {         int b = 1;         int a = b + 2;         System.out.println(a);     } }<\/code><\/pre>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (\u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; \u0444\u043b\u0430\u0433 <code>-g<\/code>): <\/p>\n<p><code>javac -g Main.java<\/code><\/p>\n<p><code>javap -v -p Main<\/code><\/p>\n<pre><code class=\"yaml\">  public static void main(java.lang.String[]);     descriptor: ([Ljava\/lang\/String;)V     flags: ACC_PUBLIC, ACC_STATIC     Code:       stack=2, locals=3, args_size=1          0: iconst_1          1: istore_1          2: iload_1          3: iconst_2          4: iadd          5: istore_2          6: getstatic     #2                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream;          9: iload_2         10: invokevirtual #3                  \/\/ Method java\/io\/PrintStream.println:(I)V         13: return       LineNumberTable:         line 4: 0         line 5: 2         line 6: 6         line 7: 13       LocalVariableTable:         Start  Length  Slot  Name   Signature             0      14     0  args   [Ljava\/lang\/String;             2      12     1     b   I             6       8     2     a   I <\/code><\/pre>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se8\/html\/jvms-4.html#jvms-4.6\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>Descriptor &#8212; \u0447\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434. \u041e\u043d \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>([param1[param2[...]]])returnValue<\/code>. \u0414\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 &#8212; <code>([Ljava\/lang\/String;)V<\/code>.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440, <code>(BB)I<\/code> \u044d\u0442\u043e <code>int methodName(byte b1, byte b2)<\/code>.<\/p>\n<p><code>V<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 void. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440: \u0438\u043c\u044f = <code>&lt;init><\/code>, \u0442\u0438\u043f=<code>(..)V<\/code>. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430: \u0438\u043c\u044f=<code>&lt;clinit><\/code>, \u0442\u0438\u043f=<code>()V<\/code><\/p>\n<h2>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430<\/h2>\n<h3>\u041e\u0441\u043d\u043e\u0432\u044b<\/h3>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c.<\/p>\n<p>JVM &#8212; \u044d\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u0441\u0442\u0435\u043a\u043e\u0432\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0434\u043d\u043e \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c. \u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 (\u0441\u0442\u0435\u043a \u0437\u0434\u0435\u0441\u044c &#8212; \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0430 LIFO &#8212; \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u0448\u0435\u043b, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u044b\u0448\u0435\u043b) \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. <\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 JVM \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 1 \u0431\u0430\u0439\u0442, \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c).<\/p>\n<p>\u0427\u0430\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u0442\u0438\u043f\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0442\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 iconst_1 &#8212; \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 integer, lconst_1 &#8212; \u0441 long. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043e\u0442 \u0442\u0438\u043f\u0430:<\/p>\n<ul>\n<li>\n<p>a &#8212; reference<\/p>\n<\/li>\n<li>\n<p>b &#8212; byte<\/p>\n<\/li>\n<li>\n<p>c &#8212; character<\/p>\n<\/li>\n<li>\n<p>d &#8212; double<\/p>\n<\/li>\n<li>\n<p>i &#8212; integer<\/p>\n<\/li>\n<li>\n<p>f &#8212; float<\/p>\n<\/li>\n<li>\n<p>l &#8212; long<\/p>\n<\/li>\n<li>\n<p>s &#8212; short<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. (\u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c). \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 &#8212; 3. \u041f\u0435\u0440\u0432\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0422\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0443\u043b\u0435\u0432\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0437\u0430\u043d\u044f\u0442\u0430 <code>args<\/code> (\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 heap). \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (this)<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/082\/885\/a9c\/082885a9ca51f1bc14ceba3ac1acf0d7.jpg\" width=\"1417\" height=\"471\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/082\/885\/a9c\/082885a9ca51f1bc14ceba3ac1acf0d7.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>iconst_1. \u041a\u043b\u0430\u0434\u0435\u0442 \u043d\u0430 \u0441\u0442\u0435\u043a 1. <\/p>\n<\/li>\n<li>\n<p>istore_1. \u0421\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c 1<\/p>\n<\/li>\n<li>\n<p>iload_1. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c 1.<\/p>\n<\/li>\n<li>\n<p>iconst_2.  \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 2.<\/p>\n<\/li>\n<li>\n<p>iadd. \u0421\u043d\u0438\u043c\u0430\u0435\u0442 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0434\u0432\u0430 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u043b\u0430, \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0438 \u043a\u043b\u0430\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>istore_2. \u0421\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c 2<\/p>\n<\/li>\n<li>\n<p>getstatic #2. \u041d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432 \u043f\u0443\u043b\u0435 \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c #2 \u0438 \u043a\u043b\u0430\u0434\u0435\u0442 \u0435\u0435 \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>iload_2. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c 2.<\/p>\n<\/li>\n<li>\n<p>invokevirtual #3. \u041d\u0430\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432 \u043f\u0443\u043b\u0435 \u043f\u043e\u0434 #3, \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434. \u0415\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u0447\u0442\u043e-\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u043a\u043b\u0430\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 (\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c30\/d7d\/e05\/c30d7de05b1b1b0cd6beaaca9822526c.gif\" width=\"709\" height=\"236\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c30\/d7d\/e05\/c30d7de05b1b1b0cd6beaaca9822526c.gif\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f  if<\/h2>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         if (args.length > 2) {             System.out.println(\"Hello\");         }     } }<\/code><\/pre>\n<p>\u0411\u0430\u0439\u0442\u043a\u043e\u0434:<\/p>\n<pre><code class=\"json\">0: aload_0 1: arraylength 2: iconst_2 3: if_icmple     14 6: getstatic     #2                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream; 9: ldc           #3                  \/\/ String Hello 11: invokevirtual #4                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 14: return <\/code><\/pre>\n<p>\u041f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 3 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 &#8212; <code>if_icmple 14<\/code>. \u042d\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0439 \u0434\u043e\u0431\u0440\u044b\u0439 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 goto \u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 &#8212; \u0432\u043e\u0437\u044c\u043c\u0438 \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443, \u043f\u0435\u0440\u0435\u0439\u0434\u0438 \u043d\u0430 14 \u0441\u0442\u0440\u043e\u0447\u043a\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/1d1\/a4e\/e3b\/1d1a4ee3bafe76dec8e549f6a2fe434e.jpg\" width=\"899\" height=\"391\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d1\/a4e\/e3b\/1d1a4ee3bafe76dec8e549f6a2fe434e.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0446\u0438\u043a\u043b\u043e\u0432<\/h2>\n<p>\u0426\u0438\u043a\u043b\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e if.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u0435\u0433\u043e \u0431\u0430\u0439\u0442\u043a\u043e\u0434:<\/p>\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         for (int i = 0; i &lt; 2; i++) {             System.out.println(\"Hello\");         }     } }<\/code><\/pre>\n<pre><code class=\"json\">0: iconst_0 1: istore_1 2: iload_1\/\/\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a 3: iconst_2\/\/\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0441 \u0447\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c 4: if_icmpge     21\/\/\u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 7: getstatic     #2       \/\/ \u041a\u043b\u0430\u0434\u0435\u043c \u043d\u0430 \u0441\u0442\u0435\u043a \u043e\u0431\u044a\u0435\u043a\u0442 PrintStream 10: ldc           #3      \/\/ \u041a\u043b\u0430\u0434\u0435\u043c \u043d\u0430 \u0441\u0442\u0435\u043a String Hello 12: invokevirtual #4      \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 15: iinc          1, 1   \/\/\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 1 18: goto          2      \/\/\u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 2 21: return <\/code><\/pre>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f switch<\/h3>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c &#8212; lookupswitch \u0438\u043b\u0438 tableswitch (<em>lookupswitch<\/em>\u00a0 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0441 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0438 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 \u043a\u0443\u0434\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c, <em>tableswitch<\/em>\u00a0 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438).<\/p>\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         switch (args.length) {             case 0:                 System.out.println(\"Hello\");                 break;             case 1:                 System.out.println(\"World\");                 break;             default:                 System.out.println(\"Hello, World!\");         }     } }<\/code><\/pre>\n<p>Bytecode<\/p>\n<pre><code class=\"css\">0: aload_0 1: arraylength 2: lookupswitch  { \/\/ 2   0: 28   1: 39   default: 50 } 28: getstatic     #2                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream; 31: ldc           #3                  \/\/ String Hello 33: invokevirtual #4                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 36: goto          58 39: getstatic     #2                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream; 42: ldc           #5                  \/\/ String World 44: invokevirtual #4                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 47: goto          58 50: getstatic     #2                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream; 53: ldc           #6                  \/\/ String Hello, World! 55: invokevirtual #4                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 58: return <\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/042\/dba\/dff\/042dbadff55bdc0ba5def0371316fed2.jpg\" width=\"960\" height=\"540\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/042\/dba\/dff\/042dbadff55bdc0ba5def0371316fed2.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f throw<\/h3>\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         try {             try {                 throw new RuntimeException(\"1\");             } catch (RuntimeException e) {                 System.out.println(\"Hello\");                 throw e;             } catch (Exception e) {                 System.out.println(\"World\");                 throw e;             }         } catch (Exception e) {             System.out.println(\"Hello, World\");         }     } }<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u043d \u0432\u044b\u0432\u0435\u0434\u0435\u0442:<\/p>\n<pre><code>Hello Hello, World<\/code><\/pre>\n<p>Bytecode:<\/p>\n<pre><code class=\"json\">0: new           #2                  \/\/ class java\/lang\/RuntimeException 3: dup 4: ldc           #3                  \/\/ String 1 6: invokespecial #4                  \/\/ Method java\/lang\/RuntimeException.\"&lt;init>\":(Ljava\/lang\/String;)V 9: athrow 10: astore_1 11: getstatic     #5                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream; 14: ldc           #6                  \/\/ String Hello 16: invokevirtual #7                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 19: aload_1 20: athrow 21: astore_1 22: getstatic     #5                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream; 25: ldc           #9                  \/\/ String World 27: invokevirtual #7                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 30: aload_1 31: athrow 32: astore_1 33: getstatic     #5                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream; 36: ldc           #10                 \/\/ String Hello, World 38: invokevirtual #7                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V 41: return  Exception table: from to  target type 0    10    10   Class java\/lang\/RuntimeException 0    10    21   Class java\/lang\/Exception 0    32    32   Class java\/lang\/Exception <\/code><\/pre>\n<p>\u0441\u0442\u0440\u043e\u0447\u043a\u0438 1-4 &#8212; \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f,<\/p>\n<p>athrow &#8212; \u0432\u044b\u0431\u0440\u043e\u0441 \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430\u0441\u044c Exception table, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0438\u0434\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0442\u043e\u0447\u043a\u0438, \u0433\u0434\u0435 \u043e\u043d\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c. <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e 9 \u0441\u0442\u0440\u043e\u0447\u043a\u0438, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u043b\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0418 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 Exception table. \u041f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u0441\u0442\u0440\u043e\u0447\u043a\u0430 9 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 \u043e\u0442 0 \u0434\u043e 10 \u0438 \u0443\u043a\u0430\u0437\u0430\u043d RuntimeException) \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 10.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/333\/c3b\/66f\/333c3b66ff3001f775bb50978f17c1c3.jpg\" alt=\"\" title=\"\" width=\"960\" height=\"540\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/333\/c3b\/66f\/333c3b66ff3001f775bb50978f17c1c3.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u0434\u043e\u0445\u043e\u0434\u0438\u043c \u0434\u043e \u0441\u0442\u0440\u043e\u0447\u043a\u0438 31 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0431\u0440\u043e\u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 2 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 ExceptionTable. \u041e\u043d\u0430 \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 3, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 32 \u0441\u0442\u0440\u043e\u0447\u043a\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/664\/1b7\/8ac\/6641b78ace251d31fa4ddf0813a0de94.jpg\" width=\"960\" height=\"540\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/664\/1b7\/8ac\/6641b78ace251d31fa4ddf0813a0de94.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h3>\u0412\u044b\u0437\u043e\u0432\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u0432 (opcode: invokestatic, invokespecial, invokevirtual, invokeinterface, invokedynamic)<\/h3>\n<h4>invokestatic<\/h4>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. (\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \/<strong><em>Static Dispatch<\/em><\/strong>)<\/p>\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         int a = getNumber(1);     }      private static int getNumber(int i) {         return i;     } }<\/code><\/pre>\n<pre><code>stack=1, locals=2, args_size=1 0: iconst_1 1: invokestatic  #2                  \/\/ Method getNumber:(I)I 4: istore_1 5: return<\/code><\/pre>\n<h4>invokespecial<\/h4>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 (\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435\/<strong><em>Static Dispatch<\/em><\/strong>).<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<pre><code class=\"java\">public class Main {     public static class Son extends Parent{         public Son() {             new Object();             int number = super.getNumber();             int number2 = getNumber2();         }          private int getNumber2() {             return 0;         }          public int getNumber(){             return 2;         }     }      public static class Parent extends GranParent{         public int getNumber(){             return 1;         }     }      public static class GranParent{         public int getNumber(){             return 1;         }     } }<\/code><\/pre>\n<p><code>javac Main.java<\/code><\/p>\n<p><code>javap -p -v Main$Son<\/code><\/p>\n<p>Bytecode \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Son<\/p>\n<pre><code class=\"json\">0: aload_0 1: invokespecial #1\/\/ Method Main$Parent.\"&lt;init>\":()V 4: new           #2 \/\/ class java\/lang\/Object 7: dup 8: invokespecial #3\/\/ Method java\/lang\/Object.\"&lt;init>\":()V 11: pop 12: aload_0 13: invokespecial #4\/\/ Method Main$Parent.getNumber:()I 16: istore_1 17: aload_0 18: invokespecial #5 \/\/ Method getNumber2:()I 21: istore_2 22: return<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/1c0\/24a\/16d\/1c024a16d12f6a0ee3f782078593ab59.jpg\" width=\"978\" height=\"311\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c0\/24a\/16d\/1c024a16d12f6a0ee3f782078593ab59.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h4>invokevirtual<\/h4>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u043a\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u0435 (<strong>Dynamic Dispatch<\/strong>). \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b, \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435, \u043f\u043e\u0442\u043e\u043c \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 HotSpot \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/shipilev.net\/blog\/2015\/black-magic-method-dispatch\/\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<pre><code class=\"java\">public class Main {     public static class Son extends Parent{         public Son() {             int number = getNumber();             int number2 = getNumber2();         }          public int getNumber2() {             return 0;         }          int getNumber(){             return 2;         }     }      public static class Parent extends GranParent{         int getNumber(){             return 1;         }     }      public static class GranParent{         int getNumber(){             return 1;         }     } }<\/code><\/pre>\n<p>Bytecode \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Son<\/p>\n<pre><code class=\"json\">0: aload_0 1: invokespecial #1                  \/\/ Method Main$Parent.\"&lt;init>\":()V 4: aload_0 5: invokevirtual #2                  \/\/ Method getNumber:()I 8: istore_1 9: aload_0 10: invokevirtual #3                  \/\/ Method getNumber2:()I 13: istore_2 14: return <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u0445 5 \u0438 10 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f invokevirtual.<\/p>\n<h4>invokeinterface<\/h4>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (<strong>Dynamic Dispatch)<\/strong>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         ParentInterface son = new Son();         son.getNumber();     }      public static class Son implements ParentInterface {         public int getNumber() {             return 2;         }     }      public interface ParentInterface {         int getNumber();     } }<\/code><\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 main<\/p>\n<pre><code class=\"java\">0: new           #2                  \/\/ class Main$Son 3: dup 4: invokespecial #3                  \/\/ Method Main$Son.\"&lt;init>\":()V 7: astore_1 8: aload_1 9: invokeinterface #4,  1            \/\/ InterfaceMethod Main$ParentInterface.getNumber:()I 14: pop 15: return <\/code><\/pre>\n<p>\u041d\u0430 9 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/p>\n<h4>invokedynamic<\/h4>\n<p>\u0412\u044b\u0437\u043e\u0432 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438-\u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0445 call sites. \u0421\u0435\u0439\u0447\u0430\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Java \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043b\u044f\u043c\u0431\u0434. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 opcode, \u0437\u0430\u0439\u043c\u0435\u0442 \u043d\u0435 \u043e\u0434\u043d\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/youtu.be\/DgshYDTpS9I\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a> <\/p>\n<h2>\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 opcode<\/h2>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f \u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se16\/html\/jvms-6.html#jvms-6.5\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u0439\u0442\u0435 Oracle<\/a>.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0438 \u0434\u0430\u043b\u0435\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 (mnemonic), \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (opcode), \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430 \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 &#8212; \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0434\u0430\u043b\u044c\u0448\u0435, \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430, \u0433\u0434\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430<\/p>\n<h4>aaload (0x32) , baload (0x33), caload (0x34), daload (0x31), iaload (0x2e), faload (0x30), laload (0x2f), saload (0x35)<\/h4>\n<p>&#8230;,\u00a0<em>arrayref<\/em>,\u00a0<em>index<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em><\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 (a* &#8212; \u0441\u0441\u044b\u043b\u043e\u043a, b* &#8212; byte \u0438\u043b\u0438 boolean, c* &#8212; char, d* &#8212; double, i* &#8212; integer, f* &#8212; float, l* &#8212; long, s* &#8212; short)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         String arg = args[0];     } }<\/code><\/pre>\n<pre><code>0: aload_0 1: iconst_0 2: aaload 3: astore_1 4: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>aastore (0x53) , bastore (0x54), castore (0x55), dastore (0x52), iastore (0x4\u0430), fastore (0x51), lastore (0x50), sastore (0x56)<\/h4>\n<p>&#8230;,\u00a0<em>arrayref<\/em>,\u00a0<em>index<\/em>,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 (a* &#8212; \u0441\u0441\u044b\u043b\u043e\u043a, b* &#8212; byte \u0438\u043b\u0438 boolean, c* &#8212; char, d* &#8212; double, i* &#8212; integer, f* &#8212; float, l* &#8212; long, s* &#8212; short)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         args[0] = \"Hello\";     } }<\/code><\/pre>\n<pre><code>0: aload_0 1: iconst_0 2: ldc           #2                  \/\/ String Hello 4: aastore 5: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>aconst_null (0x1)<\/h4>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<code>null<\/code><\/p>\n<p>\u041f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0435\u043a null<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         String s = null;     } }<\/code><\/pre>\n<pre><code>0: aconst_null 1: astore_1 2: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>aload (0x30) , dload (0x18), iload (0x15), fload (0x17), lload (0x16)<\/h4>\n<p>\u0414\u043b\u044f aload<\/p>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>objectref<\/em><\/p>\n<p>\u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 <\/p>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em><\/p>\n<p><em>\u0424\u043e\u0440\u043c\u0430\u0442: dload index<\/em><\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043ac\u043e\u043c index (a* &#8212; \u0441\u0441\u044b\u043b\u043e\u043a, d* &#8212; double, i* &#8212; integer, f* &#8212; float, l* &#8212; long).<\/p>\n<h4>aload_{x} , dload_{x}, iload_{x}, fload_{x} , lload_{x}<\/h4>\n<details class=\"spoiler\">\n<summary>opcode<\/summary>\n<div class=\"spoiler__content\">\n<p><em>aload_0<\/em>\u00a0=  (0x2a)<\/p>\n<p><em>aload_1<\/em>\u00a0=  (0x2b)<\/p>\n<p><em>aload_2<\/em>\u00a0=  (0x2c)<\/p>\n<p><em>aload_3<\/em>\u00a0=  (0x2d)<\/p>\n<p><em>dload_0<\/em>\u00a0= (0x26)<\/p>\n<p><em>dload_1<\/em>\u00a0= (0x27)<\/p>\n<p><em>dload_2<\/em>\u00a0= (0x28)<\/p>\n<p><em>dload_3<\/em>\u00a0= (0x29)<\/p>\n<p><em>iload_0<\/em>\u00a0=  (0x1a)<\/p>\n<p><em>iload_1<\/em>\u00a0=  (0x1b)<\/p>\n<p><em>iload_2<\/em>\u00a0=  (0x1c)<\/p>\n<p><em>iload_3<\/em>\u00a0=  (0x1d)<\/p>\n<p><em>fload_0<\/em>\u00a0=  (0x22)<\/p>\n<p><em>fload_1<\/em>\u00a0=  (0x23)<\/p>\n<p><em>fload_2<\/em>\u00a0=  (0x24)<\/p>\n<p><em>fload_3<\/em>\u00a0= (0x25)<\/p>\n<p><em>lload_0<\/em>\u00a0=  (0x1e)<\/p>\n<p><em>lload_1<\/em>\u00a0=  (0x1f)<\/p>\n<p><em>lload_2<\/em>\u00a0=  (0x20)<\/p>\n<p><em>lload_3<\/em>\u00a0= (0x21)<\/p>\n<\/div>\n<\/details>\n<p>x &#8212; \u043e\u0442 0 \u0434\u043e 3 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e<\/p>\n<p>\u0414\u043b\u044f aload_{x}<\/p>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>objectref<\/em><\/p>\n<p>\u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 <\/p>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em><\/p>\n<p><em>\u0424\u043e\u0440\u043c\u0430\u0442: dload_1<\/em><\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043ac\u043e\u043c x (a* &#8212; \u0441\u0441\u044b\u043b\u043e\u043a, d* &#8212; double, i* &#8212; integer, f* &#8212; float, l* &#8212; long).<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int a = 35;     } }<\/code><\/pre>\n<pre><code>0: bipush        35 2: istore_1 3: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>anewarray (0xbd  )<\/h4>\n<p>&#8230;,\u00a0<em>count<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>arrayref<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p><em>anewarray<\/em><br \/><em>indexbyte1<\/em><br \/><em>indexbyte2<\/em><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         Object[] objects = new Object[]{};     } }<\/code><\/pre>\n<pre><code>0: iconst_0 1: anewarray     #2                  \/\/ class java\/lang\/Object 4: astore_1 5: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h3>areturn (0xb0), dreturn (0xaf), ireturn (0xac), freturn  (0xae) , lreturn  (0xad)<\/h3>\n<p>\u0414\u043b\u044f areturn <\/p>\n<p>&#8230;,\u00a0objectref\u00a0\u2192<\/p>\n<p>[empty]<\/p>\n<p>\u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 <\/p>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>[empty]<\/p>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u0442\u0435\u043a\u0430 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 (a* &#8212; \u0441\u0441\u044b\u043b\u043e\u043a, d* &#8212; double, i* &#8212; integer, f* &#8212; float, l* &#8212; long).<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public static int get() {   return 2; }<\/code><\/pre>\n<pre><code>0: iconst_2 1: ireturn<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>arraylength  (0xbe)<\/h4>\n<p>&#8230;,\u00a0<em>arrayref<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>length<\/em><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         int length = args.length;     } }<\/code><\/pre>\n<pre><code>0: aload_0 1: arraylength 2: istore_1 3: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>astore (0x3a) , dstore (0x39), istore (0x36), fstore (0x38), lstore (0x37)<\/h4>\n<p>\u0414\u043b\u044f astore<\/p>\n<p>&#8230;,\u00a0<em>objectref<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 <\/p>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p><em>\u0424\u043e\u0440\u043c\u0430\u0442: astore<\/em> <em>index<\/em><\/p>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043ac\u043e\u043c index (a* &#8212; \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043e\u043a, d* &#8212; double, i* &#8212; integer, f* &#8212; float, l* &#8212; long).<\/p>\n<h4>astore_{x} , dstore_{x}, istore_{x}, fstore_{x} , lstore_{x}<\/h4>\n<details class=\"spoiler\">\n<summary>opcode<\/summary>\n<div class=\"spoiler__content\">\n<p><em>astore_0<\/em>\u00a0= (0x4b)<\/p>\n<p><em>astore_1<\/em>\u00a0= (0x4c)<\/p>\n<p><em>astore_2<\/em>\u00a0= (0x4d)<\/p>\n<p><em>astore_3<\/em>\u00a0= (0x4e)<\/p>\n<p><em>dstore_0<\/em>\u00a0= (0x47)<\/p>\n<p><em>dstore_1<\/em>\u00a0= (0x48)<\/p>\n<p><em>dstore_2<\/em>\u00a0= (0x49)<\/p>\n<p><em>dstore_3<\/em>\u00a0= (0x4a)<\/p>\n<p><em>istore_0<\/em>\u00a0= (0x3b)<\/p>\n<p><em>istore_1<\/em>\u00a0= (0x3c)<\/p>\n<p><em>istore_2<\/em>\u00a0= (0x3d)<\/p>\n<p><em>istore_3<\/em>\u00a0= (0x3e)<\/p>\n<p><em>fstore_0<\/em>\u00a0= (0x43)<\/p>\n<p><em>fstore_1<\/em>\u00a0= (0x44)<\/p>\n<p><em>fstore_2<\/em>\u00a0= (0x45)<\/p>\n<p><em>fstore_3<\/em>\u00a0= (0x46)<\/p>\n<p><em>lstore_0<\/em>\u00a0= (0x3f)<\/p>\n<p><em>lstore_1<\/em>\u00a0= (0x40)<\/p>\n<p><em>lstore_2<\/em>\u00a0= (0x41)<\/p>\n<p><em>lstore_3<\/em>\u00a0= (0x42)<\/p>\n<\/div>\n<\/details>\n<p>x &#8212; \u043e\u0442 0 \u0434\u043e 3 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e<\/p>\n<p>\u0414\u043b\u044f aload_{x}<\/p>\n<p>&#8230;,\u00a0<em>objectref<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 <\/p>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p><em>\u0424\u043e\u0440\u043c\u0430\u0442: lstore_0<\/em><\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u0438\u043d\u0434\u0435\u043ac\u043e\u043c {x} (a* &#8212; \u0441\u0441\u044b\u043b\u043e\u043a, d* &#8212; double, i* &#8212; integer, f* &#8212; float, l* &#8212; long).<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public static boolean check(int i) {   return 1 == i; }<\/code><\/pre>\n<pre><code>0: iconst_1 1: iload_0 2: if_icmpne     9 5: iconst_1 6: goto          10 9: iconst_0 10: ireturn<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>athrow (0xbf)<\/h4>\n<p>&#8230;..,\u00a0<em>objectref<\/em>\u00a0\u2192<\/p>\n<p><em>objectref<\/em><\/p>\n<p>\u0412\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <em>objectref<\/em>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         throw new RuntimeException();     } }<\/code><\/pre>\n<pre><code>0: new           #2    \/\/ class java\/lang\/RuntimeException 3: dup 4: invokespecial #3    \/\/ Method java\/lang\/RuntimeException.\"&lt;init>\":()V 7: athrow<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>bipush (0x10), sipush (0x11)<\/h4>\n<p>&#8230; \u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: bipush byte, <em>sipush byte1 byte2<\/em><\/p>\n<p>\u041a\u043b\u0430\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0435\u043a (b* &#8212; byte, s* &#8212; short)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         short a = 1000;     } } <\/code><\/pre>\n<pre><code>0: sipush        1000 3: istore_1 4: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>breakpoint (0xca)<\/h4>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u0435\u0431\u0430\u0433\u0430, \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0435 .class \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/p>\n<h4>checkcast \u00a0(0xc0)\u00a0<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>objectref<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>checkcast indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 &#8212; ClassCastException.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         List a = new ArrayList();         a.add(\"String\");         Integer o = (Integer) a.get(0);     } } <\/code><\/pre>\n<pre><code class=\"java\">0: new           #2                  \/\/ class java\/util\/ArrayList 3: dup 4: invokespecial #3                  \/\/ Method java\/util\/ArrayList.\"&lt;init>\":()V 7: astore_1 8: aload_1 9: ldc           #4                  \/\/ String String 11: invokeinterface #5,  2            \/\/ InterfaceMethod java\/util\/List.add:(Ljava\/lang\/Object;)Z 16: pop 17: aload_1 18: iconst_0 19: invokeinterface #6,  2            \/\/ InterfaceMethod java\/util\/List.get:(I)Ljava\/lang\/Object; 24: checkcast     #7                  \/\/ class java\/lang\/Integer 27: astore_2 28: return <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>d2f (0x90), \u00a0d2i (0x8e), d2l (0x8f), f2d (0x8d), f2i(0x8b), f2l (0x8c), i2b (0x91), i2c(0x92), i2d(0x87), i2f(0x86), i2l(0x85), i2s(0x93), l2d(0x8a), l2f(0x89), l2i(0x88)<\/h4>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (d &#8212; double, i &#8212; int, f &#8212; float, s &#8212; short, c &#8212; char, l &#8212; long)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = 2;         long a = i;     } }<\/code><\/pre>\n<pre><code class=\"java\">0: iconst_2 1: istore_1 2: iload_1 3: i2l 4: lstore_2 5: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>dadd (0x63), \u00a0fadd(0x62), iadd(0x60), ladd(0x61), ddiv(0x6f), dmul(0x6b), drem (0x73), dsub (0x67), idiv(0x6c), imul (0x68), irem (0x70), isub (0x64), fdiv(0x6e), fmul (0x6a), frem (0x72), fsub (0x66), ldiv(0x6d), lmul (0x69), lrem (0x71), lsub (0x65)<\/h4>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>*add &#8212; c\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <\/p>\n<p>*div &#8212; \u0434\u0435\u043b\u0438\u0442 \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/p>\n<p>*mul &#8212; \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u0442 \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/p>\n<p>*rem &#8212; \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/p>\n<p>*sub &#8212; \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435<\/p>\n<p>(d &#8212; double, i &#8212; int, f &#8212; float, l &#8212; long)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = 2;         int a = i + 3;     } }<\/code><\/pre>\n<pre><code class=\"java\">0: iconst_2 1: istore_1 2: iload_1 3: iconst_3 4: iadd 5: istore_2 6: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>dcmpg (0x98), \u00a0dcmpl(0x97), fcmpg(0x96), fcmpl(0x95), lcmp(0x94)<\/h4>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442 2 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u043e \u043d\u0430 \u0441\u0442\u0435\u043a \u043a\u043b\u0430\u0434\u0435\u0442\u0441\u044f 1, \u0435\u0441\u043b\u0438 \u0440\u0430\u0432\u043d\u044b &#8212; 0, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u043d\u044c\u0448\u0435, \u0442\u043e \u043a\u043b\u0430\u0434\u0435\u0442\u0441\u044f -1. (*cmpg \u0438 *cmpl \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 NaN, \u043f\u0435\u0440\u0432\u043e\u0435 \u043a\u043b\u0430\u0434\u0435\u0442 1, \u0432\u0442\u043e\u0440\u043e\u0435 &#8212; &#171;-1&#187;), (d &#8212; double, f &#8212; float, l &#8212; long)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         double d = 9;         boolean a = d > 2;     } } <\/code><\/pre>\n<pre><code class=\"bash\">0: ldc2_w        #2                  \/\/ double 9.0d 3: dstore_1 4: dload_1 5: ldc2_w        #4                  \/\/ double 2.0d 8: dcmpl 9: ifle          16 12: iconst_1 13: goto          17 16: iconst_0 17: istore_3 18: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>dconst_0 (0xe), \u00a0dconst_1(0xf), lconst_0(0x9), lconst_1(0xa), fconst_0(0xb), fconst_1(0xc), fconst_2(0xd), iconst_m1 (0x3), iconst_1(0x4), iconst_2 (0x5), iconst_3 (0x6), iconst_4 (0x7), iconst_5 (0x8)<\/h4>\n<p>&#8230; \u2192<\/p>\n<p>&#8230;, &lt;<em>d<\/em>><\/p>\n<p>\u041a\u043b\u0430\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0435\u043a (*_0 -> 0, *_1 -> 1, *_2 -> 2, *_3 -> 3, *_4 -> 4, *_5 -> 5,  *_m1 -> -1), (d* &#8212; double, i* &#8212; int, f* &#8212; float, l* &#8212; long)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         double d = 1;     } } <\/code><\/pre>\n<pre><code>0: dconst_1 1: dstore_1 2: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>dneg (0x77), \u00a0ineg (0x74), fneg(0x76), lneg(0x75)<\/h4>\n<p>&#8230;.,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<p>(d &#8212; double, i &#8212; int, f &#8212; float, l &#8212; long)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         int i = 2;         int b = -i;     } }<\/code><\/pre>\n<pre><code class=\"bash\">0: iconst_2 1: istore_1 2: iload_1 3: ineg 4: istore_2 5: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>dup(0x59)<\/h4>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em>,\u00a0<em>value<\/em><\/p>\n<p>\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u0440\u0445 \u0441\u0442\u0435\u043a\u0430<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         Object a = new Object();     } }<\/code><\/pre>\n<pre><code>0: new           #2                  \/\/ class java\/lang\/Object 3: dup 4: invokespecial #1                  \/\/ Method java\/lang\/Object.\"&lt;init>\":()V 7: astore_1 8: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>dup_x1(0x5a)<\/h4>\n<p>&#8230;,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<strong><em>value1(\u043d\u043e\u0432\u043e\u0435)<\/em><\/strong>,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em><\/p>\n<p>\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u0440\u0445 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 1 \u0438\u043b\u0438 2 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0438\u0436\u0435<\/p>\n<h4>dup_x2(0x5b)<\/h4>\n<p>&#8230;,\u00a0<em>value3<\/em>,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<strong><em>value1 (\u043d\u043e\u0432\u043e\u0435)<\/em><\/strong>,\u00a0<em>value3<\/em>,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em><\/p>\n<p>\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u0440\u0445 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 2 \u0438\u043b\u0438 3 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0438\u0436\u0435<\/p>\n<h4>dup2  (0x5c)<\/h4>\n<p>&#8230;,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>,\u00a0<strong><em>value2(\u043d\u043e\u0432\u043e\u0435)<\/em>,\u00a0<em>value1(\u043d\u043e\u0432\u043e\u0435)<\/em><\/strong><\/p>\n<p>\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 1 \u0438\u043b\u0438 2 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u0432\u0435\u0440\u0445\u0430 \u0441\u0442\u0435\u043a\u0430<\/p>\n<h4>dup2_x1(0x5d)<\/h4>\n<p>&#8230;,\u00a0<em>value3<\/em>,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<strong><em>value2(\u043d\u043e\u0432\u043e\u0435)<\/em><\/strong>,\u00a0<strong><em>value1(\u043d\u043e\u0432\u043e\u0435)<\/em><\/strong>,\u00a0<em>value3<\/em>,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em><\/p>\n<p>\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 1 \u0438\u043b\u0438 2 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 2 \u0438\u043b\u0438 3 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0438\u0436\u0435<\/p>\n<h4>dup2_x2 (0x5e)<\/h4>\n<p>&#8230;,\u00a0<em>value4<\/em>,\u00a0<em>value3<\/em>,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<strong><em>value2(\u043d\u043e\u0432\u043e\u0435)<\/em><\/strong>,\u00a0<strong><em>value1(\u043d\u043e\u0432\u043e\u0435)<\/em><\/strong>,\u00a0<em>value4<\/em>,\u00a0<em>value3<\/em>,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em><\/p>\n<p>\u0414\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 1 \u0438\u043b\u0438 2 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 2, 3 \u0438\u043b\u0438 4 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0438\u0436\u0435<\/p>\n<h4>getfield (0xb4)<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>getfield indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0435\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u043e\u043b\u044f <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int j = new MyClass().i;     }      public static class MyClass{         public int i = 1;     } }<\/code><\/pre>\n<pre><code>public static void main(java.lang.String[]); descriptor: ([Ljava\/lang\/String;)V flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=2, args_size=1 0: new           #2                  \/\/ class org\/example\/App$MyClass 3: dup 4: invokespecial #3                  \/\/ Method org\/example\/App$MyClass.\"&lt;init>\":()V 7: getfield      #4                  \/\/ Field org\/example\/App$MyClass.i:I 10: istore_1 11: return <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>getstatic (0xb2)<\/h4>\n<p>&#8230;,\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: getstatic<em> indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0435\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     static int i = 0;     public static void main(String[] args) {         int j = i;     } } <\/code><\/pre>\n<pre><code>0: getstatic     #2                  \/\/ Field i:I 3: istore_1 4: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h3>goto (0xa7), goto_w (0xc8)<\/h3>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <\/p>\n<p>goto<em> indexbyte1 indexbyte2<\/em><\/p>\n<p>goto_w<em> indexbyte1 indexbyte2 indexbyte3 indexbyte4<\/em><\/p>\n<p>\u041f\u0440\u044b\u0433\u043d\u0443\u0442\u044c<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i;         if (args.length == 1) {             i = 1;         } else {             i=2;         }     } }<\/code><\/pre>\n<pre><code>0: aload_0 1: arraylength 2: iconst_1 3: if_icmpne     11 6: iconst_1 7: istore_1 8: goto          13 11: iconst_2 12: istore_1 13: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h3>iand (0x7e), land (0x7f), ior (0x80), lor(0x81), ixor(0x82), lxor(0x83)<\/h3>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u043b\u044f *and &#8212; &amp;, \u0434\u043b\u044f *or &#8212; |, \u0434\u043b\u044f *xor &#8212; \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 XOR (l* &#8212; \u0434\u043b\u044f long, i* &#8212; \u0434\u043b\u044f int)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = 1;         int j = 1 &amp; i;     } } <\/code><\/pre>\n<pre><code>0: iconst_1 1: istore_1 2: iconst_1 3: iload_1 4: iand 5: istore_2 6: return <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>if_acmpeq (0xa5), if_acmpne(0xa6)<\/h4>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>if_acmp&lt;cond> branchbyte1 branchbyte2<\/em><\/p>\n<p>\u041f\u0440\u044b\u0433\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 (\u0434\u043b\u044f <em>if_acmpeq<\/em>), \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 (\u0434\u043b\u044f <em>if_acmpne<\/em>)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = 0;         if (\"s\" == args[0]) {             i = 1;         } else {             i = 2;         }     } }<\/code><\/pre>\n<pre><code>0: iconst_0 1: istore_1 2: ldc           #2                  \/\/ String s 4: aload_0 5: iconst_0 6: aaload 7: if_acmpne     15 10: iconst_1 11: istore_1 12: goto          17 15: iconst_2 16: istore_1 17: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>if_icmpeq (0x9f), if_icmpne(0xa0), if_icmplt(0xa1), if_icmpge(0xa2), if_icmpgt(0xa3), if_icmple(0xa4)  <\/h4>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>if_icmp&lt;cond> branchbyte1 branchbyte2<\/em><\/p>\n<p>\u041f\u0440\u044b\u0433\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 (value1 \u0438 value2 &#8212; int):<\/p>\n<ul>\n<li>\n<p><em>if_icmpeq<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 <em>value1<\/em>\u00a0==\u00a0<em>value2<\/em><\/p>\n<\/li>\n<li>\n<p><em>if_icmpne<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438\u00a0<em>value1<\/em>\u00a0\u2260\u00a0<em>value2<\/em><\/p>\n<\/li>\n<li>\n<p><em>if_icmplt<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 <em>value1<\/em>\u00a0&lt;\u00a0<em>value2<\/em><\/p>\n<\/li>\n<li>\n<p><em>if_icmple<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value1<\/em>\u00a0\u2264\u00a0<em>value2<\/em><\/p>\n<\/li>\n<li>\n<p><em>if_icmpgt<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 <em>value1<\/em>\u00a0>\u00a0<em>value2<\/em><\/p>\n<\/li>\n<li>\n<p><em>if_icmpge<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value1<\/em>\u00a0\u2265\u00a0<em>value2<\/em><\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = 0;         if (i==args.length) {             i = 1;         } else {             i = 2;         }     } }<\/code><\/pre>\n<pre><code>0: iconst_0 1: istore_1 2: iload_1 3: aload_0 4: arraylength 5: if_icmpne     13 8: iconst_1 9: istore_1 10: goto          15 13: iconst_2 14: istore_1 15: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>ifeq (0x99), ifne(0x9a), iflt(0x9b), ifge(0x9c), ifgt(0x9d), ifle(0x9e)<\/h4>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>if&lt;cond> branchbyte1 branchbyte2<\/em><\/p>\n<p>\u041f\u0440\u044b\u0433\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 (value- int):<\/p>\n<ul>\n<li>\n<p><em>ifeq<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0== 0<\/p>\n<\/li>\n<li>\n<p><em>ifne<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0\u2260\u00a00<\/p>\n<\/li>\n<li>\n<p><em>iflt<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0&lt; 0<\/p>\n<\/li>\n<li>\n<p><em>ifle<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0\u2264\u00a00<\/p>\n<\/li>\n<li>\n<p><em>ifgt<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0> 0<\/p>\n<\/li>\n<li>\n<p><em>ifge<\/em>\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0\u2265\u00a00<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         long i = 0;         if (i==args.length) {             i = 1;         } else {             i = 2;         }     } }<\/code><\/pre>\n<pre><code>0: lconst_0 1: lstore_1 2: lload_1 3: aload_0 4: arraylength 5: i2l 6: lcmp 7: ifne          15 10: lconst_1 11: lstore_1 12: goto          19 15: ldc2_w        #2                  \/\/ long 2l 18: lstore_1 19: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>ifnonnull (0xc7), ifnull(0xc6)<\/h4>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>if&lt;cond> branchbyte1 branchbyte2<\/em><\/p>\n<p>\u041f\u0440\u044b\u0433\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 (value- \u043e\u0431\u044a\u0435\u043a\u0442):<\/p>\n<ul>\n<li>\n<p>ifnull\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0== null<\/p>\n<\/li>\n<li>\n<p>ifnonnull\u00a0&#8212; \u0435\u0441\u043b\u0438 \u00a0<em>value<\/em>\u00a0\u2260\u00a0null<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         if (new Object() != null) {             int a = 1;         }     } }<\/code><\/pre>\n<pre><code>0: new           #2                  \/\/ class java\/lang\/Object 3: dup 4: invokespecial #1                  \/\/ Method java\/lang\/Object.\"&lt;init>\":()V 7: ifnull        12 10: iconst_1 11: istore_1 12: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h3>iinc (0x84)<\/h3>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>iinc index const<\/em><\/p>\n<p>\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e (int) \u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = args.length;         i += 10;     } }<\/code><\/pre>\n<pre><code>0: aload_0 1: arraylength 2: istore_1 3: iinc          1, 10 6: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>impdep1 (0xfe), impdep2(0xff)<\/h4>\n<p>\u0417\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 opcode<\/p>\n<h4>instanceof (0xc1)<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>instanceof indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041a\u043b\u0430\u0434\u0435\u0442 \u043d\u0430 \u0441\u0442\u0435\u043a 1, \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 &#8212; \u0442\u043e \u043a\u043b\u0430\u0434\u0435\u0442 0<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         if(args instanceof Object){             int i = 0;         }     } }<\/code><\/pre>\n<pre><code>0: aload_0 1: instanceof    #2                  \/\/ class java\/lang\/Object 4: ifeq          9 7: iconst_0 8: istore_1 9: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>invokedynamic (0xba)<\/h4>\n<p>&#8230;, [<em>arg1<\/em>, [<em>arg2<\/em>\u00a0&#8230;]]\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>invokedynamic indexbyte1 indexbyte2 0 0<\/em><\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432\u044b\u0448\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435<\/p>\n<h4>invokeinterface (0xb9)<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>, [<em>arg1<\/em>, [<em>arg2<\/em>\u00a0&#8230;]]\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>invokeinterface indexbyte1 indexbyte2 0 0<\/em><\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432\u044b\u0448\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435<\/p>\n<h4>invokespecial (0xb7)<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>, [<em>arg1<\/em>, [<em>arg2<\/em>\u00a0&#8230;]]\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>invokespecial indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432\u044b\u0448\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435<\/p>\n<h4>invokestatic (0xb8)<\/h4>\n<p>&#8230;, [<em>arg1<\/em>, [<em>arg2<\/em>\u00a0&#8230;]]\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>invokestatic indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432\u044b\u0448\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435<\/p>\n<h4>invokevirtual (0xb6)<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>, [<em>arg1<\/em>, [<em>arg2<\/em>\u00a0&#8230;]]\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>invokevirtual indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432\u044b\u0448\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435<\/p>\n<h4>iushr (0x7c), lushr(0x7d)<\/h4>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0434\u0432\u0438\u0433 \u0432\u043f\u0440\u0430\u0432\u043e. (i* &#8212; int, l* &#8212; long)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = args.length >>> 1;     } }  <\/code><\/pre>\n<pre><code>0: aload_0 1: arraylength 2: iconst_1 3: iushr 4: istore_1 5: return  <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>ishl (0x78), lshl(0x79), ishr(0x7a), lshr(0x7b)<\/h4>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>result<\/em><\/p>\n<p>\u0421\u0434\u0432\u0438\u0433 \u0432\u043b\u0435\u0432\u043e  &#8212; \u0434\u043b\u044f *shl , \u0432\u043f\u0440\u0430\u0432\u043e &#8212; \u0434\u043b\u044f *shr. (i* &#8212; int, l* &#8212; long)<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class App {     public static void main(String[] args) {         int i = args.length &lt;&lt; 1;     } } <\/code><\/pre>\n<pre><code>0: aload_0 1: arraylength 2: iconst_1 3: ishl 4: istore_1 5: return <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>jsr (0xa8), jsr_w(0xc9)<\/h4>\n<p>\u0414\u043b\u044f class \u0444\u0430\u0439\u043b\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 51 \u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 try-finally<\/p>\n<h4>ldc(0x12), ldc_w(0x13), ldc2_w(0x14)<\/h4>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p> <em>ldc<\/em> <em>indexbyte1<\/em><\/p>\n<p> <em>ldc_w<\/em> <em>indexbyte1 indexbyte2<\/em><\/p>\n<p> <em>ldc2_w<\/em> <em>indexbyte1 indexbyte2<\/em><\/p>\n<p>\u041a\u043b\u0430\u0434\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u043d\u0430 \u0441\u0442\u0435\u043a. ldc_w &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441, ldc2_w  \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f long \u0438 double<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         long a = 10l;     } }<\/code><\/pre>\n<pre><code>0: ldc2_w        #2                  \/\/ long 10l 3: lstore_1 4: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>lookupswitch(0xab)<\/h4>\n<p>&#8230;,\u00a0<em>key<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p><em>lookupswitch &lt;0-3\u00a0byte\u00a0pad> defaultbyte1 defaultbyte2 defaultbyte3 defaultbyte4 npairs1 npairs2 npairs3 npairs4 match-offset\u00a0pairs&#8230;<\/em>  <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f. \u0421\u043c. \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e switch<\/p>\n<h4>monitorenter(0xc2), monitorexit(0xc3)<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0412\u0437\u044f\u0442\u0438\u0435 \u0438 \u043e\u0442\u043f\u0443\u0441\u043a \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     static Object o = new Object();     public static void main(String[] args) {         synchronized (o) {             int a = 1;         }     } }<\/code><\/pre>\n<pre><code>0: getstatic     #2                  \/\/ Field o:Ljava\/lang\/Object; 3: dup 4: astore_1 5: monitorenter 6: iconst_1 7: istore_2 8: aload_1 9: monitorexit 10: goto          18 13: astore_3 14: aload_1 15: monitorexit 16: aload_3 17: athrow 18: return <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>multianewarray(0xc5)<\/h4>\n<p>&#8230;\u00a0\u2192&#8230;,\u00a0<em>count1<\/em>, [<em>count2<\/em>, &#8230;]\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>arrayref<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p><em>multianewarray indexbyte1 indexbyte2 dimensions<\/em>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         int[][] array = new int[2][2];     } }<\/code><\/pre>\n<pre><code>0: iconst_2 1: iconst_2 2: multianewarray #2,  2             \/\/ class \"[[I\" 6: astore_1 7: return <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>new (0xbb)<\/h4>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>objectref<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p><em>new<\/em>  <em>indexbyte1 indexbyte2 <\/em><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0435\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         Object o = new Object();     } }<\/code><\/pre>\n<pre><code>0: new           #2                  \/\/ class java\/lang\/Object 3: dup 4: invokespecial #1                  \/\/ Method java\/lang\/Object.\"&lt;init>\":()V 7: astore_1 8: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>newarray (0xbc)<\/h4>\n<p>&#8230;,\u00a0<em>count<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>arrayref<\/em><\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p><em>newarray<\/em>  <em>atype<\/em>  <em> <\/em><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         int[] i = new int[2];     } }<\/code><\/pre>\n<pre><code>0: iconst_2 1: newarray       int 3: astore_1 4: return <\/code><\/pre>\n<\/div>\n<\/details>\n<h4>nop (0x0)<\/h4>\n<p>\u041d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e<\/p>\n<h4>pop (0x57)<\/h4>\n<p>&#8230;.,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0412\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 1 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430<\/p>\n<h4>pop2(0x58)<\/h4>\n<p>&#8230;,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0412\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 1 \u0438\u043b\u0438 2 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430<\/p>\n<h4>putfield (0xb5  )<\/h4>\n<p>&#8230;,\u00a0<em>objectref<\/em>,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>putfield<\/em>  <em>indexbyte1 indexbyte2<\/em><\/p>\n<p>\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0432\u0435\u0440\u0445\u0430 \u0441\u0442\u0435\u043a\u0430 <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     public static void main(String[] args) {         new MyClass().i = 2;     }      public static class MyClass {         public int i = 1;     } }<\/code><\/pre>\n<pre><code>0: new           #2                  \/\/ class Main$MyClass 3: dup 4: invokespecial #3                  \/\/ Method Main$MyClass.\"&lt;init>\":()V 7: iconst_2 8: putfield      #4                  \/\/ Field Main$MyClass.i:I 11: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>putstatic (0xb3  )<\/h4>\n<p>&#8230;,\u00a0<em>value<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442: <em>putstatic<\/em>  <em>indexbyte1 indexbyte2<\/em><\/p>\n<p>\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0432\u0435\u0440\u0445\u0430 \u0441\u0442\u0435\u043a\u0430 <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">public class Main {     static int i = 0;      public static void main(String[] args) {         i=2;     } }  <\/code><\/pre>\n<pre><code>0: iconst_0 1: putstatic     #2                  \/\/ Field i:I 4: return<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>ret (0xa9)<\/h4>\n<p>\u0421\u0442\u0430\u0442\u0443\u0441 opcode \u043d\u0435 \u044f\u0441\u0435\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f jsr<\/p>\n<h4>return(0xb1)<\/h4>\n<p>&#8230;\u00a0\u2192<\/p>\n<p>[empty]<\/p>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 void \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430<\/p>\n<h4>swap (0xb1)<\/h4>\n<p>&#8230;,\u00a0<em>value2<\/em>,\u00a0<em>value1<\/em>\u00a0\u2192<\/p>\n<p>&#8230;,\u00a0<em>value1<\/em>,\u00a0<em>value2<\/em><\/p>\n<p>\u041c\u0435\u043d\u044f\u0435\u0442 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0434\u0432\u0430 \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u0442\u0435\u043a\u0430<\/p>\n<h4>tableswitch (0xaa)<\/h4>\n<p>&#8230;,\u00a0<em>index<\/em>\u00a0\u2192<\/p>\n<p>&#8230;<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p><em>tableswitch<\/em><br \/><em>&lt;0-3\u00a0byte\u00a0pad><\/em><br \/><em>defaultbyte1<\/em><br \/><em>defaultbyte2<\/em><br \/><em>defaultbyte3<\/em><br \/><em>defaultbyte4<\/em><br \/><em>lowbyte1<\/em><br \/><em>lowbyte2<\/em><br \/><em>lowbyte3<\/em><br \/><em>lowbyte4<\/em><br \/><em>highbyte1<\/em><br \/><em>highbyte2<\/em><br \/><em>highbyte3<\/em><br \/><em>highbyte4<\/em><br \/><em>jump\u00a0offsets&#8230;<\/em><\/p>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 switch<\/p>\n<h4>wide (0xc4)<\/h4>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438. <a href=\"https:\/\/stackoverflow.com\/a\/59074754\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a><\/p>\n<p><em>(no name)<\/em>   (0xcb-fd )<\/p>\n<p>\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 <\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/docs.oracle.com\/javase\/specs\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 Java (Oracle)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/youtu.be\/uSSlQlHUjmY\" rel=\"noopener noreferrer nofollow\">\u041b\u0435\u043a\u0446\u0438\u044f \u0422\u0430\u0433\u0438\u0440\u0430 \u0412\u0430\u043b\u0435\u0435\u0432\u0430 (Computer Science Center)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/youtu.be\/YtFT9vJG2lw\" rel=\"noopener noreferrer nofollow\">\u0410\u043d\u0442\u043e\u043d \u0410\u0440\u0445\u0438\u043f\u043e\u0432 \u2014 \u0411\u0430\u0439\u0442\u043a\u043e\u0434 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 (JUG)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/shipilev.net\/blog\/2015\/black-magic-method-dispatch\/\" rel=\"noopener noreferrer nofollow\">\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u043c\u0430\u0433\u0438\u0438 Dispatch \u043e\u0442 \u0428\u0438\u043f\u0438\u043b\u0435\u0432\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=DgshYDTpS9I\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 invokedynamic \u043e\u0442 \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440\u0430 \u0418\u0432\u0430\u043d\u043e\u0432\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/568402\/\"> https:\/\/habr.com\/ru\/articles\/568402\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438 \u043a\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e<\/h2>\n<p><em>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u043e\u0439 \u0438 \u043e\u0431\u044a\u0435\u043c\u043d\u043e\u0439<\/em><\/p>\n<p>\u041a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438, \u043d\u0430 habr \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e bytecode (<a href=\"https:\/\/habr.com\/ru\/post\/111456\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/264919\/\" rel=\"noopener noreferrer nofollow\">\u0434\u0432\u0430<\/a>), \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438, \u0438 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f), \u043c\u043d\u043e\u0433\u0438\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b <em>\u0442\u043e\u043b\u044c\u043a\u043e<\/em> \u043e\u0441\u043d\u043e\u0432\u044b Java Bytecode. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0440\u044f\u0434 \u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>. <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043c\u043d\u043e\u0433\u0438\u0435 \u0442\u0435\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0440\u0435\u0439\u043c\u044b, \u043c\u043d\u043e\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b), \u0438\u043d\u0430\u0447\u0435 \u043e\u043d\u0430 \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435<\/p>\n<\/p>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043e Bytecode<\/h2>\n<p>\u0422\u0435\u043c\u0430 bytecode \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043a\u0443\u0447\u043d\u0430\u044f \u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0422\u0430\u043a \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e \u043e\u0441\u043d\u043e\u0432\u044b bytecode:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<ul>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Java Machine \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u0445\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 bytecode \u0438 \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0441\u043b\u043e\u043c\u0430\u0442\u044c (\u043f\u0440\u0438\u0432\u0435\u0442, Lombok)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e \ud83d\ude42<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u0430\u043a \u0447\u0438\u0442\u0430\u0442\u044c .class \u0444\u0430\u0439\u043b<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c .class \u0444\u0430\u0439\u043b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f<\/p>\n<p><code>javac File.java<\/code><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f .class \u0444\u0430\u0439\u043b. \u0424\u043e\u0440\u043c\u0430\u0442 class \u0444\u0430\u0439\u043b\u0430 &#8212; \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439, \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b JVM. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u043e &#8212; 1 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430 1 \u0444\u0430\u0439\u043b. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 class \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0439 class \u0444\u0430\u0439\u043b \u0432 hex \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 &#171;\u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u0430\u0439\u0442&#187; &#8212; CAFEBABE, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430. <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439<\/p>\n<p><code>javap File<\/code><\/p>\n<p>javap \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 <code>java.lang.Object<\/code><\/p>\n<h4>\u0411\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h4>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c, \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u0438 \u043f\u043e\u043b\u044f\u043c (\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f)<\/p>\n<p><code>javap java.lang.Object<\/code><\/p>\n<pre><code class=\"java\">Compiled from \"Object.java\" public class java.lang.Object {   public java.lang.Object();   public final native java.lang.Class&lt;?> getClass();   public native int hashCode();   public boolean equals(java.lang.Object);   protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;   public java.lang.String toString();   public final native void notify();   public final native void notifyAll();   public final native void wait(long) throws java.lang.InterruptedException;   public final void wait(long, int) throws java.lang.InterruptedException;   public final void wait() throws java.lang.InterruptedException;   protected void finalize() throws java.lang.Throwable;   static {}; }<\/code><\/pre>\n<h2>-p<\/h2>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b<\/p>\n<p><code>javap -p java.lang.Object<\/code><\/p>\n<pre><code class=\"java\">Compiled from \"Object.java\" public class java.lang.Object {   public java.lang.Object();   private static native void registerNatives();   public final native java.lang.Class&lt;?> getClass();   public native int hashCode();   public boolean equals(java.lang.Object);   protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;   public java.lang.String toString();   public final native void notify();   public final native void notifyAll();   public final native void wait(long) throws java.lang.InterruptedException;   public final void wait(long, int) throws java.lang.InterruptedException;   public final void wait() throws java.lang.InterruptedException;   protected void finalize() throws java.lang.Throwable;   static {}; }<\/code><\/pre>\n<h3>-v<\/h3>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (verbose), \u0442\u0430\u043a\u0443\u044e, \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0442.\u0434.<\/p>\n<p><code>javap -v java.lang.Object<\/code><\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"java\">Classfile jar:file{\u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443}   Last modified 15.12.2018; size 1497 bytes   MD5 checksum 074ebc688a81170b8740f1158648a3c7   Compiled from \"Object.java\" public class java.lang.Object   minor version: 0   major version: 52   flags: ACC_PUBLIC, ACC_SUPER Constant pool:    #1 = Integer            999999    #2 = String             #16            \/\/ @    #3 = String             #38            \/\/ nanosecond timeout value out of range    #4 = String             #42            \/\/ timeout value is negative    #5 = Utf8               ()I    #6 = Utf8               ()Ljava\/lang\/Object;    #7 = Utf8               ()Ljava\/lang\/String;    #8 = Utf8               ()V    #9 = Utf8               (I)Ljava\/lang\/String;   #10 = Utf8               (J)V   #11 = Utf8               (JI)V   #12 = Utf8               (Ljava\/lang\/Object;)Z   #13 = Utf8               (Ljava\/lang\/String;)V   #14 = Utf8               &lt;clinit>   #15 = Utf8               &lt;init>   #16 = Utf8               @   #17 = Utf8               Code   #18 = Utf8               Exceptions   #19 = Utf8               LineNumberTable   #20 = Utf8               Signature   #21 = Utf8               SourceFile   #22 = Utf8               StackMapTable   #23 = Utf8               append   #24 = Utf8               clone   #25 = Utf8               equals   #26 = Utf8               finalize   #27 = Utf8               getClass   #28 = Utf8               getName   #29 = Utf8               hashCode   #30 = Utf8               java\/lang\/Class   #31 = Utf8               java\/lang\/CloneNotSupportedException   #32 = Utf8               java\/lang\/IllegalArgumentException   #33 = Utf8               java\/lang\/Integer   #34 = Utf8               java\/lang\/InterruptedException   #35 = Utf8               java\/lang\/Object   #36 = Utf8               java\/lang\/StringBuilder   #37 = Utf8               java\/lang\/Throwable   #38 = Utf8               nanosecond timeout value out of range   #39 = Utf8               notify   #40 = Utf8               notifyAll   #41 = Utf8               registerNatives   #42 = Utf8               timeout value is negative   #43 = Utf8               toHexString   #44 = Utf8               toString   #45 = Utf8               wait   #46 = Class              #30            \/\/ java\/lang\/Class   #47 = Class              #31            \/\/ java\/lang\/CloneNotSupportedException   #48 = Class              #32            \/\/ java\/lang\/IllegalArgumentException   #49 = Class              #33            \/\/ java\/lang\/Integer   #50 = Class              #34            \/\/ java\/lang\/InterruptedException   #51 = Class              #35            \/\/ java\/lang\/Object   #52 = Class              #36            \/\/ java\/lang\/StringBuilder   #53 = Class              #37            \/\/ java\/lang\/Throwable   #54 = Utf8               ()Ljava\/lang\/Class;   #55 = Utf8               ()Ljava\/lang\/Class&lt;*>;   #56 = Utf8               (Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;   #57 = NameAndType        #29:#5         \/\/ hashCode:()I   #58 = NameAndType        #15:#8         \/\/ \"&lt;init>\":()V   #59 = NameAndType        #41:#8         \/\/ registerNatives:()V   #60 = NameAndType        #45:#10        \/\/ wait:(J)V   #61 = NameAndType        #27:#54        \/\/ getClass:()Ljava\/lang\/Class;   #62 = NameAndType        #28:#7         \/\/ getName:()Ljava\/lang\/String;   #63 = NameAndType        #44:#7         \/\/ toString:()Ljava\/lang\/String;   #64 = NameAndType        #43:#9         \/\/ toHexString:(I)Ljava\/lang\/String;   #65 = NameAndType        #15:#13        \/\/ \"&lt;init>\":(Ljava\/lang\/String;)V   #66 = NameAndType        #23:#56        \/\/ append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;   #67 = Methodref          #46.#62        \/\/ java\/lang\/Class.getName:()Ljava\/lang\/String;   #68 = Methodref          #48.#65        \/\/ java\/lang\/IllegalArgumentException.\"&lt;init>\":(Ljava\/lang\/String;)V   #69 = Methodref          #49.#64        \/\/ java\/lang\/Integer.toHexString:(I)Ljava\/lang\/String;   #70 = Methodref          #51.#57        \/\/ java\/lang\/Object.hashCode:()I   #71 = Methodref          #51.#59        \/\/ java\/lang\/Object.registerNatives:()V   #72 = Methodref          #51.#60        \/\/ java\/lang\/Object.wait:(J)V   #73 = Methodref          #51.#61        \/\/ java\/lang\/Object.getClass:()Ljava\/lang\/Class;   #74 = Methodref          #52.#58        \/\/ java\/lang\/StringBuilder.\"&lt;init>\":()V   #75 = Methodref          #52.#63        \/\/ java\/lang\/StringBuilder.toString:()Ljava\/lang\/String;   #76 = Methodref          #52.#66        \/\/ java\/lang\/StringBuilder.append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;   #77 = Utf8               Object.java {   public java.lang.Object();     descriptor: ()V     flags: ACC_PUBLIC     Code:       stack=0, locals=1, args_size=1          0: return       LineNumberTable:         line 37: 0    public final native java.lang.Class&lt;?> getClass();     descriptor: ()Ljava\/lang\/Class;     flags: ACC_PUBLIC, ACC_FINAL, ACC_NATIVE     Signature: #55                          \/\/ ()Ljava\/lang\/Class&lt;*>;    public native int hashCode();     descriptor: ()I     flags: ACC_PUBLIC, ACC_NATIVE    public boolean equals(java.lang.Object);     descriptor: (Ljava\/lang\/Object;)Z     flags: ACC_PUBLIC     Code:       stack=2, locals=2, args_size=2          0: aload_0          1: aload_1          2: if_acmpne     9          5: iconst_1          6: goto          10          9: iconst_0         10: ireturn       StackMapTable: number_of_entries = 2         frame_type = 9 \/* same *\/         frame_type = 64 \/* same_locals_1_stack_item *\/           stack = [ int ]       LineNumberTable:         line 149: 0    protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;     descriptor: ()Ljava\/lang\/Object;     flags: ACC_PROTECTED, ACC_NATIVE     Exceptions:       throws java.lang.CloneNotSupportedException    public java.lang.String toString();     descriptor: ()Ljava\/lang\/String;     flags: ACC_PUBLIC     Code:       stack=2, locals=1, args_size=1          0: new           #52                 \/\/ class java\/lang\/StringBuilder          3: dup          4: invokespecial #74                 \/\/ Method java\/lang\/StringBuilder.\"&lt;init>\":()V          7: aload_0          8: invokevirtual #73                 \/\/ Method getClass:()Ljava\/lang\/Class;         11: invokevirtual #67                 \/\/ Method java\/lang\/Class.getName:()Ljava\/lang\/String;         14:<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-390298","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/390298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=390298"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/390298\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=390298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=390298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=390298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}