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

 我来答
千锋教育
2016-07-27 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

变量类型识别有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;  
    }  
      
}
匿名用户
2013-03-27
展开全部
在后面用反射可以做出来。每一个实例变量都会有一个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就是你要找的类。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anliunian
2013-03-26
知道答主
回答量:33
采纳率:0%
帮助的人:21.8万
展开全部
看声明变量时规定的类型,如int a;那a 的类型就是int(整型) float b; 那b就是float(双精度浮点型)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
满阶梧桐月明中
2013-03-26 · TA获得超过289个赞
知道小有建树答主
回答量:358
采纳率:0%
帮助的人:150万
展开全部
举个例子
char a='你'
int b=10;
double c=20.0;
float a=3.34f;
不是很明白你想问什么
要想看变量是什么类型直接看前面声明它的关键字就行了嘛
就像char a='你'中的a就是一个字符型数据了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友53c5a33
推荐于2018-02-27 · 超过20用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:51.9万
展开全部
object instanceof Object,但不能像javascript中一样用于判断原始数据类型,instanceif只用于判断该对象是否为某类的对象。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式