Javaベースタイプ範囲



 Javaベースタイプ範囲
 
 
import java.util.Set;
import java.util.TreeSet;

public class FoundationalTypes {
	
	private static int index=0;
	private static Set set=new TreeSet();
	
	/**
	 * The infomation of types will be printed
	 * @param className
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws ClassNotFoundException
	 * @throws SecurityException
	 * @throws NoSuchFieldException
	 */
	private void printInfo(String className) 
			throws InstantiationException, IllegalAccessException, ClassNotFoundException, SecurityException, NoSuchFieldException{
		
		Class c=Class.forName(className); 
		
		String MIN_VALUE="";
		String MAX_VALUE="";
		if("java.lang.Character".equals(className)){
			 MIN_VALUE=(int)(java.lang.Character)c.getField("MIN_VALUE").get(c)+"";
			 MAX_VALUE=(int)(java.lang.Character)c.getField("MAX_VALUE").get(c)+"";
		}else{
			 MIN_VALUE=(c.getField("MIN_VALUE").get(c)).toString();
			 MAX_VALUE=(c.getField("MAX_VALUE").get(c)).toString();
		}
		System.out.println((++index)+"、    :"+c.getField("TYPE").get(c)+"      :"+c.getField("SIZE").get(c));
		System.out.println((++index)+"、   :"+c.getName());
		System.out.println((++index)+"、   (MIN_VALUE):"+MIN_VALUE);
		System.out.println((++index)+"、   (MAX_VALUE):"+MAX_VALUE);
		System.out.println();
		
		int k= Integer.valueOf(c.getField("SIZE").get(c).toString());
		
		set.add((k<10?"0"+k:k)+":"+c.getName());
	}
	
	/**
	 * running
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			String[] types={
					"java.lang.Long"
					,"java.lang.Double"
					,"java.lang.Integer"
					,"java.lang.Float"
					,"java.lang.Character"
					,"java.lang.Short"
					,"java.lang.Byte"
//				,"java.lang.Boolean"
			};
			
			for(String name : types){
				new FoundationalTypes().printInfo(name);
			}
			StringBuffer starts=new StringBuffer(" \t\t*");
			System.out.println("08:java.lang.Boolean"+starts);
			
			for(Object obj:set){
				starts.append("*");
				System.out.println(obj.toString()+starts);
			}
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 
実行結果:
 
1、基本タイプ:longバイナリビット数:642、パッケージクラス:java.lang.Long 3、最小値(MIN_VALUE):-922337203685475477580884、最大値(MAX_VALUE):922337203685475807
5、基本タイプ:doubleバイナリビット数:646、包装類:java.lang.Double 7、最小値(MIN_VALUE):4.9 E-3248、最大値(MAX_VALUE):1.797693134862357 E 308
9、基本タイプ:int 2進数:3210、包装類:java.lang.Integer 11、最小値(MIN_VALUE):-217448364812、最大値(MAX_VALUE):2174483647
13、基本タイプ:floatバイナリ数:3214、パッケージクラス:java.lang.Float 15、最小値(MIN_VALUE):1.4 E-4516、最大値(MAX_VALUE):3.4028235 E 38
17、基本タイプ:charバイナリ数:1618、包装類:java.lang.Character 19、最小値(MIN_VALUE):020、最大値(MAX_VALUE):65535
21、基本タイプ:shortバイナリ数:1622、包装類:java.lang.Short 23、最小値(MIN_VALUE):-3276824、最大値(MAX_VALUE):32767
25、基本タイプ:byteバイナリ数:826、パッケージクラス:java.lang.Byte 27、最小値(MIN_VALUE):-12828、最大値(MAX_VALUE):127
 
08:java.lang.Boolean           *08:java.lang.Byte                 **16:java.lang.Character        ***16:java.lang.Short               ****32:java.lang.Float                *****32:java.lang.Integer            ******64:java.lang.Double             *******64:java.lang.Long                ********