Java中怎样判断一个变量是不是属于哪种类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中怎样判断一个变量是不是属于哪种类型相关的知识,希望对你有一定的参考价值。

变量类型识别有3种方法:

1、通过反射拿到变量的类型;

2、instanceof关键字判断;

3、通过java的多态(方法重载)来DIY类型识别。

举例如下:

package com.cxyapi.oo;  
  
/** 类型识别工具测试类 
 * @author cxy @ www.cxyapi.com 
 */  
public class TypeToolsTest  
  
    public static void main(String[] args)  
      
        int i=0;  
        TypeObject to=new TypeObject();  
        //1.反射  
        System.out.println("to的类型:"+to.getClass().getSimpleName());  
        System.out.println(int.class.getSimpleName());  
        System.out.println(Integer.class.getSimpleName());  
        //但是对于一个不确定类型的基本数据类型变量我们没法用反射来获取其类型。  
        System.out.println("----------------------");  
          
        //2.instanceof  
        if(to instanceof TypeObject) System.out.println("to是TypeObject类型的");  
        //但是这种办法貌似也没法确定基本数据类型  
        System.out.println("----------------------");  
          
        //以上两种方式对于对象,引用类型的都很好用,但是对基本数据类型就不那么好用了。  
        //3.通过多态(方法的重载)  
        System.out.println("i是:"+TypeTools.getType(i));  
        System.out.println("to是:"+TypeTools.getType(to));  
        System.out.println("\\"cxyapi\\"是:"+TypeTools.getType("www.cxyapi.com"));  
        //可以看出来 最后一种方式使用多态的方式达到了检测类型(基本类型和引用类型)的目的  
        //除了弥补其他两种方式不能检测基本数据类型的不足在外,还能自己DIY类型信息  
      
  
  
//定义一个类,为了演示引用类型的类型检测  
class TypeObject

自定义的类型识别工具:

package com.cxyapi.oo;  
  
import java.util.HashMap;  
import java.util.Map;  
  
/** 类型识别工具 
 * @author cxy @ www.cxyapi.com 
 */  
public class TypeTools  
  
    //获得类型  
    public static Map<String,String> getType(Object o)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", o.getClass().getSimpleName());  
        typeInfo.put("描述", "引用类型");  
        return typeInfo;  
      
      
    public static Map<String,String> getType(int i)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", "int");  
        typeInfo.put("描述", "整形");  
        return typeInfo;  
      
      
    public static Map<String,String> getType(long l)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", "long");  
        typeInfo.put("描述", "长整型");  
        return typeInfo;  
      
      
    public static Map<String,String> getType(boolean b)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", "boolean");  
        typeInfo.put("描述", "布尔类型");  
        return typeInfo;  
      
      
    public static Map<String,String> getType(char b)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", "char");  
        typeInfo.put("描述", "字符");  
        return typeInfo;  
      
      
    public static Map<String,String> getType(float f)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", "float");  
        typeInfo.put("描述", "单精度浮点型");  
        return typeInfo;  
      
      
    public static Map<String,String> getType(double d)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", "double");  
        typeInfo.put("描述", "双精度浮点型");  
        return typeInfo;  
      
      
    public static Map<String,String> getType(String s)  
      
        Map<String,String> typeInfo=new HashMap<String,String>();  
        typeInfo.put("类型", "String");  
        typeInfo.put("描述", "字符串类型");  
        return typeInfo;  
      
      

参考技术A 在后面用反射可以做出来。每一个实例变量都会有一个getClass()。你调用这个方法就能得出来了。 public static void main(String[] args)
Circle circle = new Circle(1, 2, 3); Class c = circle.getClass();
System.out.println(c);
输出就是class jokking.Circle
其中jokking是我自定义的一个包。Circle就是你要找的类。
参考技术B 看声明变量时规定的类型,如int a;那a 的类型就是int(整型) float b; 那b就是float(双精度浮点型) 参考技术C 举个例子
char a='你'
int b=10;
double c=20.0;
float a=3.34f;
不是很明白你想问什么
要想看变量是什么类型直接看前面声明它的关键字就行了嘛
就像char a='你'中的a就是一个字符型数据了
参考技术D object instanceof Object,但不能像javascript中一样用于判断原始数据类型,instanceif只用于判断该对象是否为某类的对象。

关于JavaScript的变量的数据类型的判断方法

参考技术A 虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number、String、Boolean、Object、Udefined、Null。其中,Object属于复杂数据类型,Object
由无序的键值对组成。其余几种都属于简单数据类型。注意:变量类型首字母大写,而变量值首字母是小写的。

JavaScript不支持自定义类型,所以JavaScript中的所有值都属于这六种类型之一。

要搞清楚一个变量是何种数据类型,就要使用typeof操作符了,注意,尤其要注意的是,typeof是操作符,不是方法,因此,typeof中的字母'o'是小写的。

语法:typeof
temp;
//temp是一个变量,这里可以不加括号,但是为了程序的可读性,最好还是加上括号。
JavaScript
本身可以用它typeof来检测变量的类型,但是有些结果却让人疑惑,例如,数组的类型居然是"Object"。
下面是用typeof对各种数据类型的判断结果
var
myFunction
=
function()

console.log('hello');
;
var
myObject
=

foo
:
'bar'
;
var
myArray
=
[
'a',
'b',
'c'
];
var
myString
=
'hello';
var
myNumber
=
3;
typeof
myFunction;
//
返回
'function'
typeof
myObject;
//
返回
'object'
typeof
myArray;
//
返回
'object'
--
小心哦!
typeof
myString;
//
返回
'string';
typeof
myNumber;
//
返回
'number'
typeof
null;
//
返回
'object'
--
小心哦!
if
(myArray.push
&&
myArray.slice
&&
myArray.join)

//
很可能是一个数组
//
当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

if
(Object.prototype.toString.call(myArray)
===
'[object
Array]')

//
肯定是一个数组!
//
这是判断一个变量是否为数组的最可靠方法

以上是关于Java中怎样判断一个变量是不是属于哪种类型的主要内容,如果未能解决你的问题,请参考以下文章

JAVA怎样判断一个对象的类型

性别角色类型(不是连续变量)在年级上的卡方检验该用哪种?

nodejs中怎么判断一个对象类型

java中的引用数据数据类型是怎样的?

java如何判断某一变量属于什么类型

怎样判断一个类的实例是不是属于一个类对象