黑马程序员技术交流社区

标题: [L 这里的L代表什么 [打印本页]

作者: 郭彦君    时间: 2013-4-7 17:54
标题: [L 这里的L代表什么
本帖最后由 郭彦君 于 2013-4-7 19:55 编辑
  1. class ReflectionClass{
  2.         public static void main(String [] args){
  3.               String [] arr4 = new String[3];

  4.               System.out.println(arr4.getClass().getName());//[Ljava.lang.String
  5.         }
  6. }
复制代码
打印结果是[Ljava.lang.String
我知道[代表数组的意思,那L代表什么?查文档只有基本数据类型的简写

作者: 曹雨禾    时间: 2013-4-7 18:25
[ 表示一维数组,L代表是引用数据类型的数组~

基本数据类型的每种类型都有自已对应的标识符,就是上面那个图~

"java.lang.String"是数组元素的类型,标识这个数组是String类型的数组。
作者: 奋斗2013    时间: 2013-4-7 18:45
[  表示一维数组,[[ 二维数组…… L  表示是对象类型 .[Ljava.lang.String 可以理解了吧.而java.lang.String  这个就是字符串了
作者: HM马明宇    时间: 2013-4-7 19:08
关于:XX.getClass().getName();
给你getName()方法的源码,看看自己能明白点什么不(你想要的答案 方法注释的举例中就有,别忘了亲,java是开源的,其他的THML样式和看不懂的要学会忽略)
  1. /**
  2.      * Returns the  name of the entity (class, interface, array class,
  3.      * primitive type, or void) represented by this <tt>Class</tt> object,
  4.      * as a <tt>String</tt>.
  5.      *
  6.      * <p> If this class object represents a reference type that is not an
  7.      * array type then the binary name of the class is returned, as specified
  8.      * by the Java Language Specification, Second Edition.
  9.      *
  10.      * <p> If this class object represents a primitive type or void, then the
  11.      * name returned is a <tt>String</tt> equal to the Java language
  12.      * keyword corresponding to the primitive type or void.
  13.      *
  14.      * <p> If this class object represents a class of arrays, then the internal
  15.      * form of the name consists of the name of the element type preceded by
  16.      * one or more '<tt>[</tt>' characters representing the depth of the array
  17.      * nesting.  The encoding of element type names is as follows:
  18.      *
  19.      * <blockquote><table summary="Element types and encodings">
  20.      * <tr><th> Element Type <th> &nbsp;&nbsp;&nbsp; <th> Encoding
  21.      * <tr><td> boolean      <td> &nbsp;&nbsp;&nbsp; <td align=center> Z
  22.      * <tr><td> byte         <td> &nbsp;&nbsp;&nbsp; <td align=center> B
  23.      * <tr><td> char         <td> &nbsp;&nbsp;&nbsp; <td align=center> C
  24.      * <tr><td> class or interface  
  25.      *                       <td> &nbsp;&nbsp;&nbsp; <td align=center> L<i>classname</i>;
  26.      * <tr><td> double       <td> &nbsp;&nbsp;&nbsp; <td align=center> D
  27.      * <tr><td> float        <td> &nbsp;&nbsp;&nbsp; <td align=center> F
  28.      * <tr><td> int          <td> &nbsp;&nbsp;&nbsp; <td align=center> I
  29.      * <tr><td> long         <td> &nbsp;&nbsp;&nbsp; <td align=center> J
  30.      * <tr><td> short        <td> &nbsp;&nbsp;&nbsp; <td align=center> S
  31.      * </table></blockquote>
  32.      *
  33.      * <p> The class or interface name <i>classname</i> is the binary name of
  34.      * the class specified above.
  35.      *
  36.      * <p> Examples:
  37.      * <blockquote><pre>
  38.      * String.class.getName()
  39.      *     returns "java.lang.String"
  40.      * byte.class.getName()
  41.      *     returns "byte"
  42.      * (new Object[3]).getClass().getName()
  43.      *     returns "[Ljava.lang.Object;"
  44.      * (new int[3][4][5][6][7][8][9]).getClass().getName()
  45.      *     returns "[[[[[[[I"
  46.      * </pre></blockquote>
  47.      *
  48.      * @return  the name of the class or interface
  49.      *          represented by this object.
  50.      */
  51.     public String getName() {
  52.         if (name == null)
  53.             name = getName0();
  54.         return name;
  55.     }
复制代码

作者: HM马明宇    时间: 2013-4-7 19:10
对了,这个方法是Class.claass这个特殊类中的方法,你前面的.getClaass()的返回值就是Class类型的,所以你才能在后面.getName()
作者: lyg2013    时间: 2013-4-7 19:35
[  表示一维数组,[[ 二维数组…… L  表示是对象类型 .
你可以可以写个测试类试试
System.out.println("数组"+String[].class);
作者: 郭彦君    时间: 2013-4-7 19:53
谢谢各位大神,搞懂了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2