Java 首秀-类与对象

关于在 java 中 类与对象,我们先看这么一行代码:

Person person = new Person("张三");

有人会说,这里的person是一个对象,是Person类的一个实例。

也有人会说,这里的person并不是真正的对象,而是指向所创建的对象的引用。

到底哪种说法是对的?我们先不急着纠结哪种说法是对的,再看两行代码:

  Person person;

  person = new Person("张三");

这两行代码实现的功能和上面的一行代码是完全一样的。大家都知道,在Java中new是用来在堆上创建对象用的(对象实例化),如果person是一个对象的话,那么第二行为何还要通过new来创建对象呢?由此可见,person并不是所创建的对象,是什么?person是一个引用,是指向一个可以指向Person类的对象的引用。真正创建对象的语句是右边的new Person(“张三”);

再看一个例子:

    Person person;

  person = new Person("张三");

  person = new Person("李四");

这里让person先指向了“张三”这个对象,然后又指向了“李四”这个对象。也就是说,Person person,这句话只是声明了一个Person类的引用,它可以指向任何Person类的实例。

2.成员变量和局部变量的区别

(1)在类中的位置不同
成员变量:类中方法外
局部变量:方法定义中或者方法声明上

(2)在内存中的位置不同
成员变量:在堆中 (对象创建在堆中)
局部变量:在栈中

(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

(4)初始化值不同
成员变量:有默认值,可以是null
局部变量:没有默认值,必须定义,赋值,然后才能使用

class Student 
{
	String name;//方法外,成员变量,创建时才存在
	int Score;
	public Student (int Score,String name)//方法中定义是局部变量,方法使用时才存在
	{
		this.name=name;
		this.Score=Score;
	}
}

java类的成员变量有俩种类型:

一种是被static关键字修饰的变量,叫类变量或者静态变量
另一种没有static修饰,为成员变量

通俗点说:
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。如果类并没有创建,静态方法是无法调用实例方法或者实例变量。

而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。实例方法确可调用静态方法或静态变量,因为静态变量或方法被类的所有实例共享。

注意点:

JAVA中初始化的顺序:
加载类;
静态变量初始化;
静态块;【其只能调度静态的,不能调度非静态的】
成员变量;
构造方法;

class Product
{
	String name;//成员变量,实例化对象后就可使用
	static int price=100;//静态变量,类加载后就可使用,不必等到实例化
	
	public Product(String name)//默认无参构造,也可重写无参/有参构造
	{
		this.name=name;
	}
	
	public void Sale ()//成员方法,实例化对象后就可使用
	{
		System.out.println("Sale Product"+name+"Price:"+price);
	}
	
	public static void main(String []args)
	{
		String name="橙汁";
		price=200;//静态变量可直接修改
		Product product=new Product(name);//对象实例化
		product.Sale();//成员变量必须在实例化后调用
	}
}
		
		

方法的返回值就是方法执行性后的结果,为后续程序运行提供输入量。方法的返回值:(有两种情况)

1、如果方法就有返回值,方法中必须使用关键字return返回该值,返回类型为该方法的类型

2、 如果方法没有返回值,返回类型为void。

public void Print()//返回值为空,return可省略不写
{
	System.out.println("你真是个聪明的小脑袋");
}

public int Money()//返回值为int,可其他数据类型,也可返回对象
{
	int money=10000000000000000;
	return money;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值