自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Java自定义程序使用Ollama实现本地ai调用

Ollama提供两种核心API接口:/api/generate用于单轮问答,/api/chat支持多轮对话。输入支持三种格式:JSON字符串、Map/Object转JSON和流式SSE输入。输出可选择一次性JSON或流式JSON模式,后者支持逐行解析。常用参数包括temperature、top_p等控制生成效果。示例代码展示了Java中如何调用这两种接口,包括传统JSON拼接和流式处理方式。开发人员可根据业务需求灵活组合这些功能,单轮对话适合简单场景,多轮对话则能保持上下文连续性。

2025-08-28 18:54:29 1733

原创 [盘点错误]为什么Lambda表达式不声明变量不报错

该Java代码演示了使用Lambda表达式和Predicate进行数组过滤。在filter方法中,传入的Lambda表达式e->e>50会被编译器自动推断为Predicate<Integer>类型,因此无需显式声明参数类型。这种类型推断是Java 8的特性,编译器根据目标接口Predicate<Integer>的泛型参数确定e应为Integer类型。代码实现了将大于50的元素筛选出来,展示了Java函数式编程的简洁性和类型推断机制。

2025-08-27 11:41:41 489

原创 [小练习]100行不到使用Java Socket网络编程实现定向聊天

本文介绍了基于Java实现的TCP和UDP网络通信程序。TCP版本包含客户端(Send.java)和服务端(Rece.java),分别通过发送(Sen.java)和接收(Rec.java)线程实现双向通信。UDP版本使用不同端口(8888和8889)实现双向通信,核心类包括客户端(Send.java)、服务端(Rece.java)及对应的收发线程。两种实现都支持通过输入"quit"退出,并解决了套接字关闭、线程同步等关键问题。文章详细说明了程序结构、运行步骤和核心代码,并分享了开发过程中

2025-08-26 20:20:53 1310

原创 [收藏向]Java多线程任务执行方式总结

本文总结了Java创建线程的5种主要方式:1)继承Thread类(不推荐,占用继承资源);2)实现Runnable接口(最经典方式);3)使用Runnable+Lambda(Java8推荐写法);4)Callable+FutureTask(支持返回值和异常处理);5)线程池提交任务(生产环境最佳实践)。其中重点对比了Runnable与Callable的区别,并强调线程池在高并发场景下的优势。文章通过最小示例代码展示了每种方式的实现,并分析了其适用场景,建议开发中优先选择线程池配合Lambda表达式的方式。

2025-08-22 11:53:53 1226

原创 [收藏向]JAVA中synchronized用法

Java中synchronized关键字实现线程同步的方式取决于修饰对象类型:修饰非静态方法时锁定当前实例对象(this),仅同步同一实例的线程访问;修饰静态方法时锁定类对象(Class对象),同步所有实例的线程访问。同步代码块可通过synchronized(this)或synchronized(ClassName.class)灵活指定锁对象。关键在于锁定哪个对象决定了线程互斥范围,而非方法或代码本身。

2025-08-21 20:52:02 833

原创 [盘点错误]return写在catch里 ,引起无返回值的错误

的。

2025-08-20 11:26:02 1005

原创 [盘点错误]A中的run()无法实现Runnable 中的run()

这篇文章讨论了在实现Runnable接口时run()方法抛出异常的问题。作者指出,不能随意修改Runnable接口的标准方法签名(void run()),因为Java重写规则不允许子类方法抛出比父类更多的受检异常。文章提供了两种解决方案:1)在run()内部捕获异常并转换为RuntimeException;2)改用Callable接口配合ExecutorService,通过Future.get()来获取异常信息。这些方法既符合Java规范,又能妥善处理异常情况。

2025-08-20 10:56:13 492

原创 [盘点错误]在使用集合sort()时,类不是抽象的, 并且未覆 盖Comparable中的抽象方法compareTo(Object)

Java中Comparable接口的正确使用方式:1. 无泛型写法需用compareTo(Object)并在方法内强制转型;2. 泛型写法Comparable<T>则直接使用compareTo(T)更安全;3. 混用会导致编译错误。建议统一使用泛型版本Comparable<Card>配合compareTo(Card)以避免类型转换错误。Collections.sort()和List.sort()都遵循此规则,泛型不匹配会导致编译失败。

2025-08-15 11:50:19 164

原创 [收藏向]Map遍历几种方式

本文介绍了Java中遍历Map的8种方法:1)使用keySet()/values()/entrySet()配合迭代器;2)增强for循环遍历keySet;3)Java8的forEach+Lambda表达式;4)Stream API遍历;5)Stream+方法引用;6)Enumeration(仅适用于Hashtable等旧类)。作者比较了各种方法的特点,推荐根据场景选择:简单遍历用增强for或forEach,需要过滤转换时用Stream,需要安全删除时用迭代器。文章还提供了示例代码演示每种遍历方式的使用方法。

2025-08-15 10:02:48 1210

原创 [盘点错误]分割无效字符串引起的字符串越界运行问题

摘要:本文讨论了Java中使用String.split()方法时常见的正则表达式转义问题。重点指出当使用"."分割字符串时,由于"."在正则中表示任意字符,会导致错误的分割结果。建议改用"\."或"\s+"进行分割,并配合trim()处理空格。文中通过"68"解析异常案例,分析了数组越界和数字格式异常的原因,强调正确处理分割符号和空白字符的重要性。最后推荐使用"\s+|\."进行分割以确保

2025-08-15 09:48:04 370

原创 [小练习]生成54张扑克牌,洗牌。

本文介绍了扑克牌游戏的Java实现方法,主要包含以下内容:1. 使用集合存储54张牌(13个数字×4种花色+大小王);2. 通过Cards类封装牌面值和花色,并实现Comparable接口进行排序;3. 采用Collections.shuffle()洗牌;4. 按顺序发牌给3个玩家并保留3张底牌;5. 使用数组优化牌面数字到文字的转换;6. 提出代码改进建议,如使用subList简化发牌逻辑、支持多玩家等。文章比较了两种实现方式:直接在类中实现比较和使用外部比较器+权重Map,并提供了参考代码链接。

2025-08-14 18:14:09 934

原创 [收藏向][小技巧]微软PowerRoys键盘快速重音表

微软QuickAccent插件可快速输入特殊字符,但操作繁琐需多次按键。文章整理了数字键、符号键和字母键对应的特殊字符输入方式,如数字键可输入上标、分数,符号键包含数学符号,字母键支持带变音符号的拉丁字母变体。作者吐槽该插件缺乏官方文档,输入过程较为痛苦。本文为伏琪撰写,更多内容可关注订阅号"伏琪"。

2025-08-13 20:17:21 447

原创 [盘点错误]在写TreeSet写重写比较函数时遇到的错误

Java中Comparable和Comparator的区别:Comparable是类内部实现(compareTo方法),定义自然排序;Comparator是外部实现(compare方法),支持多种排序规则。Comparable适用于单一排序场景(如String、Integer),Comparator则更灵活,可创建多个排序规则。典型用法:Comparable通过Collections.sort(list)调用,Comparator需传入实例(如new TreeSet<>(cmp))。开发时若需多

2025-08-13 19:53:27 712

原创 [盘点错误]为什么Set重新写了equals()和hashCode(),add()时还是会放两个一样的对象

Java中HashSet/HashMap调用equals()方法时需要注意方法签名的正确性。本文通过示例代码说明,当自定义类T的equals()方法签名错误(equals(T b))时,集合类实际调用的是Object.equals()而非自定义方法,导致两个相同对象被错误判定为不同。正确的做法是重写equals(Object obj)方法,并添加@Override注解。这是因为Java集合框架内部强制使用Object.equals()签名进行对象比较,其他重载版本不会被调用。正确修改后,集合能正常识别重复元

2025-08-12 15:53:03 143

原创 [盘点错误]方法不会覆盖或实现超类型的方法 @Override

Java中@Override的正确使用 本文介绍了Java中@Override注解的正确用法和常见错误。@Override用于表明方法覆盖父类或实现接口,编译器会检查方法签名是否正确。常见错误包括:方法签名不一致、拼写错误、试图覆盖final/static方法等。文章通过示例对比展示了正确与错误的写法,并提供了排查方法:检查父类方法是否存在、确认拼写、验证方法修饰符等。建议使用IDE的跳转功能来验证是否成功覆盖。

2025-08-12 15:16:39 779

原创 [盘点错误]加泛型<E>系列

本文总结了Java泛型中需要显式指定类型参数<Integer>的场景。主要内容包括:1.当编译器无法推断类型时(如空参数方法、链式调用中);2.构造泛型类实例时(Java7前需显式指定);3.继承泛型父类时;4.静态导入泛型方法时;5.方法引用/Lambda中需要显式指定的情况。核心原则是:当编译器能正确推断类型时可省略,否则必须显式指定。文章通过具体代码示例对比了必须写和可不写的场景,并提供了快速判断的实用规律。

2025-08-12 09:28:07 873

原创 [小技巧]重写equals()时,顺手重写hashCode()

本文通过Java代码示例说明了ArrayList.remove()方法失效的原因及解决方案。当尝试删除Student对象时,由于未重写equals()方法,导致new Student(1,0)被视为不同对象而删除失败。正确的做法是同时重写equals()和hashCode()方法,确保逻辑相等的对象具有相同的哈希值。文章强调这不仅是编码规范要求,更是为了避免在哈希集合中出现逻辑错误。最后给出了简单的hashCode()实现模板,并建议养成同时重写这两个方法的习惯,以预防未来可能出现的bug。

2025-08-11 15:46:43 509

原创 [收藏向]什么情况String类型不放常量池

Java中字符串常量池的存储规则摘要: 不会存入常量池的情况: 使用new String()创建的对象(存储在堆内存) 运行时拼接的非常量字符串(如变量拼接) StringBuilder/StringBuffer动态生成的字符串 未调用intern()方法的动态字符串 外部来源(文件/网络等)读取的字符串 会存入常量池的情况: 字符串字面量(如"hello") final修饰的常量表达式拼接 显式调用intern()方法的字符串 验证方法:通过==比较引用或使用intern()测试。运行

2025-08-11 15:30:42 1453

原创 一个怪程序让你理解static和final组合和分开的情况

② Sub.java③ FinalMethod.java编译运行把三个文件放在同一目录下:预期输出为什么子类能调用未覆盖的同名语句 调用的是子类 自己定义的那个 ,而不是父类 的同名方法。原因:父类的 是 ,对子类完全不可见,因此不存在“覆盖”关系。子类又写了一个 ,这只是一个恰好同名同参的新方法,与父类的 互不影响。通过 类型的引用 调用 时,编译器只会在 类里找可见的方法;父类的 版本根本不在候选列表里。所以:如果你把 向上转型

2025-08-08 17:47:31 327

原创 [收藏向]String类型与基本数据类型与包装类如何转换?

本文介绍了Java中基本数据类型与包装类、String之间的转换方法:1)基本类型与包装类通过valueOf()和xxxValue()实现装箱拆箱;2)String与基本类型使用parseXxx()方法转换;3)基本类型转String推荐valueOf();4)String与包装类转换应使用valueOf()而非构造器。文中提供了对照速记表,并指出转换时需注意NumberFormatException异常,布尔型仅"true"会解析为true。这些转换技巧对Java开发具有重要意义。

2025-08-07 20:19:57 233

原创 [盘点错误]错误: 无法将父类中的构造器 子类应用到给定类型;

【Java构造方法继承问题解析】 当子类继承父类时,若父类只有有参构造方法,子类构造方法必须显式调用父类的有参构造,否则编译器会报错。解决方法有两种:1)在子类构造方法中使用super()显式调用父类有参构造;2)为父类添加无参构造方法。Java规范规定,子类构造方法默认隐式调用父类无参构造,不会自动匹配有参构造。这种设计体现了Java"显式优于隐式"的哲学,避免编译器猜测参数值带来的不确定性。因此,父类若只有有参构造,子类必须显式调用super(参数)。

2025-08-07 19:17:09 360

原创 发现写不写@Override结果都一样,所以这个注解到底有什么用?

父类的。

2025-08-07 16:18:44 506

原创 [盘点错误] 解析时已到达文件结尾

Java代码中类B缺少闭合括号导致编译错误。示例代码展示了抽象类A和子类B的正确继承关系,但因格式不规范难以发现语法问题。建议保持代码规整的书写格式,便于检查括号匹配等基础语法错误。作者伏琪提醒开发者注意代码规范,避免因小错误耗费大量调试时间。

2025-08-06 18:58:40 299

原创 初识接口,方法可以写到子类里,接口到底有什么用?

接口与抽象类的使用场景解析 本文通过支付系统案例对比了接口与抽象类的应用场景。直接实现支付方式会导致代码耦合,而使用Payment接口定义规范后,只需processPayment(Payment payment)即可处理所有支付类型,新增支付方式也无需修改原有代码。文章指出抽象类表示"is-a"关系(如Dog继承Animal),接口表示"can-do"关系(如Dog实现Pet),二者设计目的不同。同时强调使用Object处理多类型会导致类型爆炸、运行时错误等问题,而接

2025-08-06 15:31:32 868

原创 [收藏向]DecimalFormat格式化数据用法

Java的DecimalFormat类提供了灵活的数字格式化功能,支持保留小数位、千位分隔符、百分比等多种格式。通过模式符号如"#"(不补零)、"0"(补零)、","(千位分隔符)等,可以自定义输出样式。它还支持负数特殊格式(如财务常用的括号表示)和科学计数法。使用时需注意线程安全问题和本地化设置,可通过applyPattern方法动态修改格式。该工具类适合处理各种数字显示需求,是Java开发中常用的格式化工具。

2025-08-05 19:24:13 417

原创 [盘点错误]此处不允许使用修饰符private

本文解释了Java接口中变量定义的规则:接口中的变量默认是public static final的,即使不显式声明也会自动补全。因此不能用private或protected修饰接口变量,否则会编译报错。示例展示了合法和不合法的写法,并强调接口变量只能是public static final的。这一规则是Java接口设计的重要特性,开发者应注意遵守。

2025-08-05 16:29:13 216

原创 [盘点错误]找不到符号和参数列表不同

文章讲述了一个编程中的常见错误:编译器自动补全可能引入错误的包引用。作者提醒遇到问题时,应先检查是否被自动补全误导,而非怀疑自己写错。通过对比原本想调用的包和编译器补全的包,指出删除错误补全即可解决问题,否则会调用JDK中的同名包。文末附作者信息。

2025-08-05 10:59:11 239

原创 成绩管理系统JAVA

纯web+数据库Oracle xe +前端jsp课设。

2025-08-04 20:25:18 98

原创 基本数据类型不是Object 的子类为什么也能equals()

明明基本属性类型不是objeck的子类,也能使用equals()

2025-08-04 18:57:56 256

原创 [盘点错误] 二元运算符 ‘+‘ 的操作数类型错误

Java字符串拼接时报错"二元运算符'+'的操作数类型错误"的分析与解决。当使用a.getClass()+''+a.toString()时,由于''是char类型,而getClass()返回Class<?>对象,Java无法自动将Class<?>转换为字符串与char拼接。解决方案是将''改为"",因为空字符串会触发Java的自动类型转换,使getClass()和toString()都能正确转换为字符串进行拼接。正确的写法是a.getClass

2025-08-04 15:02:02 312

原创 [盘点错误]类xxx是公共的, 应在名为 xxx.java 的文件中声明

Java文件命名规范问题:当类声明为public时,必须与文件名完全一致。示例中public class Ball需要保存在Ball.java文件中。解决方案:1) 将文件重命名为Ball.java;2) 或去掉Ball类的public修饰符。一个Java文件只能有一个public类,且非public类数量不限。这是Java语言的基本编译规则,违反会导致"类应在对应文件中声明"的错误提示。

2025-08-04 14:54:00 403

原创 [收藏向]format格式化日期语法

Java日期时间格式化示例代码,展示了各种格式符的使用方法。包括日期部分(%tc完整日期、%tB月份全称等)、时间部分(%tH24小时制、%tM分钟等)和综合格式(%tF ISO日期、%tT 24小时制时间等)。代码使用String.format()方法配合Locale.CHINA进行中文环境格式化,并输出当前时间的各种格式表示。虽然示例使用java.util.Date类,但建议在实际开发中使用Java 8+的java.time包(如LocalDateTime和DateTimeFormatter),以获得更

2025-08-04 09:33:54 386

原创 [错误盘点]无法从静态上下文中引用非静态 变量 this

的,这在 Java 中是允许的(内部类可以继承私有类),但会导致。在子类加一个static就可以。关注伏琪订阅号了解更多。事情起因是我写了这样的代码。

2025-07-31 14:39:45 131

原创 为什么在代码块声明类对象不报错?

原因是:实例块不报错:实例初始化块在“每次创建对象”时都会执行,位置在“调用父类构造器”之后、“本类构造代码”之前。在块里再new Test()完全合法,只是会产生递归:这次new→ 进入新对象的实例块 → 再new Test()→ …如果没有任何终止条件,最终是,但它属于运行时错误,编译器不会提前报错。静态块不报错:静态代码块属于“类的初始化”阶段,发生在main要运行,必须先初始化Test此时,静态字段()已经分配好内存并给了默认值(0)。因此在静态块里执行new Test()

2025-07-30 17:50:07 287

原创 [盘点错误]系统执行student[i].name==name时返回0

摘要:作者伏琪分享了一个Java编程中常见的字符串比较问题。在代码中使用"=="比较字符串导致if语句不执行,因为"=="比较的是对象引用而非内容。正确做法是使用equals()方法比较字符串内容。通过将"a[i].name==temp"改为"a[i].name.equals(temp)"解决了问题。文章提醒开发者注意字符串比较的正确方法,避免类似错误。

2025-07-30 11:37:45 159

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除