JAVA语言的基本元素:类和对象
面向对象的核心概念
类(Class)和对象(Object)是面向对象的核心概念
类是对一类事物的描述,是抽象的,概念上的定义。
对象是实际存在的该类事物的每个个体,因而也称为对象。
“万事万物皆对象”。
设计类其实就是设计类的成员
类的简单及创建调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | package com.chenxi.java; /* 一、设计类,其实就是设计类的成员 属性=(等于)成员变量=(等于)field=(等于)域、字段 方法=成员方法=函数=method */ public class OOPTest { public static void main(String[] age){ Person p1 = new Person(); //创建类的对象,实例化一个类 //调用对象结构;属性与方法 //调用属性 p1.name = "tom" ; //调用赋值 p1.isMale= true ; //调用赋值 System.out.println(p1.name); //调用打印输出 //调用方法 p1.eat(); p1.sleep(); p1.talk( "chinese" ); } } //创建类 class Person{ //类的属性:对应类中的成员变量 String name; int age= 1 ; boolean isMale; //类的方法: 对应类中成员方法 public void eat(){ System.out.println( "人可以吃饭" ); } public void sleep(){ System.out.println( "人可以休息" ); } public void talk(String language){ System.out.println( "人可以说话" +language); } } |
如果创建一个类的多个人对象,则每个对象都独立的拥有这个类的属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package com.chenxi.java; /* 一、设计类,其实就是设计类的成员 属性=(等于)成员变量=(等于)field=(等于)域、字段 方法=成员方法=函数=method 二、类和对象的使用(面向对象的思想) 1.创建类,设计类的成员 2.创建类的成员 3.通过"对象.属性"或者"对象.方法()"调用对象的结构 三、如果创建一个类的多个对象,则每个对象都独立拥有一套类的属性。(非static的) 意味着如果修改一个对象的属性a。则不影响另外一个对象属性a的值 */ public class OOPTest { public static void main(String[] age){ Person p1 = new Person(); //创建类的对象,实例化一个类 //调用对象结构;属性与方法 //调用属性 p1.name = "tom" ; //调用赋值 p1.isMale= true ; //调用赋值 System.out.println(p1.name); //调用打印输出 //调用方法 p1.eat(); p1.sleep(); p1.talk( "chinese" ); //*************************** Person p2 = new Person(); System.out.println(p2.name); //输出null;有默认初始化值 Person p3 = p1; //将p1对象保存的对象地址值复制给p3,p1与p3指向同一个地址值 System.out.println(p3.name); //输出p3的name属性值所以也是tom p3.age = 3 ; //修改p3属性age值其实就是修改p1属性age的值,因为地址空间相同 System.out.println(p1.age); //打印p1属性age的值所以是3 } } //创建类 class Person{ //类的属性:对应类中的成员变量 String name; int age= 1 ; boolean isMale; //类的方法: 对应类中成员方法 public void eat(){<br> String food = "烙饼" ; //局部变量 System.out.println( "人可以吃饭" ); } public void sleep(){ System.out.println( "人可以休息" ); } public void talk(String language){ //局部变量 System.out.println( "人可以说话" +language); } } |
测试
1 2 3 4 5 6 7 | tom 人可以吃饭 人可以休息 人可以说话chinese null tom 3 |
对象创建和使用的内存解析
堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。
通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放
方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
类中属性的使用
属性(成员变量) VS 局部变量
1.相同点
1.1定义变量的格式 :数据类型 变量名 = 变量值
1.2 先声明,后使用
1.3 变量都有其作用域
2.不同点
2.1 在类中声明的位置的不同
属性:直接定义在类的一对{}内
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
2.2 关于权限修饰符的不同
属性: 可以在声明属性时,指明其权限,使用权限修饰符
常用的权限修饰符有:private、public、缺省、protected----》封装性
局部变量不可以使用修饰符
2.3默认初始化值
属性:类的属性根据其类型都有默认初始化值
整型(byte、short、int、long):0
浮点型(float、double):0.0
字符型(char): 0(或‘\u0000’)
布尔型(boolean):false
引用数据类型(类、数组、接口):null
局部变量: 没有初始化值;调用之前一定要赋值;特别的形参在调用时赋值即可
内存中加载的位置不同
属性:加载到堆空间中(非static)
局部变量:加载到栈空间
草都可以从石头缝隙中长出来更可况你呢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏