java命令 idea配置-快捷键

java

pushd

C:\Users\况祥彬>pushd C:desktop

C:\Users\况祥彬\Desktop>

javac

javac是用来编译.java文件的。命令行下直接输入javac可以看到大量提示信息
javac -d destdir srcFile

其中:1、-d destdir是用来指定存放编译生成的.class文件的路径。(若此选项省略,那么默认在当前目录下生成.class文件,并且没有生成包文件夹;当前目录可以用“.”来表示,即:javac -d . srcFile )

注意:添加-d选项除了可以指定编译生成的.class文件的路径外,最大的区别是可以将源文件首行的package关键字下的包名在当前路径下生成文件夹。

2、srcFile是源文件.java文件的路径。
必须进入到.java文件所在的目录下才能正确执行该文件。
有乱码 错误: 编码GBK的不可映射字符加上 -encoding UTF-8

在这里插入图片描述

javap

javap主要用于帮助开发者深入了解Java编译器的机制,主要选项有:

-c 分解方法代码,即显示每个方法具体的字节码

-public | protected | package | private 用于指定显示哪种级别的类成员

-verbose 指定显示更进一步的详细信息
举例:
源码:

public enum  F {
    APPLE ,BANANA ,WATERMELON ;
    private int value;
    private F() {//默认构造器
        this.value = 0;
    }
    private F(int value) {//带参数的构造器
        this.value = value;
    }
}

先 javac -encoding utf-8 F.java 然后反编译生成的F.class文件

C:\Users\况祥彬\Desktop\coding\code\Test\src\main\java>javap -v F.class

其中会输出完整的编译器在源码基础上做的很多事情。

{
  public static final F APPLE;
    descriptor: LF;
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM

  public static final F BANANA;
    descriptor: LF;
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM

  public static final F WATERMELON;
    descriptor: LF;
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM

  public static F[] values();
    descriptor: ()[LF;
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: getstatic     #1                  // Field $VALUES:[LF;
         3: invokevirtual #2                  // Method "[LF;".clone:()Ljava/lang/Object;
         6: checkcast     #3                  // class "[LF;"
         9: areturn
      LineNumberTable:
        line 1: 0

  public static F valueOf(java.lang.String);
    descriptor: (Ljava/lang/String;)LF;
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         0: ldc           #4                  // class F
         2: aload_0
         3: invokestatic  #5                  // Method java/lang/Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/la
ng/Enum;
         6: checkcast     #4                  // class F
         9: areturn
      LineNumberTable:
        line 1: 0

  static {};
    descriptor: ()V
    flags: ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0

和看的懂的字节码:

 Code:
      stack=4, locals=0, args_size=0
         0: new           #4                  // class F
         3: dup
         4: ldc           #8                  // String APPLE
         6: iconst_0
         7: invokespecial #9                  // Method "<init>":(Ljava/lang/String;I)V
        10: putstatic     #10                 // Field APPLE:LF;
        13: new           #4                  // class F
        16: dup
        17: ldc           #11                 // String BANANA
        19: iconst_1
        20: invokespecial #9                  // Method "<init>":(Ljava/lang/String;I)V
        23: putstatic     #12                 // Field BANANA:LF;
        26: new           #4                  // class F
        29: dup
        30: ldc           #13                 // String WATERMELON
        32: iconst_2
        33: invokespecial #9                  // Method "<init>":(Ljava/lang/String;I)V
        36: putstatic     #14                 // Field WATERMELON:LF;
        39: iconst_3
        40: anewarray     #4                  // class F
        43: dup
        44: iconst_0
        45: getstatic     #10                 // Field APPLE:LF;
        48: aastore
        49: dup
        50: iconst_1
        51: getstatic     #12                 // Field BANANA:LF;
        54: aastore
        55: dup
        56: iconst_2
        57: getstatic     #14                 // Field WATERMELON:LF;
        60: aastore
        61: putstatic     #1                  // Field $VALUES:[LF;
        64: return
      LineNumberTable:
        line 2: 0
        line 1: 39
}

idea

ctrl alt B 进入抽象方法的实现方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值