Java中9大内置基本数据类型Class实例和数组的Class实例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

1、Java中9大内置几本数据类型:
对于对象来说,可以直接使用对象.getClass()或者Class.forName(className);类名.class都可以获取Class实例.
但是我们的基本数据类型,就没有类的权限定名,也没有getClass方法.
问题:那么如何使用Class类来表示基本数据类型的Class实例?
byte,short,int,long,char,float,double,boolean,void关键字
上述8种类型和void关键字,都有class属性.
表示int的Class对象: Class clz = int.class;
表示boolean的Class对象: Class clz = boolean.class;
表示void的Class对象:Class clz = void.class;
所有的数据类型都有class属性,表示都是Class对象.
思考:
int的包装类是Integer
Integer.class ==?== int.class 相等吗????
结果是false,说明是两份字节码.

Integer 和int是同一种数据类型吗? 不是

但是在八大基本数据类型的包装类中都有一个常量:TYPE,
TYPE表示的是该包装类对应的基本数据类型的Class实例.
如:<pre><code>
Integer.TYPE----->int.class

Integer.TYPE==int.class;//YES

Integer.TYPE == Integer.class;//ERROR</pre></code>
摘自jdk源码:基本数据类型包装类TYPE的实现。


 /** The {@code Class} instance representing the primitive type
 * {@code int}.
 *
 * @since   JDK1.1
 */
public static final Class<Integer>  TYPE = (Class<Integer>) Class.getPrimitiveClass("int");

 /** Return the Virtual Machine's Class object for the named
 * primitive type.
 */
static native Class getPrimitiveClass(String name);

2、数组类型的Class实例
每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象(摘自JDK原话)。
数组的Class实例:
String[] sArr1 ={"A","C"};
String[] sArr2 = {};
String[][] sArr = {};
int[] sArr = {};
表示数组的Class实例:
String[] sArr1 = {"A","C"};
Class clz = String[].class;//此时clz表示就是一个String类型的一位数组类型

所有具有相同元素类型和维数的数组才共享同一份字节码(Class对象);
注意:和数组中的元素没有一点关系.

eg:<pre><code>
public static void main(String[] args) {


    String[] s1 = {};
    String[] s2 = {"A"};
    String[] s3 = {"A","b"};
    int[] i ={};    
    System.out.println(s1.getClass() == s2.getClass());//true
    System.out.println(s1.getClass() == s3.getClass());//true
    System.out.println(s2.getClass() == s3.getClass());//true
    
    String[][] s4 = {{"1","2"}};
    Class zz = s4.getClass();
    System.out.println(s2.getClass() == zz);//false
    Class zz1 = i.getClass();
    System.out.println(s2.getClass() == zz1);//false    
}


作者:老勇
链接:https://www.jianshu.com/p/58976c8bf1e1
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值