黑马程序员技术交流社区
标题:
[L 这里的L代表什么
[打印本页]
作者:
郭彦君
时间:
2013-4-7 17:54
标题:
[L 这里的L代表什么
本帖最后由 郭彦君 于 2013-4-7 19:55 编辑
class ReflectionClass{
public static void main(String [] args){
String [] arr4 = new String[3];
System.out.println(arr4.getClass().getName());//[Ljava.lang.String
}
}
复制代码
打印结果是[L
java.lang.String
我知道[代表数组的意思,那L代表什么?查文档只有基本数据类型的简写
未命名.jpg
(10.54 KB, 下载次数: 31)
下载附件
2013-4-7 17:54 上传
作者:
曹雨禾
时间:
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样式和看不懂的要学会忽略)
/**
* Returns the name of the entity (class, interface, array class,
* primitive type, or void) represented by this <tt>Class</tt> object,
* as a <tt>String</tt>.
*
* <p> If this class object represents a reference type that is not an
* array type then the binary name of the class is returned, as specified
* by the Java Language Specification, Second Edition.
*
* <p> If this class object represents a primitive type or void, then the
* name returned is a <tt>String</tt> equal to the Java language
* keyword corresponding to the primitive type or void.
*
* <p> If this class object represents a class of arrays, then the internal
* form of the name consists of the name of the element type preceded by
* one or more '<tt>[</tt>' characters representing the depth of the array
* nesting. The encoding of element type names is as follows:
*
* <blockquote><table summary="Element types and encodings">
* <tr><th> Element Type <th> <th> Encoding
* <tr><td> boolean <td> <td align=center> Z
* <tr><td> byte <td> <td align=center> B
* <tr><td> char <td> <td align=center> C
* <tr><td> class or interface
* <td> <td align=center> L<i>classname</i>;
* <tr><td> double <td> <td align=center> D
* <tr><td> float <td> <td align=center> F
* <tr><td> int <td> <td align=center> I
* <tr><td> long <td> <td align=center> J
* <tr><td> short <td> <td align=center> S
* </table></blockquote>
*
* <p> The class or interface name <i>classname</i> is the binary name of
* the class specified above.
*
* <p> Examples:
* <blockquote><pre>
* String.class.getName()
* returns "java.lang.String"
* byte.class.getName()
* returns "byte"
* (new Object[3]).getClass().getName()
* returns "[Ljava.lang.Object;"
* (new int[3][4][5][6][7][8][9]).getClass().getName()
* returns "[[[[[[[I"
* </pre></blockquote>
*
* @return the name of the class or interface
* represented by this object.
*/
public String getName() {
if (name == null)
name = getName0();
return name;
}
复制代码
作者:
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