JAVA2-类与对象编程(1)

该系列分享倾向于有c语言基础的学习,想学习的指路主页c语言专栏,接下来我们正式开始面向对象编程的分享学习。

软件应用:inteli IDEA2020.2

一.类与对象的定义

  1. 类是抽象的,概念性的,代表一类事物,即数据类型.

  2. 对象是具体的,实际性的,代表一个具体事物, 即实例.

  3. 类是对象的模板,对象是类的一个个体,对应一个实例

二.属性/成员变量/字段

基本介绍 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:布尔型,只有两个值,truefalse。用于表示逻辑上的真或假,常用于条件判断和控制流程,例如 if 语句、while 语句等。

二、引用数据类型

引用数据类型存储的是对象的引用(地址),而不是对象本身。对象的数据存储在堆内存中,引用存储在栈内存中,通过引用可以找到对象在堆内存中的位置。

类(Class)

  • 自定义类:通过 class 关键字创建,例如 public class Person {... }。可以封装数据和行为,创建自定义的对象,例如 Person person = new Person();
  • 系统提供的类:如 StringDateArrayList 等。这些类是 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中的数据类型有所了解之后,相信大家也就明确上述属性的定义了。

属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)。

注意事项和细节说明

  1. 属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;

这里简单讲解一下访问修饰符的基本概念和访问权限

访问修饰符: 控制属性的访问范围 有四种访问修饰符 public, proctected, default, private

访问权限 类 包 子类 其他包

public ∨ ∨ ∨ ∨ (对任何人都是可用的)

protect ∨ ∨ ∨ ×    (继承的类可以访问以及和private一样的权限)

default ∨ ∨ × ×    (包访问权限,即在整个包内均可被访问)

private ∨ × × ×    (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)

  1. 属性的定义类型可以为任意类型,包含基本类型或引用类型

  2. 属性如果不赋值,有默认值,规则和数组一致。

注意事项

举例:Person p1 = new Person();

person为p1的数据类型,p1为对象名(对象引用),new Person() 创建的对象空间(数据) 才是真正的对象

上述举例中的创建对象为直接创建,我们同样可以先声明再创建

Cat cat ; //声明对象

cat cat = new Cat(); //创建

如何访问属性?基本语法 对象名.属性名;

例如一个对象cat的属性--->cat.name ; cat.age; cat.color;

扩展:Java 内存存储的结构

  1. 栈: 一般存放基本数据类型(局部变量)

  2. 堆: 存放对象(Cat cat , 数组等)

  3. 方法区:常量池(常量,比如字符串), 类加载信息

举例:

复制代码
Person p = new Person();
p.name = "jack";
p.age = 10;
  1. 先加载person类信息(属性和方法信息, 只会加载一次)

  2. 在堆中分配空间, 进行默认初始化(看规则)

  3. 把地址赋给 p , p 就指向对象

  4. 进行指定初始化, 比如 p.name ="jack" ;p.age = 10;

今日分享到此结束,我们明天再见~

相关推荐
矛取矛求36 分钟前
C++ 标准库参考手册深度解析
java·开发语言·c++
cijiancao37 分钟前
23 种设计模式中的解释器模式
java·设计模式·解释器模式
南七行者40 分钟前
对模板方法模式的理解
java·设计模式·模板方法
٩( 'ω' )و26044 分钟前
stl_list的模拟实现
开发语言·c++·list
麻芝汤圆1 小时前
MapReduce 的广泛应用:从数据处理到智能决策
java·开发语言·前端·hadoop·后端·servlet·mapreduce
努力的搬砖人.1 小时前
java如何实现一个秒杀系统(原理)
java·经验分享·后端·面试
珊瑚里的鱼1 小时前
第五讲(下)| string类的模拟实现
开发语言·c++·笔记·程序人生·算法·visualstudio·visual studio
哈哈哈哈哈哈哈哈哈...........1 小时前
【java】在 Java 中,获取一个类的`Class`对象有多种方式
java·开发语言·python
@小白向前冲1 小时前
python 重要易忘 语言基础
开发语言·python
fallwind_of_july1 小时前
java项目分享-分布式电商项目附软件链接
java·redis·分布式·mongodb·elasticsearch·微服务·rabbitmq