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;

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

相关推荐
代码驿站520几秒前
Scala语言的面向对象编程
开发语言·后端·golang
不是只有你能在乱世中成为大家的救世主26 分钟前
学习第六十四行
linux·c语言·开发语言·经验分享·学习
JoneMaster1 小时前
[读书日志]从零开始学习Chisel 第十一篇:Scala的类型参数化(敏捷硬件开发语言Chisel与数字系统设计)
开发语言·学习·scala
一决威严-雪雪2 小时前
springboot整合admin
java·spring boot·后端
吴秋霖2 小时前
某漫画网站JS逆向反混淆流程分析
开发语言·javascript·ecmascript
栗筝i2 小时前
Spring 中的常用注解
java·后端·spring
Growthofnotes2 小时前
C++—14、C++ 中的指针最基础的原理
开发语言·c++
小登ai学习2 小时前
框架部分面试题学习
java·学习·面试
MilesMatheson2 小时前
ubuntu 编译android源码报错:loadlocale.c:129: _nl_intern_locale_data:
c语言·开发语言·算法
sysu632 小时前
73.矩阵置零 python
开发语言·数据结构·python·线性代数·leetcode·面试·矩阵