该系列分享倾向于有c语言基础的学习,想学习的指路主页c语言专栏,接下来我们正式开始面向对象编程的分享学习。
软件应用:inteli IDEA2020.2
一.类与对象的定义
-
类是抽象的,概念性的,代表一类事物,即数据类型.
-
对象是具体的,实际性的,代表一个具体事物, 即实例.
-
类是对象的模板,对象是类的一个个体,对应一个实例
二.属性/成员变量/字段
基本介绍 1) 从概念上看: 成员变量 = 属性 = field(字段) (即成员变量是用来表示属性的,下面分享统一叫属性)
属性可以是基本数据类型,也可以是引用类型(对象,数组)
在这里我们简单说一下java中的数据类型
一.基本数据类型
基本数据类型是 Java 语言中最基础的数据类型,它们存储的是实际的值,而不是指向对象的引用。这些数据类型在内存中直接存储数据,并且有固定的大小,存储在栈内存中。
整数类型
byte
:字节型,占用 1 个字节(8 位),范围是 -128 到 127。常用于存储字节数据,例如文件操作或网络通信中的字节流。short
:短整型,占用 2 个字节(16 位),范围是 -32,768 到 32,767。在某些内存敏感的场景中使用,较少使用。int
:整型,占用 4 个字节(32 位),范围是 -2,147,483,648 到 2,147,483,647。是最常用的整数类型,用于存储一般的整数数据,如计数、索引等。long
:长整型,占用 8 个字节(64 位),范围是 -9,223,372,036,854,755,008,000,000,000,000,000,000 到 9,223,372,036,854,755,007,000,000,000,000,000,000。当需要存储较大的整数时使用,例如表示文件大小、时间戳等。
浮点类型
float
:单精度浮点型,占用 4 个字节(32 位)。它可以表示带有小数部分的数据,但精度相对较低,在对精度要求不高的情况下使用,例如科学计算中的一些近似值。double
:双精度浮点型,占用 8 个字节(64 位)。它的精度比float
高,是最常用的浮点数表示类型,用于存储需要较高精度的浮点数,如物理计算、金融计算等。
字符类型
char
:字符型,占用 2 个字节(16 位),表示一个 Unicode 字符。可以存储单个字符,如字母、数字、符号等,使用单引号括起来,例如'A'
、'1'
、'$'
。
布尔类型
boolean
:布尔型,只有两个值,true
和false
。用于表示逻辑上的真或假,常用于条件判断和控制流程,例如if
语句、while
语句等。
二、引用数据类型:
引用数据类型存储的是对象的引用(地址),而不是对象本身。对象的数据存储在堆内存中,引用存储在栈内存中,通过引用可以找到对象在堆内存中的位置。
类(Class)
- 自定义类:通过
class
关键字创建,例如public class Person {... }
。可以封装数据和行为,创建自定义的对象,例如Person person = new Person();
。 - 系统提供的类:如
String
、Date
、ArrayList
等。这些类是 Java 标准库提供的,可以直接使用,例如String str = new String("Hello");
。
接口(Interface)
- 接口是一种抽象类型,只包含方法签名,不包含方法体。接口可以被类实现,实现接口的类需要提供接口中所有方法的具体实现。例如
interface Drawable {... }
,class Circle implements Drawable {... }
。
数组(Array)
- 存储同一种数据类型的元素的集合,可以是基本数据类型的数组,也可以是引用数据类型的数组。例如
int[] nums = new int[10];
或String[] names = new String[5];
。数组的长度是固定的,创建后不能改变。
枚举(Enum)
- 一种特殊的数据类型,用于定义一组常量。例如
enum Color { RED, GREEN, BLUE }
,可以使用Color.RED
这样的方式来表示枚举值。
注解(Annotation)
- 为程序元素(类、方法、字段等)添加元数据信息,用于编译时或运行时的处理。例如
@Override
是一个注解,用于表示方法重写。
我们对于java中的数据类型有所了解之后,相信大家也就明确上述属性的定义了。
属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)。
注意事项和细节说明
- 属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;
这里简单讲解一下访问修饰符的基本概念和访问权限
访问修饰符: 控制属性的访问范围 有四种访问修饰符 public, proctected, default, private
访问权限 类 包 子类 其他包
public ∨ ∨ ∨ ∨ (对任何人都是可用的)
protect ∨ ∨ ∨ × (继承的类可以访问以及和private一样的权限)
default ∨ ∨ × × (包访问权限,即在整个包内均可被访问)
private ∨ × × × (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)
-
属性的定义类型可以为任意类型,包含基本类型或引用类型
-
属性如果不赋值,有默认值,规则和数组一致。
注意事项
举例:Person p1 = new Person();
person为p1的数据类型,p1为对象名(对象引用),new Person() 创建的对象空间(数据) 才是真正的对象
上述举例中的创建对象为直接创建,我们同样可以先声明再创建
Cat cat ; //声明对象
cat cat = new Cat(); //创建
如何访问属性?基本语法 对象名.属性名;
例如一个对象cat的属性--->cat.name ; cat.age; cat.color;
扩展:Java 内存存储的结构
-
栈: 一般存放基本数据类型(局部变量)
-
堆: 存放对象(Cat cat , 数组等)
-
方法区:常量池(常量,比如字符串), 类加载信息
举例:
Person p = new Person();
p.name = "jack";
p.age = 10;
-
先加载person类信息(属性和方法信息, 只会加载一次)
-
在堆中分配空间, 进行默认初始化(看规则)
-
把地址赋给 p , p 就指向对象
-
进行指定初始化, 比如 p.name ="jack" ;p.age = 10;
今日分享到此结束,我们明天再见~