Java学习第五天
1、类的使用Java的面向对象1.1面向对象的基础概念面向过程面向过程指的是每次需要某个功能的时候都需要将功能重新编写一次。----早期的时候很多程序采用的都是面向过程这种方式会产生维护困难、需求不容易修改、功能扩展不方便等问题面向对象提前把特定的功能封装好放到类的方法中将来通过类的对象直接调用方法就可以完成方法的复用这种方法维护简单功能扩展比较容易但是消耗较高需要创建对象1.2面向对象核心知识点类、对象类类是对象的抽象对象对象是类的实例化1.3类和对象的语法类的写法类没有main方法即psvm1、类型2、属性3、方法publicclass 类名{//描述什么类型就写什么类名//属性数据类型 变量名属性名就是变量名数据类型 属性名数据类型 属性名//功能方法public 返回值类型 方法名{}public 返回值类型 方法名{}}package com.day3.text1; public class Computer { //属性 String brand; String color; double price; //功能方法 public void play() { System.out.println(电脑可以玩游戏); } public void code () { System.out.println(电脑可以写代码); } }对象的创建对象有main方法即psvm创建类的目的是为了编写一些方法将来可以多次调用方法执行特定的业务逻辑如果想调用类的方法就必须创建类的对象创建对象创建变量对象名就是变量名语法数据类型 对象名new 数据类型( );通过对象调用方法对象名.方法名通过对象调用属性对象名.属性名值 //赋值对象名.属性名 //获取值获取属性System.out.println(对象名.属性名);注意类的属性也称成员变量使用时即使没有赋值系统也会提供一个默认值可以使用引用类型包含String默认值是null整数类型默认值是0浮点数类型默认值是 0.0char 类型 默认值是 boolean 类型默认值是 falsepackage com.day3.text1; import com.day3.text1.Computer; public class ComputerText1{ public static void main(String[] args) { Computer computernew Computer();//Computer是一个引用数据类型 computer.play(); computer.code(); computer.brand华硕; computer.color黑色; computer.price7999; //获取属性也是通过对象.属性名获取 System.out.println(computer.price); System.out.println(computer.color); System.out.println(computer.brand); } }1.4类的混合使用例题单独创建包包中创建一个教师类有姓名、年龄、职称、课程类 四个属性类中有一个 show 方法输出的内容是 我是 一个老师我的姓名是: xx年龄是 xx职称是 xx我教授的课程名是 xx这门课有 xx 课时xx 学分package com.day3.text2; public class Teacher { String name; int age; String professional; Course c;//获取值 public void show(){ System.out.println(我是一个老师我的姓名是name,年龄是age ,职称是professional,我教授的课程名是 c.cname,这门课有c.time课时,c.score学分); } }package com.day3.text2; public class TeacherText1 { public static void main(String[] args) { Teacher tnew Teacher(); t.name李四; t.age24; t.professional高级教师; t.cnew Course();//将new Course()赋值给t.c(即在teacher中的Course c;)t.c是变量的命名 t.c.cname高数; t.c.time48; t.c.score3; t.show(); } }package com.day3.text2; public class Course { String cname; int time; int score; }重点代码理解在教师类包含课程类中课程作为属性所以需要在教师类中加入代码Course c;即数据类型 对象名并且在教师类方法里面关于课程的输出内容变成c.cname...注意不是t.c.cname在教师对象中属性是一个类的赋值方式, 需要创建一个对象赋值给属性t.cnew Course();//赋值给t.ct.c是变量的命名t.c.cname高数;t.c.time48;t.c.score3;1.5类在内存中的划分①编写的 .java 文件被编译为.class 文件 会被 JVM 加载到方法区②当执行Computer computer new Computer();的时候 会先在堆区创建空间同时把方法区的属性、方法引用加载到空间中把这个空间地址赋值给 栈区的computer③当我们执行后续的赋值操作computer.brand华硕;通过computer的引用地址倒找堆区的空间把空间中的属性去赋值④当我们调用方法computer.play(); 就会将方法加载到栈中按照先进后出的规则去存放⑤程序执行结束栈中的方法会按照先进后出的规则出栈结束运行堆中的对象则会被系统的垃圾回收器回收1.6成员变量和局部变量的区别①成员变量在类中方法外中声明局部变量在类中方法内中声明②成员变量使用不需要赋初始值系统会给默认值 局部变量必须要赋初始值才能使用③成员变量在堆中局部变量在栈中④成员变量随着对象的回收而消失局部变量随着方法的出栈而消失1.7构造方法重要构造方法的作用构造方法是和new关键字一起出现来创建类的对象使用的public class Person { String name; int age; //构造方法无参构造 public Person(){ } //有参构造 public Person(String name,int age){ } }特点①构造方法的方法名和类名完全相同没有返回值类型②如果类中没有编写构造方法那么系统会自动提供一个没有参数的构造方法有参数构造和无参数构造不能同时出现③构造方法可以写参数一般写上的参数参数名称一般和类的属性相同主要是为了完成创建对象的同时给属性赋值调用无参构造可用于赋值数据类型 对象名new 数据类型( );调用有参构造可用于赋值数据类型 对象名new 数据类型( 内容内容内容 );//第一种情况 Person personnew Person(); String name张三; int age12; //第二种情况 Person personnew Person(张三,12);

相关新闻

AM64x/AM243x安全配置与调试寄存器实战解析

AM64x/AM243x安全配置与调试寄存器实战解析

1. 深入理解AM64x/AM243x的安全配置与调试寄存器在嵌入式系统开发,尤其是基于德州仪器(TI)AM64x/AM243x这类高性能多核异构处理器的项目中,底层硬件的精确控制是项目成败的基石。很多工程师在项目初期,往往把精力集中在…

2026/7/20 21:34:58阅读更多 →
Unity Addressables资源管理:从AssetBundle迁移到热更新实战指南

Unity Addressables资源管理:从AssetBundle迁移到热更新实战指南

1. 项目概述:为什么是Addressables?如果你在Unity项目里做过资源管理,尤其是需要热更新的项目,那么“AssetBundle”这个词大概率是你的老朋友,也可能是你的“噩梦之源”。从Unity 4.x时代开始,AssetBundle&…

2026/7/20 21:34:58阅读更多 →
移动开发跨平台适配:Android与iOS版本兼容实战指南

移动开发跨平台适配:Android与iOS版本兼容实战指南

1. 移动开发适配的现状与挑战在2025年的移动开发生态中,Android和iOS两大平台都面临着快速迭代带来的适配压力。作为一名经历过多次系统大版本升级的移动端开发者,我深刻体会到:版本适配不是简单的API兼容问题,而是涉及UI设计、权…

2026/7/20 21:34:58阅读更多 →
OpenCV-Python实战(12)——一文详解AR增强现实

OpenCV-Python实战(12)——一文详解AR增强现实

OpenCV-Python实战(12)——一文详解AR增强现实 0. 前言 1. 增强现实简介 2. 基于无标记的增强现实 2.1 特征检测 2.2 特征匹配 2.3 利用特征匹配和单应性计算以查找对象 3. 基于标记的增强现实 3.1 创建标记和字典 3.2 检测标记 3.3 相机校准 3.4 相机姿态估计 3.5 增强现实初…

2026/7/21 15:55:40阅读更多 →
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位

国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位

从 Oracle 迁到金仓 KES 这几年,我攒了一份隐性陷阱清单。所谓隐性,是它们不报错。语法过了,程序跑了,数据也出来了,只是结果悄悄和 Oracle 不一样。这类坑比报错的坑难缠十倍,因为报错会拦住你&#xff0c…

2026/7/21 15:55:40阅读更多 →
OpenCV-Python实战(13)——OpenCV与机器学习的碰撞

OpenCV-Python实战(13)——OpenCV与机器学习的碰撞

OpenCV-Python实战(13)——OpenCV与机器学习的碰撞 0. 前言 1. 机器学习简介 1.1 监督学习 1.2 无监督学习 1.3 半监督学习 2. K均值 (K-Means) 聚类 2.1 K-Means 聚类示例 3. K最近邻 3.1 K最近邻示例 4. 支持向量机 4.1 支持向量机示例 小结 系列链接 0. 前言 机器学习是人…

2026/7/21 15:55:40阅读更多 →
怎样专业配置LOOT:5个高效插件加载优化技巧

怎样专业配置LOOT:5个高效插件加载优化技巧

怎样专业配置LOOT:5个高效插件加载优化技巧 【免费下载链接】loot A modding utility for Starfield and some Elder Scrolls and Fallout games. 项目地址: https://gitcode.com/gh_mirrors/lo/loot LOOT(Load Order Optimization Tool&#xff…

2026/7/21 15:55:40阅读更多 →
OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)0. 前言1. 人脸处理简介2. 安装人脸处理相关库2.1 安装 dlib2.2 安装 face_recognition2.3 安装 cvlib3. 人脸检测3.1 使用 OpenCV 进行人脸检测3.1.1 基于…

2026/7/21 15:55:40阅读更多 →
终极Node.js命令行解析工具command-line-args:10分钟快速入门指南

终极Node.js命令行解析工具command-line-args:10分钟快速入门指南

终极Node.js命令行解析工具command-line-args:10分钟快速入门指南 【免费下载链接】command-line-args A mature, feature-complete library to parse command-line options. 项目地址: https://gitcode.com/gh_mirrors/co/command-line-args 你是否厌倦了手…

2026/7/21 15:53:38阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/20 18:51:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/20 18:51:18阅读更多 →