变量类型识别有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 MapgetType(Object o)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", o.getClass().getSimpleName());
typeInfo.put("描述", "引用类型");
return typeInfo;
}
public static MapgetType(int i)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", "int");
typeInfo.put("描述", "整形");
return typeInfo;
弊胡 }
public static MapgetType(long l)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", "long");
typeInfo.put("描述", "长整型");
return typeInfo;
}
public static MapgetType(boolean b)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", "boolean");
typeInfo.put("描述", "布尔类型");
return typeInfo;
}
public static MapgetType(char b)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", "char");
typeInfo.put("描述", "字符");
return typeInfo;
}
public static MapgetType(float f)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", "float");
typeInfo.put("描述", "单精度浮点型");
return typeInfo;
}
public static MapgetType(double d)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", "double");
typeInfo.put("描述", "双精度浮点型");
return typeInfo;
}
public static MapgetType(String s)
{
MaptypeInfo=new HashMap ();
typeInfo.put("类型", "String");
typeInfo.put("描述", "字符串类型");
return typeInfo;
}
}
在后面用反射可以做慧橡出来。每一个实例变量都会有一个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就是你轿碧码要找的类。
看声明变量时规定的类型,如int a;那a 的类型就是扰正int(整穗猛型) float b; 那b就缓族悔是float(双精度浮点型)
举个例子
char a='你'
int b=10;
double c=20.0;
float a=3.34f;
不是很明白你想问此尺渣什么
要想看变量是什么类型直接看前面声明它的关键字困段就行了嘛
就像char a='你'森悄中的a就是一个字符型数据了
object instanceof Object,但不能像javascript中一样用于毕漏李判断手迟原始数据类型,instanceif只用于判断该对象是否为某类搜瞎的对象。