首页 > 编程语言 >JAVA2-类与对象编程(1)

JAVA2-类与对象编程(1)

时间:2025-01-10 23:03:27浏览次数:3  
标签:存储 字节 对象 编程 数据类型 000 JAVA2 属性

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

软件应用:inteli IDEA2020.2

一.类与对象的定义

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

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

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

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

基本介绍 1) 从概念上看: 成员变量 = 属性 = field(字段) (即成员变量是用来表示属性的,下面分享统一叫属性)

属性可以是基本数据类型,也可以是引用类型(对象,数组)

在这里我们简单说一下java中的数据类型

一.基本数据类型

基本数据类型是 Java 语言中最基础的数据类型,它们存储的是实际的值,而不是指向对象的引用。这些数据类型在内存中直接存储数据,并且有固定的大小,存储在栈内存中。

  1. 整数类型

    • 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。当需要存储较大的整数时使用,例如表示文件大小、时间戳等。
  2. 浮点类型

    • float:单精度浮点型,占用 4 个字节(32 位)。它可以表示带有小数部分的数据,但精度相对较低,在对精度要求不高的情况下使用,例如科学计算中的一些近似值。
    • double:双精度浮点型,占用 8 个字节(64 位)。它的精度比 float 高,是最常用的浮点数表示类型,用于存储需要较高精度的浮点数,如物理计算、金融计算等。
  3. 字符类型

    • char:字符型,占用 2 个字节(16 位),表示一个 Unicode 字符。可以存储单个字符,如字母、数字、符号等,使用单引号括起来,例如 'A''1''$'
  4. 布尔类型

    • boolean:布尔型,只有两个值,true 和 false。用于表示逻辑上的真或假,常用于条件判断和控制流程,例如 if 语句、while 语句等。

二、引用数据类型

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

  1. 类(Class)

    • 自定义类:通过 class 关键字创建,例如 public class Person {... }。可以封装数据和行为,创建自定义的对象,例如 Person person = new Person();
    • 系统提供的类:如 StringDateArrayList 等。这些类是 Java 标准库提供的,可以直接使用,例如 String str = new String("Hello");
  2. 接口(Interface)

    • 接口是一种抽象类型,只包含方法签名,不包含方法体。接口可以被类实现,实现接口的类需要提供接口中所有方法的具体实现。例如 interface Drawable {... }class Circle implements Drawable {... }
  3. 数组(Array)

    • 存储同一种数据类型的元素的集合,可以是基本数据类型的数组,也可以是引用数据类型的数组。例如 int[] nums = new int[10]; 或 String[] names = new String[5];。数组的长度是固定的,创建后不能改变。
  4. 枚举(Enum)

    • 一种特殊的数据类型,用于定义一组常量。例如 enum Color { RED, GREEN, BLUE },可以使用 Color.RED 这样的方式来表示枚举值。
  5. 注解(Annotation)

    • 为程序元素(类、方法、字段等)添加元数据信息,用于编译时或运行时的处理。例如 @Override 是一个注解,用于表示方法重写。

我们对于java中的数据类型有所了解之后,相信大家也就明确上述属性的定义了。

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

注意事项和细节说明

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

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

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

             访问权限    类   包  子类  其他包

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

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

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

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

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

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

注意事项

举例: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;

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

标签:存储,字节,对象,编程,数据类型,000,JAVA2,属性
From: https://blog.csdn.net/2401_82408565/article/details/145066180

相关文章

  • JavaScript 交互逻辑与异步编程
    JavaScript作为前端实现交互逻辑的核心语言,其复杂性和重要性不言而喻。在构建诸如表单验证、菜单展开收起、页面动态加载等交互功能时,我常常需要处理各种事件监听、DOM操作以及数据的动态更新。尤其是当涉及到异步操作,比如从后端接口获取数据并实时更新页面内容时,JavaScript的......
  • 【C++】穿越编程岁月,细品C++进化轨迹,深化入门基石(续章)——揭秘函数缺省参数的魅力、函
    文章目录一、函数缺省参数二、函数重载三、引用1.引用的概念和定义2.引用的特性3.引用的使用4.const引用5.指针和引用的关系四、inline内联函数和nullptr1.inline2.nullptr一、函数缺省参数   缺省参数其实就是默认参数,它是声明或定义函数时为函数的参数指定......
  • 【C++】揭开C++类与对象的神秘面纱(首卷)(类的基础操作详解、实例化艺术及this指针的深
    文章目录一、类的定义1.类定义格式2.类访问限定符3.类域二、类的实例化1.实例化概念2.对象的大小三、隐藏的this指针与相关练习1.this指针的引入与介绍练习1练习2练习3一、类的定义1.类定义格式   在讲解类的作用之前,我们来看看类是如何定义的,在C++中,class......
  • 【嵌入式编程】 C 程序代码如何实现高内聚低耦合
    一、原理篇低耦合,是指模块之间尽可能的使其独立存在,模块之间不产生联系不可能,但模块与模块之间的接口应该尽量少而简单。这样,高内聚从整个程序中每一个模块的内部特征角度,低耦合从程序中各个模块之间的关联关系角度,对我们的设计提出了要求。程序设计和软件工程发展过程中产生的......
  • C++并发编程之基于锁的数据结构的适用场合与需要考虑和注意的问题
    在C++多线程编程中,锁是一种常用的同步机制,用于保护共享数据,防止多个线程同时访问和修改,从而避免数据不一致或其他并发问题。基于锁的数据结构适用于多种并发编程场合,但同时也需要注意一些关键问题。1. 适用的并发编程场合锁在以下几种场合特别有用:1.1 保护共享数据当多个......
  • 详解 C++ 防御性编程声明一个类型 int *(*(*foo)(int))[5];
    C++中有一些语法由于灵活性和强大功能显得非常复杂。例如,复杂声明是许多人在学习C++时遇到的难题之一。下面以一条常被称为“C++最难的声明”为例,逐步拆解它的含义。声明:int*(*(*foo)(int))[5];这是一个看似复杂的C++声明。让我们逐步分析它的含义。1.阅读......
  • java对象方法使用细节
    返回数据类型:一个方法最多只能有一个返回值;如果有要求返回数据类型,则最后执行语句必须为:return值当方法为void的时候,方法体中可以没有return,或者只写return;方法的形参和实参的类型要一致或兼容,个数,顺序必须一致;方法体内不能嵌套定义方法;方法调用:同一个类中的方法......
  • 【Web】0基础学Web—事件对象、事件委托(事件代理)——星级评论案例
    0基础学Web—事件对象、事件委托(事件代理)——星级评论案例事件对象关闭鼠标右键的点击事件关闭鼠标滚轮的事件点击的目标对象点击鼠标的左键0滚轮1右键2获得被点击的节点的名称或取相对于浏览器左上角的距离(会受页面滚动条的影响)获取相对于文档左上角的距离(不受滚动条......
  • SpringBoot少儿编程管理系统m9593(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表家长,学生,课程分类,课程信息,课程购买开题报告内容一、研究背景随着社会经济的发展和人们对教育培训需求的增加,少儿编程教育逐渐成为了家长和学生选择的重要教......
  • AI编程工具怎么选?GitHub Copilot、AI Assistant与Cursor,谁是你的最佳拍档?
    大家好,欢迎来到程序视点!我是小二哥。在大模型技术迅猛发展的今天,AI编程已经很普遍了!从AI编程插件工具,到AI编程IDE,已经有很多的选择了!小二哥这里主要提及GitHubCopilot,JetBrainsAIAssistant和Cursor。主要原因是:对比多款产品后,这三款工具是目前读者小伙伴中受众最高的,也是小......