前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM中的[Ljava.lang.Object; 究竟是什么意思?

JVM中的[Ljava.lang.Object; 究竟是什么意思?

作者头像
ImportSource
发布2018-07-25 17:11:37
5.3K0
发布2018-07-25 17:11:37
举报
文章被收录于专栏:ImportSource

你是不是经常看到控制台输出如题的日志,而似懂非懂的。

今天我们就来介绍下这些L啦究竟是些什么东东。

比如说我们经常看到这样的日志:

[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

先来简单的说一下, "["表示数组,后面跟着的是具体的类型。

这里我们再给出一个典型的例子来看看:

(IDLjava/lang/Thread;)Ljava/lang/Object;

这就是表示一个方法,方法有三个参数,类型分别为I,D,L。返回值类型为L。然后L类型要跟具体的类型,然后以"/"替换包名的".",L类型的要以“;”分号结尾。

使用javap查看

上代码,我们新建一个S类,然后通过javap就可以看到具体的类型了:

代码语言:javascript
复制
package com.importsource.datastructure;

class S {
  Object  hello(int i, double d, long j, Thread t ) {
   return new Object();
  }
}

执行命令javac S.java,然后执行javap -v S.class,得到如下输出:

Classfile /Users/hezhuofan/Documents/importsource_dev/concurrency-samples/src/main/java/com/importsource/datastructure/S.class Last modified May 28, 2018; size 305 bytes MD5 checksum bc36118f7847e5598c10ef406f539275 Compiled from "S.java" class com.importsource.datastructure.S minor version: 0 major version: 52 flags: ACC_SUPER Constant pool: #1 = Methodref #2.#12 // java/lang/Object."<init>":()V #2 = Class #13 // java/lang/Object #3 = Class #14 // com/importsource/datastructure/S #4 = Utf8 <init> #5 = Utf8 ()V #6 = Utf8 Code #7 = Utf8 LineNumberTable #8 = Utf8 hello #9 = Utf8 (IDJLjava/lang/Thread;)Ljava/lang/Object; #10 = Utf8 SourceFile #11 = Utf8 S.java #12 = NameAndType #4:#5 // "<init>":()V #13 = Utf8 java/lang/Object #14 = Utf8 com/importsource/datastructure/S { com.importsource.datastructure.S(); descriptor: ()V flags: Code: stack=1, locals=1, args_size=1 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return LineNumberTable: line 3: 0 java.lang.Object hello(int, double, long, java.lang.Thread); descriptor: (IDJLjava/lang/Thread;)Ljava/lang/Object; flags: Code: stack=2, locals=7, args_size=5 0: new #2 // class java/lang/Object 3: dup 4: invokespecial #1 // Method java/lang/Object."<init>":()V 7: areturn LineNumberTable: line 5: 0 } SourceFile: "S.java"

Field Type对应表

大多是基本类型的首字母大写,其中有几个比较特殊:J 、L和Z。这三个需要特别记忆一下:J表示long;L表示对象;Z表示boolean。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ImportSource 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档