类 & 对象的创建 & JVM内存分配分析 & 构造方法普通方法&this

类 & 对象的创建 & JVM内存分配分析 & 构造方法普通方法&this

public class Person {
	//成员变量
	String  name;//姓名
	String sex;//性别
	int height;//身高
	int weight;//体重
	
	//方法
	//吃
	public void  eat() {
		System.out.println(name+" 吃饭....");
	}
	//喝
	public void drink() {
		System.out.println(name+" 喝啤酒");
	}
	//写代码
	public void writeCode() {
		System.out.println(name+" 写java代码");
	}
	
}

对象创建

对象的创建过程也被称为对象的实例化过程
语法:类名 标识符 = new 类名();

class Person
{
	//第一部分
	//成员变量:特征【名词】
	//非静态成员变量
	String name;//null
	int age;//0
	char gender;//\u0000

	//第二部分
	//成员方法:行为【动词】
	//非静态成员方法
	public void eat() {
		System.out.println("eating~~~~");
	}
}
//演示对象的创建,跨类进行调用成员方法以及访问成员变量
//测试类:含有main函数得类被称为测试类
public class TestPerson 
{
	public static void main(String[] args) 
	{
		//1.创建对象
		//语法:类名 变量名称  = new  类名();
		Person xiaoMing = new Person();

		//2.调用对象属性
		//语法:对象.
		xiaoMing.name = "小明";
		xiaoMing.age = 10;
		xiaoMing.gender = 'B';
		//3.调用对象方法
		xiaoMing.eat();
	}
}

JVM内存分配分析

程序运行时,操作系统会分配三块主要的内存空间

  • 栈:直接存放基本类型数据,和引用类型的地址
  • 栈空间比较小,存取速度相对较快
  • 先进后出
  • 堆:存放引用类型的实际数据部分
  • 堆空间比较大,存取速度相对较慢
  • 方法区:(静态区、串池(常量池)、代码段),方法区中有一块空间叫串池,用来存放字符串常量,
    在jdk1.8之后常量池作为堆中一部分,方法区的概念弱化。

说明:程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存中,他指向实际的Person对象,而真正的Person对象则存放于堆内存中

构造方法普通方法

构造方法

访问权限修饰符 类名(参数列表) {
	//方法体
}

普通方法:

访问权限修饰符 其他的修饰符 返回值类型 方法名(参数列表) {

}

注意:

a.构造方法没有返回值类型,构造方法是在实例化对象的过程中自动调用的

b.如果不写构造方法,系统会默认为我们提供一个无参的构造方法,如果添加了构造方法,系统不再提供默认的构造方法。

构造方法和普通方法的区别

a.构造方法是在创建对象的过程中自动调用的,普通方法只能手动进行调用

b.构造方法没有返回值类型【注意区别返回值void】,普通方法的返回值类型要么是确定的类型,要么为void

c.系统会默认为我们提供一个无参的构造方法,普通方法只能手动添加

d.构造方法的方法名称必须和对应的类名保持一致

e.构造方法在创建对象的过程中就会执行,而且每个对象只执行一次,对于普通方法而言,只有在需要使用的时候才被执行,并且一个对象可以调用多次
//演示构造方法的使用
public class Test 
{
	public static void main(String[] args) 
	{
		//创建动物
		Animal dog=new Animal();
		//使用属性
		dog.color="黄色";
		dog.nickname="旺财";
		dog.age=3;
		//使用方法
		dog.eat();
	}
}

public class Animal {
	//颜色
	String color;
	//昵称
	String nickname;
	//年龄
	int age;
	//默认构造方法
	public Animal() {
		
	}
	
	//吃
	public void eat() {
		System.out.println(nickname+"大口大口吃东西");
	}
}

构造方法重载

默认构造方法:只能创建对象,不能做任何初始化操作,如果实现创建对象时初始化属性,需要添加带参的构造方法,初始化对象的属性。如果一个类中有多个构造方法,这就是构造方法重载。

//演示构造方法的重载
//测试类
public class Test 
{
	public static void main(String[] args) 
	{
		//直接赋值
		/*
		Dog maomao = new Dog();
		maomao.name = "毛毛";
		maomao.age = 3;

		maomao.lookHome();
		*/

		//通过构造方法赋值
		Dog dahuang = new Dog("大黄",5);
		dahuang.lookHome();
	}
}

//实体类
public class Dog
{
	//成员变量
	String name;
	int age;

	//构造方法
	public Dog() {}
	//有参的构造方法,参数一般设置为和成员变量有关的参数
	public Dog(String n,int a) {
		//给成员变量赋值
		name = n;
		age = a;
	}
	//成员方法
	public void lookHome() {
		System.out.println(name + "看家");
	}
}

this

this:    表示当前对象的引用。
this.属性     访问本类的成员属性    作用:为了区分成员变量和形参变量名一样的情况
this.方法     访问本类的成员方法
this()(了解)

访问本类中的其他构造方法

注意:

	a.必须出现在构造方法中

	b.访问的是除了当前构造方法之外的其他构造方法

	c.具体访问的是哪个构造方法,取决于所传的参数

	d.只能书写在构造方法的第一条语句

	e.this()在同一个构造方法中只能出现一次
public class Test 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}
public class Dog
{
	 String name;
	 int age;
	 int num;
	 String hobby;

	//提高代码的可读性,可维护性
	//构造方法
	public Dog() {
	}
	public Dog(String name) {
		this.name = name;
	}
	public Dog(int age) {
		this.age = age;
	}

	public Dog(String name,int age) {
		this.name = name;
		this.age = age;
	}
	public Dog(String name,int age,int num,String hobby) {
		this(name,age);
		this.num= num;
		this.hobby = hobby;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值