java面向对象(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

    • @[TOC](文章目录)
  • 一、设计类
  • 二、对象的内存解析
    • 1.阐述
    • 2.具体描述
  • 三、属性(成员变量) vs 局部变量
    • 1.相同点
    • 2.不同点

提示:以下是本篇文章正文内容,下面案例可供参考

一、设计类

  1. 设计类,其实就是设计类的成员
创建类的对象 = 类的实例化 = 实例化类
属性 = 成员变量 = field = 域 、字段
方法 = 成员方法 = 函数 = method
  1. 如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static),意味着,如果我们修改一个对象的属性a ,则不影响另外一个对象属性a的值。

  2. 将变量p1保存的对象地址赋值给p3,导致p1 p3指向了堆空间中的同一个对象实体。

  3. 如图所示:java面向对象(一)_第1张图片

  4. 代码块:

public class PersonTest {
public static void main(String[] args) {
	//创建类的对象 = 类的实例化 = 实例化类
	Person person = new Person();
	person.name = "Tom";
	person.age = 18;
	System.out.println(person.name);
	person.talk("Chinese");
	
	Person person2 = new Person();
	System.out.println(person2.name);
	System.out.println(person2.ismale);
	
	//将p1变量保存的对象地址值赋值给p3,导致p1和p3指向了堆空间中的同一个对象实体
	Person person3 = person;
	System.out.println(person.name);
	person3.age = 10;
	System.out.println(person.age);
}
}

class Person{
	
		//属性
		String name;   //默认初始化值null
		int age = 1;
		boolean ismale;    //默认初始化值false

		//方法
		public void eat()
		{
			System.out.println("人可以吃饭!");
		}
		public void sleep()
		{
			System.out.println("人可以睡觉!");
		}
		public void talk(String language)
		{
			System.out.println("人可以说话,使用的是:"+language);
		}
}

二、对象的内存解析

1.阐述

堆:此内存区域唯一的目的就是存放对象实例,所有的对象实例以及数组都要在堆上分配

栈:存储局部变量,它不等同于对象本身,是对象在堆内存的首地址。

2.具体描述

java面向对象(一)_第2张图片

三、属性(成员变量) vs 局部变量

1.相同点

  • 1.相同点:
  • 1.1 定义变量的格式:数据类型 变量名 = 变量值
  • 1.2 先声明,后使用
  • 1.3 变量都有其对应的作用域

2.不同点

  • 2.1 在类中声明的位置不同
  • 属性:直接定义在类的一对{}中
  • 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
  • 2.2 关于权限修饰符的不同
  • 属性:可以在声明属性时,指明其权限,使用权限修饰符
  • 常用的权限修饰符:private public 缺省 protected ---->封装性
  • 局部变量:不可以使用权限修饰符
  • 2.3 默认初始化值的情况
  • 属性:类的属性,根据其类型,都有默认初始化值
  •         整型(byte   short    int  long ):0
    
  •         浮点型 (float  double)   0.0
    
  •         字符型(char),0 或\u0000
    
  •         布尔型(boolean)  false
    
  •         引用数据类型(类、数组、接口)  null
    
  • 局部变量:没有默认初始化值。
  •  	在调用局部变量之前,必须要显示赋值
    
  •  	形参在调用时,赋值即可。
    
  • 2.4 在内存中加载的位置:
  • 属性:加载到堆空间(非static)
  • 局部变量:加载到栈空间。

你可能感兴趣的:(java,开发语言)