Java面向对象学习笔记-2
前言
本文介绍了Java中类的定义和对象的创建的基本概念。我们通过示例代码演示了如何定义不同类型的类,包括管理员信息、顾客信息、学校信息和访客信息,并展示了如何创建这些类的对象以及如何访问它们的属性和方法。这些示例有助于理解面向对象编程的基本原理,以及如何在Java中应用这些概念。
类的定义和对象的创建
Admin 类 - 管理员信息
Admin 类用于表示管理员,包括管理员的名称和密码。以下是 Admin 类的代码示例:
public class Admin {String name;String password;public void show() {System.out.println("用户名:" + name + ",密码:" + password);}
}
Admin 类的一个典型用例是管理系统中的管理员账户。管理员可以使用用户名和密码登录系统,并具有权限执行特定任务。
Customer 类 - 顾客信息和积分
Customer 类用于表示顾客信息,包括积分和卡类型。以下是 Customer 类的代码示例:
public class Customer {int jifeng; // 积分String type; // 卡类型public void show() {System.out.println("积分:" + jifeng + ",卡类型:" + type);}public void huikui() {// 金卡客户积分大于1000分或普卡客户积分大于5000,获得回馈积分500分if (("金卡".equals(type) && jifeng > 1000) || ("普卡".equals(type) && jifeng > 5000)) {System.out.println("回馈积分500分!");} else {System.out.println("谢谢惠顾!");}}
}
Customer 类适用于管理顾客的积分和卡类型。根据不同的条件,系统可以计算并回馈积分给顾客。
School 类 - 学校信息
School 类用于表示学校的信息,包括名称、教室数目和机房数目。以下是 School 类的代码示例:
// 类名
public class School {// 属性String name; // 名称int jsNumber; // 教室数目int jfNumber; // 机房数目// 方法public void show() {System.out.printf("%x\n", this.hashCode()); // 内存地址System.out.println("名称:" + name + ",教室数目:" + jsNumber+ ",机房数目:" + jfNumber);}
}
School 类可用于管理学校的基本信息,如名称、教室数和机房数。该类还包含了一个方法,用于显示学校的信息。
Visitor 类 - 访客信息
Visitor 类用于表示访客的信息,包括姓名和年龄。以下是 Visitor 类的代码示例:
public class Visitor {String name;int age;public void show() {if (age <= 10) System.out.println(name + "的年龄为:" + age + ",门票免费");else System.out.println(name + "的年龄为:" + age + ",门票价格为:20元");}
}
Visitor 类可以用于跟踪访问者的信息,根据年龄确定门票价格或其他相关信息。
示例和概念
示例 1:创建 School 类的对象
public class Demo01 {public static void main(String[] args) {// 将School类,理解成一种引用数据类型,只不过是自定义的引用数据类型// 1. 声明School school;// 2. 分配空间school = new School();// 3. 点访问属性school.name = "万科城小学";school.jsNumber = 36;school.jfNumber = 8;// 4. 点访问方法school.show();}
}
在示例中,我们演示了如何创建 School 类的对象并访问其属性和方法。
示例 2:简化创建对象
public class Demo02 {public static void main(String[] args) {// 将School类,理解成一种引用数据类型,只不过是自定义的引用数据类型// 声明分配空间School school = new School();// 点访问方法school.show();// 点访问属性school.name = "万科城小学";school.jsNumber = 36;school.jfNumber = 8;// 点访问方法school.show();}
}
这个示例简化了对象的创建和访问属性/方法的过程。
示例 3:输入访客信息
import java.util.Scanner;public class Demo03 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (true) {System.out.print("请输入姓名:");String name = scanner.next();if (name.equals("n")) break; // 提供了一个退出通道System.out.print("请输入年龄:");int age = scanner.nextInt();Visitor visitor = new Visitor(); // 创建对象// 自动提示功能visitor.name = name;visitor.age = age;visitor.show();}System.out.println("退出程序");}
}
这个示例演示了如何使用 Scanner 接收用户输入,并创建 Visitor 对象来显示访客信息。
示例 4:修改 Admin 密码
import java.util.Scanner;public class Demo04 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Admin admin = new Admin(); // 准备一张卡admin.name = "admin1";admin.password = "111111";// 试图修改该卡的密码System.out.print("请输入用户名:");String name = scanner.next();System.out.print("请输入密码:");String password = scanner.next();// 核对if (name.equals(admin.name) && password.equals(admin.password)) {System.out.print("请输入新密码:");admin.password = scanner.next(); // 一定要更新到对象的属性上,才叫修改System.out.println("密码修改成功,你的新密码是:" + admin.password);} else {System.out.println("用户名或密码不正确!你没有修改权限。");}}
}
这个示例演示了用户身份验证以及如何修改管理员密码。
示例 5:顾客信息和回馈积分
public class Demo05 {public static void main(String[] args) {Customer customer = new Customer();customer.jifeng = 3050;customer.type = "普卡";customer.show();customer.huikui();}
}
在此示例中,我们创建了一个 Customer 对象,展示了顾客信息并计算回馈积分。
示例 6:多个 School 对象
public class Demo06 {public static void main(String[] args) {// 将School类,理解成一种引用数据类型,只不过是自定义的引用数据类型// 声明分配空间School school1 = new School();School school2 = new School();System.out.printf("%x\n", school1.hashCode()); // 内存地址System.out.printf("%x\n", school2.hashCode()); // 内存地址// 点访问属性school1.name = "万科城小学";school1.jsNumber = 36;school1.jfNumber = 8;school2.name = "艾溪湖小学";school2.jsNumber = 24;school2.jfNumber = 6;// 点访问方法school1.show();school2.show();}
}
这个示例演示了如何创建多个 School 对象,并显示它们的属性。
示例 7:局部变量作用域
public class Demo07 {public static void main(String[] args) {{int age = 18;System.out.println(age);}{int age = 20;System.out.println(age);}}
}
在示例 7 中,我们演示了局部变量作用域。在不同的代码块中,可以使用相同名称的局部变量,它们不会相互影响。
示例 8:对象引用和垃圾回收
public class Demo08 {public static void main(String[] args) {{School school1 = new School(); // new一律分配在堆School school2 = school1;School school3 = school1;// GC的垃圾回收机制,记录这块堆空间,引用数1+1+1school1.name = "艾溪湖小学";school1.show();}// school1被回收了,GC的垃圾回收机制感应到栈变量school1回收了,引用数0// GC的垃圾回收机制,就会考虑回收System.gc();}
}
在示例 8 中,我们演示了对象引用和垃圾回收的概念。当对象不再被引用时,垃圾回收机制可能会将其回收。
示例 9:数字格式化
public class Demo09 {public static void main(String[] args) {// Object 生命类型System.out.printf("八进制:%o,十进制:%d,十六进制:%x", 20, 20, 20); // ctrl+p (parameter)}
}
最后,在示例 9 中,我们展示了如何使用 printf
方法以不同的进制格式化和显示数字。
总结
本文介绍了Java中类的定义和对象的创建的核心概念,以及如何在实际编程中应用这些概念。通过示例,我们展示了如何创建不同类型的类,如何访问对象的属性和方法,以及如何在程序中使用这些对象来实现各种功能。这些基本概念是面向对象编程的基石,在Java编程中非常重要。读者可以通过本文的示例和概念更好地理解如何设计和使用类与对象,从而更有效地开发Java应用程序。
相关文章:
Java面向对象学习笔记-2
前言 本文介绍了Java中类的定义和对象的创建的基本概念。我们通过示例代码演示了如何定义不同类型的类,包括管理员信息、顾客信息、学校信息和访客信息,并展示了如何创建这些类的对象以及如何访问它们的属性和方法。这些示例有助于理解面向对象编程的基…...

入栏需看——学习记忆
记忆方法千千种,本栏意在梳理其中道道来,旦有小得,肥肠幸耶。从不同角度分析学习记忆。 逻辑篇 有逻辑 用思维导图 思维导图记忆有逻辑的文本/内容 理论 巧记书本结构–思维导图 模仿 HCIE-Cloud Computing LAB备考第一步:…...

[C++]杨辉三角
目录 题目 解题思路 代码实现 获取数字 打印函数 主函数 全部代码 运行结果 题目 给定一个非负整数numRows ,生成「杨辉三角」的前numRows行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 解题思路 第k列的第i个数字的值第k-1列的(…...
算法通关村十三关-白银:数字与数学高频问题
有很多解题技巧,需要持续积累 1.数组实现加法专题 如果让你用数组来表示一个数,如何实现加法呢? 理论上仍然从数组末尾向前挨着计算就行了,但是实现的时候会发现很多问题,例如需要进位该怎么办? 进一步拓…...

【Linux】线程安全-互斥同步
文章目录 线程安全问题的引入线程互斥互斥概念互斥锁互斥锁的计数器当中如何保证原子性互斥锁基础API初始化互斥锁变量函数动态初始化静态初始化 加锁函数阻塞加锁非阻塞加锁带有超时时间的加锁 解锁函数销毁互斥锁函数 线程同步线程同步的必要性条件变量条件变量的使用原理条件…...

1.初识爬虫
爬虫是批量模拟网络请求的程序,想百度谷歌这种搜索类网站本质上就是爬虫 使用爬虫的时候不应该对别人的网站有严重的影响,比如你爬的频率太高了,让人家的网站崩溃了。不应该爬取网页上显示不到的内容,比如有一个直播的网站&#…...

TLA+学习记录1——hello world
0x01 TLA是个好工具 编程人员一个好习惯是凡事都想偷懒,当然是指要科学地偷懒,而不是真的偷懒。一直想找到一种能检验写出的代码,做出的设计是否真的完全正确,而不是靠经验检视、代码Review、反复测试去检验。因为上述方法不管怎…...

基于QWebEngine实现无头浏览器
无头浏览器 无头浏览器(Headless Browser)是一种没有图形用户界面(GUI)的浏览器。它通过在内存中渲染页面,然后将结果发送回请求它的用户或程序来实现对网页的访问,而不会在屏幕上显示网页。这种方式使得无…...
编译Micropython固件For树莓派Raspberry Pi Pico
1. 前言 由于想把自己编写的py文件打包的固件中,所以记录下如何编译micropython固件和打包。 2. 编译 最简单的方式就是在你的树莓派上进行,我用的是RP Pi2 下载所需文件: $ cd ~/ $ mkdir pico $ cd pico $ git clone -b pico https://gi…...

基于googlenet网络的动物种类识别算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................. % 获取输入层的尺寸 Inp…...

如何用Jmeter编写脚本压测?
随着商业业务不断扩张,调用adsearch服务频率越来越高,所以这次想做个压测,了解目前多少并发量可以到达adsearch服务的界值。 这次选用的jmeter压测工具,压测思路如图: 一、日志入参 日志选取的adsearch 的 getads部分…...
SpingMVC之拦截器使用详解
拦截器概述 SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 过滤器和拦截器区别 过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过…...
motionface respeak新的aigc视频与音频对口型数字人
在当今的数字化时代,人工智能(AI)正在逐渐渗透到我们生活的方方面面。其中,AI技术在视频制作和处理领域的应用也日益广泛。本文将探讨如何利用AI技术实现视频中人脸与音频同步对口型的方法,旨在进一步丰富视频制作的效…...

【计算机网络】 静态库与动态库
文章目录 静态库实践使用方法总结 动态库实践使用方法总结 静态库与动态库的优缺点静态库优点缺点 动态库缺点优点 库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。静态库是将整个库文件都拷…...

web端调用本地摄像头麦克风+WebRTC腾讯云,实现直播功能
目录 关于直播直播流程直播视频格式封装推流和拉流 获取摄像头和麦克风权限navigator.getUserMedia()MediaDevices.getUserMedia() WebRTC腾讯云快直播 关于直播 视频直播技术大全、直播架构、技术原理和实现思路方案整理 直播流程 视频采集端: 1、视频采集&#…...

React笔记(八)Redux
一、安装和配置 React 官方并没有提供对应的状态机插件,因此,我们需要下载第三方的状态机插件 —— Redux。 1、下载Redux 在终端中定位到项目根目录,然后执行以下命令下载 Redux npm i redux 2、创建配置文件 在 React 中,…...
数据库 | 数据库概述、关系型数据库、非关系型数据库
目录: 1.数据库:1.1 数据库的含义1.2 数据库的特点 2.数据表3.数据库管理系统4.数据库系统5.关系型数据库 和 非关系型数据库:5.1 关系型数据库5.2 关系型数据库“优势”5.3 非关系型数据库 6.关系型数据库 和 非关系型数据库 的“区别” 1.数…...
【备战csp-j】 csp常考题目详解(4)
四.数值转换与编码 1. 十进制数 11/128 可用二进制数码序列表示为( ) 。 A.1011/1000000 B.1011/100000000 C.0.001011 D.0.0001011 答案:D 解析:暂时未找到解决方法,以后会解决。 2. 算式(2047)10 - (3FF)16 + …...
linux中常见服务端安装
linux安装服务脚本 1、yum安装 # 通过apt安装yum apt install yum # yum安装软件 yum install pam-devel # yum 卸载 yum remove pam-devel2、rpm安装 # 安装 rpm -i example.rpm #安装 example.rpm 包; rpm -iv example.rpm #安装 example.rpm 包并在安装过程…...

L1-058 6翻了(Python实现) 测试点全过
前言: {\color{Blue}前言:} 前言: 本系列题使用的是,“PTA中的团体程序设计天梯赛——练习集”的题库,难度有L1、L2、L3三个等级,分别对应团体程序设计天梯赛的三个难度。更新取决于题目的难度,…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...