JAVA基础理解

news/2025/10/21 21:06:50/文章来源:https://www.cnblogs.com/ZouTaoFen/p/19140119

1.封装

封装是面向对象的三大特征之一,意思为隐藏对象的属性和实现细节,Java中的封装就是根据访问控制修饰符实现的

  • public(公共的):对外公开,所有类都可以访问
  • protected(受保护的): 只能在同一个包中的类或子类访问
  • default(默认级别): 只有在同一个包中类能访问
  • private(私有的): 不对外公开,只能在该类的对象内部访问
    使用private修饰属性,在通过相应的get和set方法来暴露属性达到封装的效果,使用该方法的好处
    1.灵活控制读和写的访问级别,有些属性只准读不准修改就可以公开读方法,封装写方法
    2.防止错误的修改属性,当属性password有6位数的限制,通过set方法可以很容易的实现该限制

2.多态是怎么实现的

都知道多态是一个父类下有多个子类并且这些子类都重写了该父类的某个方法,这时候声明父类类型但指向不同的子类时,调用父类被重写的方法,实际运行的确实子类的方法,Java虚拟机称这种机制为动态绑定,我所理解的是声明的是父类的类型,所以只能使用父类的方法和属性,但是使用到重写的方法时,虚拟机会自动绑定到指向的子类方法进行执行。

3.Java源文件关于public修饰class的限制

每个Java源文件中可包含多个类或接口的定义,但是最多只有一个类或接口是public修饰的,并且Java源文件必须以其中public修饰的类名命名
image
这种情况下他们都是一个单独的类只是被放到了一个Java源文件中,School的访问控制修饰符为default,new创建School对象时必须在同一个包下

4.基本类型自从转换规则

从小类型到大类型遵循

  • byte->short->int->long->float->double
  • char->int->long->float->double
    但long自动转换成float会丢失精度
    image
    错误是因为a+1的1是int型直接数,byte+int应为int,那为什么1能赋值给byte,因为在赋值时在该类型的取值范围内允许直接赋值(赋值操作符,例如:=,+=,*=,-=,/=,%=),运算操作符就不行。

wait 的虚假唤醒

wait需要放在循环中检查条件,唤醒后还需要检查

public class MultipleConsumersProblem {private static final Object lock = new Object();private static int inventory = 1; // 只有1个商品public static void main(String[] args) throws InterruptedException {// 两个消费者for (int i = 1; i <= 2; i++) {final int consumerId = i;new Thread(() -> {synchronized (lock) {//使用 ifif (inventory <= 0) {try {System.out.println("消费者" + consumerId + ": 等待商品");lock.wait();System.out.println("消费者" + consumerId + ": 被唤醒");} catch (InterruptedException e) {e.printStackTrace();}}inventory--;System.out.println("消费者" + consumerId + ": 成功购买,库存: " + inventory);}}).start();}Thread.sleep(1000);// 生产者补货synchronized (lock) {inventory = 1; // 只补1个商品lock.notifyAll(); // 唤醒所有消费者}}
}
输出结果:
消费者1: 等待商品
消费者2: 等待商品
消费者1: 被唤醒
消费者1: 成功购买,库存: 0
消费者2: 被唤醒
❌ 消费者2: 成功购买,库存: -1

可以发现消费者2也购买成功了,但库存实际不够了,所以wait后应该还检查一次,将if修改成while就可以解决,当然在自减时在进行判断也是可以的但代码不简洁美观

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/942654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户消费行为数据分析(随笔)

需求分析(流程) 1、数据收集 项目的第一步是收集大量的用户消费数据。 2、数据清洗与预处理 收集到的数据可能存在错误、缺失或重复项,需要进行数据清洗和预处理,确保数据的准确性和完整性,使其适合后续的工作。 …

sqlserver 主要的日期函数及用法示例

SQL Server 主要日期函数及用法示例 1. 获取当前日期和时间sqlSELECT GETDATE() AS CurrentDateTime, -- 当前日期时间GETUTCDATE() AS CurrentUTCDateTime, -- 当前UTC时间SYSDATETIME() AS SystemDate…

ICPC2022沈阳 游记(VP)

中期艰难挂机,最后勉强四题仅有铜中。省流 中期艰难挂机,最后勉强四题仅有铜中。10.21 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 点外卖没给一次性筷子,飞奔到食堂获取圣遗物然后 \(4min22s\) 速通结块…

大数据分析基础及应用案例:第四周学习报告——线性回归模型

时间过得很快,大数据分析学习已经进入第四周。这一周,我们聚焦于线性回归模型—— 这个看似简单却贯穿数据分析领域的核心算法。从理论公式推导到实际案例落地,我不仅掌握了模型的基本逻辑,更体会到 “用数据解释规…

「LG7446-rfplca」题解

题解记录P7446 [Ynoi2007] rfplca sol 考虑如何找 LCA,通常来说我们会使用倍增,然而这道题带修,因此倍增不可实现。 考虑对序列分块,每个点维护其父亲以及其最近的不与其在同一块中的祖先,散块重构是简单的,但貌…

图论刷题记录

P8186 [USACO22FEB] Redistributing Gifts SFloyd 传递闭包模板。 首先对于每只奶牛,先看它和那些比在它目前手中礼物要珍贵的礼物的主人能否交换,然后做一遍传递闭包,最后对于每只奶牛直接找排名最靠前并且能与自己…

「LG6596-How Many of Them」题解

题解记录P6596 How Many of Them sol 首先发现 \(n\) 特别小(事实上不如题中给出的这么小。。),于是考虑枚举割边数量。 这么做的一个重要根据是存在如下结论:对于一个 \(n\) 个点,已有 \(k\) 个联通块的图,记第…

骗我呢

\(\mathbf{Part. 1}\) 从右往左考虑肯定没啥前途,我们考虑从上往下扫行。对于每一行,它上面的元素肯定都是单调递增的,又知道元素的值域在 \(0\) 到 \(m\),而一行总共有 \(m\) 个数,因此每行可以被表示为 \(0\) 到…

手搓文件管理系统(持续开发中)

#include<bits/stdc++.h> using namespace std;/*** command:* cd [dirname]* to shift to a name_given dir* mkdir [dirname]* create a new dir under current dir* ls [dirname]* list…

AGC001~030 合集

AGC001~030。2025.3.10 - 2025.10.21。 如果附带了题目大意的话就是最近才做,或者是我过了几个月看不懂自己写的啥了重写了一遍。 如果您认为某些题目的理解不够到位,非常欢迎交流!!/kel,虽然应该也不会有人仔细看…

手写体识别

手写数字识别:基于PyTorch的卷积神经网络实现 一、项目概述 使用PyTorch实现一个基于卷积神经网络(CNN)的手写手写数字识别模型,通过MNIST数据集训练,实现对手写数字(0-9)的分类识别。 二、环境依赖Python 3.x PyTo…

AGC 合集 1.0

AGC001~030。2025.3.10 - 2025.10.21。 收录了前 30 场 AGC 中我写了题解的题目。 如果附带了题目大意的话就是最近才做,或者是我过了几个月看不懂自己写的啥了重写了一遍。 如果您认为某些题目的理解不够到位,非常欢…

20231302邱之钊密码系统设计实验一第二

1.参考相关内容,在Ubuntu或openEuler中(推荐openEuler)中使用OpenSSL库编程实现调用SM2(加密解密,签名验签),SM3(摘要计算,HMAC 计算),SM4(加密解密)算法,使用Markdown记录详细记录实践过程,每完成一项…

你好,我是肆闲:C语言的学习,成长与分享旅程

大家好,我是肆闲。 今天,我写下了我的第一篇博客,就像一个程序员运行了第一段 print("Hello World")一样。代码简单,却标志着一个充满无限可能的新世界,在我眼前打开了大门。作为一个刚入门的小白,我对…

深入BERT内核:用数学解密掩码语言模型的工作原理

传统语言模型有个天生缺陷——只能从左往右读,就像你现在读这段文字一样,一个词一个词往下看,完全不知道后面会出现什么。人类可不是这么学语言的。看到"被告被判**_**",大脑会根据上下文直接联想到&quo…

ZR 2025 NOIP 二十连测 Day 6

100 + 72 + 35 + 0 = 207, Rank 61/131.啊啊啊第一次上 200 /oh25noip二十连测day6 链接:link 题解:题目内 时间:4.5h (2025.10.21 13:40~18:10) 题目数:4 难度:A B C D\(\color{#F39C11} 橙\)*1200估分:100 + 7…

20251021

上午工程实训课接触了电工基础,老师演示了万用表测量、简单电路连接和安全操作规范 下午英语课围绕旅游主题展开听力, 晚上写离散数学作业 间隙用碎片时间整理了课堂笔记,还讨论了实训课上的电路连接问题。 (工程实…

[论文笔记] Precision-Guided Context Sensitivity for Pointer Analysis

Introduction Context-sensitivity 会带来静态分析的精度提升,但是也会带来巨大的开销,这引出一个关键的问题:能否在某些对整体分析的精度有重要影响的函数上选择性的使用 context-sensitivity?这个问题的难点在于…

英语_备忘_疑难

好的,这里有一些关于 **How** 和 **What** 在感叹句中使用的例题,涵盖了常见的规则和易错点。 **规则回顾:*** **What + (a/an) + 形容词 + 名词*** **How + 形容词/副词 + (主谓)** --- **例题:** 请选择正…

朋友圈文案不会写?这个AI指令可能帮得上忙

最近在整理AI提示词的时候,顺手写了个朋友圈文案生成的指令。本来只是自己用,后来发现身边朋友也有这个需求,就想着分享出来。写在前面 刷朋友圈的时候,你有没有发现:有些人随便发个照片配几个字,点赞评论一大堆…