史上最全讲解: JAVA中的返回值类型,构造器 ,关键字this与static

史上最全讲解: JAVA中的参数与返回值类型,构造器 ,关键字this与static

返回值类型

方法的参数|返回值都可以为任意类型,可以是基本数据类型,也可以是自定义的引用数据类型.

package com.shsxt.oop01;
//蛋糕师
//注意: 方法的参数|返回值都可以为任意类型,包括自定义的引用数据类型
public class Caker {
	public String name;
	//制作蛋糕
	//返回值: 有  返回一个蛋糕		参数:蛋糕的细节  
	public Cake makeCake(int size,String taste,double money){
		//创建蛋糕对象  
		Cake cake=new Cake();
		cake.size=size;
		cake.taste=taste;
		cake.money=money;
		return cake;
	}
}

构造器

定义

  构造器也称构造函数或者构造方法,是一个特殊的方法,特殊在没有返回值类型.
new关键字在创建对象时会做一下事情:
1.在堆中开辟空间,对象的成员属性会被加载到堆内存中并赋默认值.
2.调用构造器初始化信息
3,将地址返回给引用.
构造器的作用是为对象初始化信息用的,不可以创建对象.跟随new一起使用
格式:
  修饰符 类名(参数列表){
    …
  }

注意事项

1.构造器不需要返回值类型(包括void)
2.构造器的名字必须与类名保持一致.
3.可以使用return结束方法
4.构造器可以重载
5.如果没有定义构造器,编译器会默认提供一个空构造,如果定义了构造器则编译器不会再提供任何构造器

package com.shsxt.constructor02;

public class Constructor{
	public static void main(String[] args){
		Teacher teacher = new Teacher("aaa", "bbb");
		teacher.teach();
	}
	
}
class Teacher{
	public String name;
	public String gender;
	public String subject;
	public Teacher(){
		
	}
	public Teacher(String teacherName){
		name = teacherName;
		
	}
	public Teacher(String teacherName,String teacherGender){
		this(teacherName);
		gender = teacherGender;
		
	}
	public Teacher(String teacherName,String teacherGender,String teacherSubject){
		this(teacherName, teacherGender);
		subject = teacherSubject;
		
	}
	public void teach(){
		System.out.println("我会教书"+name+gender+subject);
	}
}

在这里插入图片描述

this 关键字

定义

this关键字指代当前new出来的对象,动态的执行不同的对象.(必须用在方法中!!!)

作用

  • 构造器的首行调用本类中的其他构造器
    this(参数列表);
    注意:必须用在构造器首行才可以
    构造器之间不能相互调用
  • 区分同名变量
    this存储对象的地址值,this指代当前调用成员方法(使用成员变量)的对象.
    [注意]
    如果出现同名情况,即参数名与成员变量名相同,想要指代成员变量必须使用this;如果不存在同名可以不使用this.
    构造器中的this 指代当前new出来的对象

在方法中,如果出现局部变量与成员变量同名的问题,就近原则默认使用局部变量.

package com.shsxt.this03;
public class ThisTest {
   public static void main(String[] args){
   	Teacher teacher = new Teacher("aaa", "bbb");
   	teacher.teach();
   }
   
}
class Teacher{
   public String name;
   public String gender;
   public String subject;
   public Teacher(){
   	
   }
   public Teacher(String name){
   	this.name = name;
   	
   }
   public Teacher(String name,String gender){
   	this(name);
   	this.gender = gender;
   	
   }
   public Teacher(String name,String gender,String subject){
   	this(name, gender);
   	this.subject = subject;
   	
   }
   public void teach(){
   	System.out.println("我会教书"+name+gender+subject);
   }
}

在这里插入图片描述

Static关键字

静态方法中只能修饰静态内容;即被static修饰的方法只能使用被static修饰的内容,要使用成员的内容只能new对象

定义

静态的,只能修饰成员,不能修饰局部
修饰变量:被称为静态变量或者类变量.
修饰方法:被称为静态方法或者类方法

使用方式

可以通过类使用也可以通过对象使用
1.通过类使用
类名.静态变量名;
类名.静态方法名;
2.通过对象使用
对象名.静态变量名;
对象名.静态方法名

注意

1.成员都是属于对象的,静态的内容都是属于类的.
2.静态的变量在方法区中的静态区存在,是唯一的,所有根据该类创建的对象都具有,在类第一次加载后就初始化了.
3.成员的变量是存在于对象之中的,跟着对象在变化,有一个对象就有一个成员变量

4. this与static不可以同时使用.,因为this作用于对象的,static作用于类.
5. 静态的内容中只能直接使用静态的内容,不可以直接使用成员的内容,但是可以通过对象使用.
6. 成员内容中即可以直接使用静态的也可以直接使用成员的.

package com.shsxt.constructor02;

public class Practice01 {//类名.静态方法名;类名.静态变量 在本类中可省略
   int age = 1;
   static String gender = "男";
   public static void main(String[] args){
   	Teacher01 teacher = new Teacher01("11", "22");
   	teacher.teach();
   	System.out.println(new Practice01().age);
   	System.out.println(gender);
   	new Practice01().test();//静态方法中调用成员方法,必须使用创建对象.成员方法名的形式
   	Practice01.test2();//静态方法中使用静态方法,可以直接使用静态方法名(在同一类中),或者类名.静态方法名的形式
   }
   //成员方法中 使用成员变量可以直接使用成员变量名age 也可以使用new Practice01().age 或者this.age
   //成员方法中使用静态变量,可以直接使用gender,也可以Practice01.gender
   public void test(){
   	System.out.println(age);
   	System.out.println(Practice01.gender);
   	
   }
   //静态方法中 使用成员变量不可以直接使用成员变量名age 必须使用new Practice01().age,也不可以使用this.age;
   //静态方法中使用静态变量,可以直接使用gender,也可以Practice01.gender
   public static void test2(){
   	System.out.println(new Practice01().age);
   	System.out.println(gender);
   }
}
class Teacher01{
   public String name;
   public String gender;
   public String subject;
   public Teacher01(){
   	
   }
   public Teacher01(String name){
   	this.name = name;
   }
   public Teacher01(String name, String gender){
   	this(name);
   	this.gender = gender;
   }
   public Teacher01(String name, String gender, String subject){
   	this(name, gender);
   	this.subject = subject;
   }
   public void teach(){
   	System.out.println("我会教书"+name+gender+subject);
   }
}

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值