Java面向对象--day1

本文介绍了Java编程中的基本概念,包括类的定义、成员变量和方法,对象的创建与调用,以及引用类型的使用。详细阐述了JVM内存结构中的栈、堆和方法区,强调了构造函数在对象初始化中的作用,同时讨论了方法重载的概念。此外,还提到了null引用及空指针异常的问题。
摘要由CSDN通过智能技术生成

1、类

1.1 类的定义

  类是具有相同属性(变量)和行为(方法)的对象的集合 ;

类定义了该类型对象的数据结构,称之为“成员变量”,也定义了一些可以被调用的功能,称之为“方法”;

类是用于构建对象的模板,对象的实质就是内存中的一块存储区域,其数据结构由它的类来决定。

1.2 成员变量

Java语言中,类的成员变量的定义可以使用如下语法规则:

 

1.2.1 成员变量的初始化

对象创建之后,其成员变量可以按照默认的方式初始化,对象成员具有默认值。

1.2.2 成员变量的调用

对象创建之后,把对象的引用地址,赋值给相同类型的引用,然后可以通过该引用,使用成员变
量。

 

1.3 成员方法

类中除了定义成员变量,可以定义成员方法。java语言中,可以按照下列方式定义类中的方法:

2、对象

2.1 对象的定义

 在Java中,对象是类的一个实例。它是类中定义的数据和方法的实际实体。Java是一种面向对象的编程语言,通过创建对象来表示现实世界中的事物,并且可以对对象进行操作。

2.2 对象的创建

Java中通过关键字new来创建对象,因此没有对象就“new”一个对象。

上述代码通过Father类型的引用father1创建了一个Father对象,并在内存区域开辟了 一块存储区域。此时可以father1引用指向堆内存的成员变量的引用地址。

father1.setName(); 成员方法的调用

非静态方法(无static修饰)的调用必须通过某个对象的引用。

当通过对象的引用调用方法时,方法中涉及的成员变量就是该对象的成员变量。

3、引用类型

 在Java中,除了基本数据类型(如int、double、boolean等),还存在引用类型,也称为非基本数据类型。引用类型是指用来引用对象的变量类型,存储的是对象的引用地址而非实际数据;Java的引用类型包括接口数组等。当创建引用类型的变量时,变量存储的是对象的地址,而不是对象本身。通过引用类型的变量,可以访问和操作对象的属性和方法。

引用的功能在于访问对象。

3.1  引用类型变量声明语法规则

在Java中,声明引用类型变量的语法规则如下:

<类型> <变量名>;

其中,<类型>是引用类型的名称,可以是类、接口或数组类型,而<变量名>是变量的名字,用于在程序中引用这个变量。

引用类型是否相等: ==,不同对象的引用地址不同,值可能相等(equals),不属于同一类型。

3.2 JVM内存结构

JVM(Java虚拟机)内存结构指的是Java程序在运行过程中,JVM为其提供的内存区域的划分和管理。JVM内存部分结构包括以下几个部分:

  1. 方法区(Method Area):用于存储类的结构信息,包括类的字节码、常量池、静态变量、方法代码等。java程序运行时候,首先会通过类加载器载入类文件的字节码文件,经过解析后将其装入方法区。类的各种信息都在方法区保存。

  2. 堆内存区(Heap):是Java程序运行时动态分配的内存区域,用于存储对象实例和数。jvm会在其内存空间开一个称为“堆”的存储空间,这部分空间用于存储使用new关键字创建的对象。创建了一个Person对象,存储在堆内存中。

  3. 栈内存区(Stack):栈用于存放程序运行过程中的局部变量。引用类型的变量p ,存储在栈内存中。

此外,在JVM内存结构中还有一些其他的内存区域,如直接内存(Direct Memory)和PC寄存器等,它们在一些特定的情况下被使用。

4、方法重载

       方法重载(Method Overloading)是指在同一个类中定义多个方法,它们具有相同的名称但具有不同的参数列表。重载方法通过参数个数参数类型参数顺序的不同来区分。

4.1 方法重载特点

  1. 方法名称相同:重载的方法必须具有相同的名称。

  2. 参数列表不同重载的方法必须有不同的参数列表,可以是参数个数不同、参数类型不同或参数顺序不同。

  3. 返回类型不影响重载:方法的返回类型与重载无关,因为方法重载是通过参数列表进行区分的。

  4. 访问修饰符可以不同:重载的方法可以具有不同的访问修饰符(如public、private、protected或默认),只要其参数列表不同即可

 编译器在编译时,会根据其参数的不同,绑定到不同的方法.

 4.2 NULL

        引用类型变量用于存放对象的地址,可以给引用类型赋值为null,表示不指向任何对象。
如果某个引用类型变量为null的时候,不能访问对象,否则抛出空指针异常。

/*
null的使用
*/
public class NullDemo {
  public static void main(String[] args) {
    Date date = null;
    // java.lang.NullPointerException -- 运行程序的是,出现了空指针异常。
8.构造函数
8.1定义构造函数
构造方法是在类中定义的方法(每个类都有构造方法):
— 构造方法的名称必须和类名相同.
— 构造方法没有返回值,但也不能写void.
在java语言中可以通过构造方法实现对象成员变量初始化。
    // *** 编译的时候, 只看 ”=“ 符号左边的部分。 这个时候date是Date类型, 具有
getTime方法。
    // *** 运行的时候, 以"="符号右边的部分为准, 这个时候右边是null ,实际就是:
null.getTime , null没有getTime方法。所以抛异常。
    long time = date.getTime();// 得到时间毫秒数的方法。
    // null是关键字。 null是直接量。 在java中,null表示空,空就代表不指向任和对象。
    //long time1 = null.getTime(); // 编译错误: 编译的时候,就发现null没有getTime
方法,所以出现错误。
 }
}

5、构造函数

5.1 构造函数的定义

         构造函数(Constructor)是一种特殊类型的方法,用于创建对象并初始化对象的成员变量构造函数与类名相同并且没有返回类型

        构造函数在创建对象时被调用,它负责执行必要的初始化操作,如给对象的成员变量赋初值、分配内存等。每次创建对象时,都会调用相应的构造函数。

 5.2 构造函数的特点

  1. 构造函数与类名相同:构造函数的名称必须与类名完全相同,包括大小写

  2. 没有返回类型:与其他方法不同,构造函数没有明确的返回类型(包括void),且不能使用return语句返回值。

  3. 可以有参数:构造函数可以包含参数,用于接受初始化对象所需的数据。

  4. 可以重载:同一个类可以定义多个构造函数,只要它们的参数列表不同,就可以进行重载。

路漫漫其修远兮,吾将上下而求索。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值