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实例的更多相关文章

  1. Java中9大内置基本数据类型Class实例和数组的Class实例(转载)

    https://www.jianshu.com/p/58976c8bf1e1

  2. Java中的8种基本数据类型

    JAVA中的8种基本数据类型:byte short int long float double char boolean 特别说明: 1)char类型占2个字节,可以表示汉字.汉字和英文字符都占2个字 ...

  3. java 入门之八大内置基本类型

    本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ...

  4. JSP中9大内置对象类型

    JSP中九大内置对象为: request            请求对象                 类型 javax.servlet.ServletRequest        作用域 Requ ...

  5. core java 1~4(HelloWorld & 标识符|关键字|数据类型 & 表达式|流程控制 & 数组)

    MODULE 1 Java的编译和运行----------------------------编译:javac -d bin src\HelloWorld.java -d:指定编译后的class 文件 ...

  6. Java中方法的定义与使用,以及对数组的初步了解。

    方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...

  7. java中static、this、super、final用途、用法及实例

    一.static 请先看下面这段程序: public class Hello { public static void main(String[] args){ //(1) System.out.pr ...

  8. Java中存储金额用什么数据类型?

    转自:https://blog.csdn.net/u011277123/article/details/70214630 很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数 ...

  9. java中 引用传递、值传递的理解(数组,自定义类,基本数据类型,String类)

    代码部分: public static void main(String[] args) { testInt(); testString(); testArray(); testX(); } publ ...

随机推荐

  1. R语言 数据类型

    R语言数据类型 通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息. 变量只是保留值的存储位置. 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们. 您可能想存储各种 ...

  2. js条件语句,用if...else if....else方程ax2+bx+c=0一元二次方程。求根

    if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if... ...

  3. 56 Marvin: 一个支持GPU加速、且不依赖其他库(除cuda和cudnn)的轻量化多维深度学习(deep learning)框架介绍

    0 引言 Marvin是普林斯顿视觉实验室(PrincetonVision)于2015年提出的轻量化GPU加速的多维深度学习网络框架.该框架采用纯c/c++编写,除了cuda和cudnn以外,不依赖其 ...

  4. ggplot2在一幅图上画两条曲线

    ggplot2在一幅图上画两条曲线 print(data)后的结果是 C BROWN.P MI.P 0 0.9216 0.9282 30 0.9240 0.9282 100 0.9255 0.9282 ...

  5. RouterOS视频教程下载

    下载信息 名称:RouterOS视频教程下载 格式:MP4 版本:V1.0 https://pan.baidu.com/s/1skU6oW1 下载密码:nb97

  6. 拾遗:Git 基础

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/ 一.参数配置 $ git con ...

  7. 使用nginx访问本地电脑的目录文件

    cat /usr/local/opt/nginx/ //nginx路径 cd /usr/local/opt/nginx/html //localhost的指向 ln -s ~/Documents do ...

  8. js只能输入数字和小数点

    1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...

  9. 2019-8-27-静默命令行安装-Visual-C++-发行包

    title author date CreateTime categories 静默命令行安装 Visual C++ 发行包 lindexi 2019-8-27 15:39:3 +0800 2019- ...

  10. asprise-ocr-api-sample 高价收破解版64 32位

    asprise-ocr-api-sample验证码 高价收破解版64 32位 Reflector 8.5 打开自己的C#代码  完全100%的反编译了