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
<span class="hljs-built_in">String</span>[][] s4 = {{<span class="hljs-string">"1"</span>,<span class="hljs-string">"2"</span>}};
Class zz = s4.getClass();
System.out.println(s2.getClass() == zz);<span class="hljs-comment">//false</span>
Class zz1 = i.getClass();
System.out.println(s2.getClass() == zz1);<span class="hljs-comment">//false </span>
}
</pre></code>
原文地址:https://blog.csdn.net/spy19881201/article/details/23995267
Java中9大内置基本数据类型Class实例和数组的Class实例的更多相关文章
- Java中9大内置基本数据类型Class实例和数组的Class实例(转载)
https://www.jianshu.com/p/58976c8bf1e1
- Java中的8种基本数据类型
JAVA中的8种基本数据类型:byte short int long float double char boolean 特别说明: 1)char类型占2个字节,可以表示汉字.汉字和英文字符都占2个字 ...
- java 入门之八大内置基本类型
本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ...
- JSP中9大内置对象类型
JSP中九大内置对象为: request 请求对象 类型 javax.servlet.ServletRequest 作用域 Requ ...
- core java 1~4(HelloWorld & 标识符|关键字|数据类型 & 表达式|流程控制 & 数组)
MODULE 1 Java的编译和运行----------------------------编译:javac -d bin src\HelloWorld.java -d:指定编译后的class 文件 ...
- Java中方法的定义与使用,以及对数组的初步了解。
方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...
- java中static、this、super、final用途、用法及实例
一.static 请先看下面这段程序: public class Hello { public static void main(String[] args){ //(1) System.out.pr ...
- Java中存储金额用什么数据类型?
转自:https://blog.csdn.net/u011277123/article/details/70214630 很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数 ...
- java中 引用传递、值传递的理解(数组,自定义类,基本数据类型,String类)
代码部分: public static void main(String[] args) { testInt(); testString(); testArray(); testX(); } publ ...
随机推荐
- sed 一 文本处理工具
简介 sed 采用的是流编辑模式: 最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据. sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行 ...
- cookie中文转码
//cookie中文转码 var GB2312UnicodeConverter = { //转码 ToUnicode: function(str) { //中文转unicode return esca ...
- bzoj1293题解
[题意分析] 给你一条有n个点的数轴,每个点属于一个种类,总共有k个种类.求一段最短的线段,使对于每个种类,这段线段上有至少一个点属于它. [算法分析] 1.对于50%的数据,N≤10000 对于每一 ...
- python入门 集合(四)
集合 集合是一个无序的不重复元素序列,可以迭代,也可以修改.集合迭代的时候元素是随机的. 集合通常用来 membership testing, 去重, 也可以用来求交集并集补集. 介绍一下如何创建集合 ...
- Python爬虫-《神雕侠侣》
Python3.5 爬取<神雕侠侣>http://www.kanunu8.com/wuxia/201102/1610.html 武侠迷,所以喜欢爬取武侠小说 #!/usr/bin/pyth ...
- ionic-CSS:ionic Range
ylbtech-ionic-CSS:ionic Range 1.返回顶部 1. ionic Range ionic Range 是一个滑块控件,ionic 为 Range 提供了很多种默认的样式.而且 ...
- docker网络原理
以下内容引用Docker -- 从入门到实践 当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂 ...
- CodeForces1249B1/B2-Books Exchange-dfs-一般搜索+记忆化搜索
一般搜索 注意:一般定义成void Books Exchange (easy version) CodeForces - 1249B2 The only difference between eas ...
- Android笔记之ExpandableListView(悬浮吸顶Demo)
参考链接 ExpandableListView中item的定位问题 - RELY_ON_YOURSELF的博客 - CSDN博客(感觉写得很好,讲到了组位置.子位置及原始位置之间的转换) how to ...
- docker集群管理之kubernetes
一.简介 kubernetes又叫做k8s,是Google开发的一款开源的docker集群管理工具,在这里对它的“发家史”,我不做过多的阐述,有时间大家可以自己去百度一下: 下面我要讲的就是容易混淆的 ...