码迷,mamicode.com
首页 > 编程语言 > 详细

java重载中的基本类型的自动类型转换

时间:2015-02-06 20:25:14      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

  1.  当传递到函数的参数的数据类型表示的范围小于函数形参的参数类型遵循如下原则 :
    1. char类型比较特殊, 直接转换为int:  char ->int ->long->float->double
    2. 其他的基本数据类型都遵循这个规则: byte->short->int->long->float->double
    3. 如果是整型常量: int->long->float->double
    4. 浮点型常量: 比如0.5等没有明确指出是何种类型的常量. 直接处理成double类型, 而不是float
    5. 如果希望是某一种明确的类型, 最后显示地给出, 比如0.5F,0.5f.0.5D,1L等等.
  2.  当传递导函数的参数类型表示的范围大于函数形参的参数类型, 那么就必须显示地进行窄化转换
package BaseType;

public class OverloadTest 
{
	void f1(byte x){	System.out.println("f1(byte)") ;	}
	void f1(char x){	System.out.println("f1(char)") ;	}
	void f1(short x){	System.out.println("f1(short)") ;	}
	void f1(int x) {	System.out.println("f1(int)") ;	}
	void f1(float x){	System.out.println("f1(float)") ;	}
	void f1(double x){	System.out.println("f1(double)") ;	}
	void f1(long x){	System.out.println("f1(long)") ;	}

	void f2(byte x){	System.out.println("f2(byte)") ;	}
	void f2(short x){	System.out.println("f2(short)") ;	}
	void f2(int x) {	System.out.println("f2(int)") ;	}
	void f2(float x){	System.out.println("f2(float)") ;	}
	void f2(double x){	System.out.println("f2(double)") ;	}
	void f2(long x){	System.out.println("f2(long)") ;	}

	void f3(short x){	System.out.println("f3(short)") ;	}
	void f3(int x) {	System.out.println("f3(int)") ;	}
	void f3(float x){	System.out.println("f3(float)") ;	}
	void f3(double x){	System.out.println("f3(double)") ;	}
	void f3(long x){	System.out.println("f3(long)") ;	}

	void f4(int x) {	System.out.println("f4(int)") ;	}
	void f4(float x){	System.out.println("f4(float)") ;	}
	void f4(double x){	System.out.println("f4(double)") ;	}
	void f4(long x){	System.out.println("f4(long)") ;	}

	void f5(float x){	System.out.println("f5(float)") ;	}
	void f5(double x){	System.out.println("f5(double)") ;	}
	void f5(long x){	System.out.println("f5(long)") ;	}

	void f6(float x){	System.out.println("f6(float)") ;	}
	void f6(double x){	System.out.println("f6(double)") ;	}
	
	void f7(double x){  System.out.println("f6(double)") ;  }
	
	void f8(char x){	System.out.println("f8(char)") ;	}
	void f8(byte x){	System.out.println("f8(byte)") ;	}
	void f8(int x) {	System.out.println("f8(int)") ;	}
	void f8(float x){	System.out.println("f8(float)") ;	}
	void f8(double x){	System.out.println("f8(double)") ;	}
	void f8(long x){	System.out.println("f8(long)") ;	}
	
	void f9(float x){System.out.println("f9 float");}
	
	void testConstVal()
	{
		System.out.println("5: ") ;
		f1(5) ;	f2(5) ;	f3(5) ;	f4(5) ;	f5(5) ;	f6(5) ;	f7(5) ;
		System.out.println() ;
	}
	
	void testChar()
	{
		char x = ‘x‘ ;
		System.out.println("char x: ") ;
		f1(x) ;	f2(x) ;	f3(x) ;	f4(x) ;	f5(x) ;	f6(x) ;	f7(x) ;
		System.out.println() ;	
	}
	
	void testByte()
	{
		byte x = 0 ;
		System.out.println("byte x: ") ;
		f1(x) ;	f2(x) ;	f3(x) ;	f4(x) ;	f5(x) ;	f6(x) ;	f7(x) ;
		System.out.println() ;	
	}
	
	void testShort()
	{
		short x = 0 ;
		System.out.println("short x: ") ;
		f1(x) ;	f2(x) ;	f3(x) ;	f4(x) ;	f5(x) ;	f6(x) ;	f7(x) ;
		System.out.println() ;	
	}
	
	void testInt()
	{
		int x = 0 ;
		System.out.println("int x: ") ;
		f1(x) ;	f2(x) ;	f3(x) ;	f4(x) ;	f5(x) ;	f6(x) ;	f7(x) ;
		System.out.println() ;	
	}
	
	void testLong()
	{
		long x = 0 ;
		System.out.println("long x: ") ;
		f1(x) ;	f2(x) ;	f3(x) ;	f4(x) ;	f5(x) ;	f6(x) ;	f7(x) ;
		System.out.println() ;	
	}
	
	void testFloat()
	{
		float x = 0 ;
		System.out.println("float x: ") ;
		f1(x) ;	f2(x) ;	f3(x) ;	f4(x) ;	f5(x) ;	f6(x) ;	f7(x) ;
		System.out.println() ;	
	}
	
	void testDouble()
	{
		double x = 0 ;
		System.out.println("double x: ") ;
		f1(x) ;	f2(x) ;	f3(x) ;	f4(x) ;	f5(x) ;	f6(x) ;	f7(x) ;
		System.out.println() ;	
	}
	
	public static void main(String args[])
	{
		OverloadTest t = new OverloadTest() ;
		t.testConstVal();
		t.testByte();
		t.testChar();
		t.testShort();
		t.testInt();
		t.testLong();
		t.testFloat();
		t.testDouble();
		
		double d = 0.9d ;
	  //  t.f9(d) ; 这么写是错误的
		t.f9((float)d) ; //必须显示地进行窄化转换
	}

}

  //代码来自《thingking in java》。

  //《thinking in java》笔记

java重载中的基本类型的自动类型转换

标签:

原文地址:http://www.cnblogs.com/iamzhoug37/p/4277789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!