java学习笔记--基础知识--构造器和重载

类的构造器是用来进行数据初始化的地方。

构造器比较特殊的地方是,它的名字和类名保持一致,且没有返回值(其他方法都是小写字母开头的,如果没有返回值,则将返回值类型设置为void)。

 

构造器的名字固定了,那么我们想要提供多种构造器怎么办呢?

那就需要进行重载了。所谓重载是指函数的方法名 返回值 访问权限等完全相同,不同的只是参数列表。

参数列表的不同包括:

  • 参数个数不同
  • 个数相同但类型不同
  • 参数排列顺序不同(注意,这里的参数类型不能是同一种类型,那样顺序不同就没意义了,因为形参名不参与比较)

 

Java中,如果你不提供任何构造器,会自动生成一个无参构造器。但是,一旦你定义了任何一个构造器,java将不再自动添加无参构造器。

 

当构造器参数是基本类型时,一定要注意了:

private JavaDoc(char a){
		
		System.out.println("I am JavaDoc(char a)");
	}
	
	private JavaDoc(byte a){
		
		System.out.println("I am JavaDoc(byte a)");
	}
	
	private JavaDoc(short a){
		
		System.out.println("I am JavaDoc(short a)");
	}

	private JavaDoc(int a){
		
		System.out.println("I am JavaDoc(int a)");
	}
	
	private JavaDoc(long a){
		
		System.out.println("I am JavaDoc(long a)");
	}
	
	private JavaDoc(float a){
		
		System.out.println("I am JavaDoc(float a)");
	}
	
	private JavaDoc(double a){
		
		System.out.println("I am JavaDoc(double a)");
	}
	
	
	
	public static void main(String[]  args){
		
		new JavaDoc(1);
		new JavaDoc('a');
		new JavaDoc((byte)1);
		new JavaDoc((short)1);
		new JavaDoc((long)1);
		new JavaDoc(1.0);
		new JavaDoc((float)1.0);
		new JavaDoc((double)1.0);
		
	}

输出是:

I am JavaDoc(int a)
I am JavaDoc(char a)
I am JavaDoc(byte a)
I am JavaDoc(short a)
I am JavaDoc(long a)
I am JavaDoc(double a)
I am JavaDoc(float a)
I am JavaDoc(double a)

 

总结一下:

  • 字面量整形值,会被自动提升为int类型
  • 字面量浮点数,会被自动提升为double类型
  • char类型比较特殊,如果能找到参数类型是char的构造器则调用它,否则被提升为整形(可以注掉那个构造器试试)

 

上面的情况是说被传递的值小于形参类型能支持的最大值。  那如果超过了呢? 答案是编译器报错

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值