
Java
文章平均质量分 89
Java编程语言技巧经验和框架知识
程序员小迷
从前有只猫,它不去抓老鼠,而是想吃面包店的面包,最终它变成了人.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
定义比较关系为什么不需要“< == > >= <=“都定义?关系运算符?隐式/显式类型转换?运算符优先级有没有通用原则?优先级?
本文系统梳理了编程语言中关系运算符的定义、优先级规则及类型转换机制。主要内容包括:1)关系运算符的定义原理,指出只需实现<和==即可推导其他运算符;2)各语言比较运算符的差异,如JS的宽松/严格比较、SQL的特殊运算符等;3)隐式/显式类型转换的规则与风险;4)运算符优先级的通用原则及C/C++等语言的特性差异;5)常见易错场景分析,如C语言中的位运算与比较运算混淆等。文章通过对比多语言实现,为开发者提供了运算符使用的系统性指导。原创 2025-08-24 10:06:25 · 891 阅读 · 0 评论 -
为什么会设计类protectd访问权限?Swift访问权限控制?Kotlin与Java的访问权限控制对比?C++访问权限控制?类方法默认权限是public or private?
本文系统梳理了主流编程语言(Swift/Java/Kotlin/C++等)的访问权限控制机制。重点对比了public/protected/private/default等权限修饰符在不同语言中的作用范围,分析了类与结构体默认权限差异、继承权限设计原理及protected权限存在的必要性。特别指出ObjC默认protected权限、C++多级继承权限等特性差异,并探讨了main函数权限要求。通过类比"房屋权限"等生活场景,生动阐释了权限控制的现实意义。文章为开发者理解各语言权限体系提供了全原创 2025-08-10 11:28:32 · 567 阅读 · 0 评论 -
为什么C语言枚举标识符必须和相同作用域其他变量名不同?Swift结构体或枚举mutating的本质?为什么Swift枚举变量前面可以加符号“.“?枚举为什么被当做整型?枚举?
本文探讨了枚举类型在不同编程语言中的特性差异。主要内容包括:C语言枚举标识符需保持作用域内唯一的原因;Swift中mutating关键字的作用机理;枚举类型自动转换为整型的硬件优化原因;枚举为何常被视为整型的历史背景;C/C++、Java、C#等语言对枚举的不同实现方式(如C将枚举视为整数,Java作为对象);以及C++11对枚举类型的扩展支持。文章还对比了各语言枚举的使用限制和语法特点,如作用域规则、类型转换等,帮助开发者理解枚举在不同语言环境下的设计哲学和实现机制。原创 2025-08-03 15:12:50 · 797 阅读 · 0 评论 -
void f(const int n)和void f(int n)为什么是重定义?Swift的Void其实就是()?void类型?函数声明?编程语言的基类型?main函数参数?
本文探讨了编程语言中void类型的特性和使用场景。文章首先解释了函数重定义问题,指出const修饰符不影响函数签名。随后分析了void类型在不同语言中的实现:Swift中Void是()的别名,C语言从无void到强制使用void的演变,Python使用None替代void等。文章还介绍了void*作为通用指针的特性,以及各语言处理无返回值函数的方式差异。最后对比了主流语言的基类型设计,并说明了C#中main函数的参数特点。全文系统梳理了void及相关概念在各语言中的实现差异和应用要点。原创 2025-08-02 10:56:23 · 892 阅读 · 0 评论 -
Android开发的福音-Android十年开发终极经验?Android中正确启动一个页面的方法?Android输入法与扫码枪冲突问题解决方案?
Android开发的福音-Android十年开发终极经验作者从事Android开发十年有余,走过的弯路不计其数,深感经验总结有助于在Android上快速前行,早日完全掌握Android,达到Android巅峰!总结内容已汇总到"Android十年终极开发经验_助您不走弯路_快速前行.pdf"文件中。原创 2025-07-29 20:58:11 · 1459 阅读 · 0 评论 -
Swift guard比if判断好在哪里?为什么Swift不允许字符串使用===判断?如何理解Swift的if let语句?if条件语句一定需要括号括起来?if表达式?
本文介绍了Swift中条件语句的几个特性:1)guard语句比if更适合参数预警,代码更简洁;2)===不能用于字符串比较,因为字符串是值类型;3)if let语句可安全解包可选值;4)Swift的if语句不需要括号;5)if表达式可以返回值赋给变量。Swift的条件语句设计灵活,有助于编写更清晰的代码。原创 2025-07-29 20:38:08 · 560 阅读 · 0 评论 -
编程语言的元组?一次返回多个值?函数返回值?输入输出返回值?
本文探讨了编程语言中元组(tuple)的概念及其应用。元组作为一种数据结构,可存储不同类型元素,常用于函数多值返回。文章列举了支持元组的语言(C#、Python等)和不支持的语言(C、Java等),并比较了不同语言处理多值返回的替代方案。同时分析了函数返回值的多种形式,包括简洁返回语法和输入输出函数的返回值特点。最后指出元组在简化代码、避免临时结构体创建方面的优势,为跨语言开发者提供了实用的技术参考。原创 2025-07-29 20:26:15 · 633 阅读 · 0 评论 -
ScrollView 内部嵌套 RecyclerView 导致滑动卡顿问题解决方案?RxJava 的四种 subject: PublishSubject、ReplaySubject、 Behavior
《Android十年开发终极经验分享》总结了一位资深开发者十年的Android开发心得,涵盖重要经验、知识体系、Flutter/Kotlin技术方向、可扩展架构设计及性能优化等核心内容。通过微信公众号"程序员小迷"回复"经验"或点击菜单栏"Android->经验下载"即可免费获取这份干货资料,帮助开发者少走弯路,快速提升Android开发能力。原创 2025-07-27 19:29:32 · 627 阅读 · 0 评论 -
为什么VS编译UTF-8格式源代码, 代码中字符串却是ANSI编码?如何快速获取字符串的UTF-8或UTF-16编码二进制数据?Java .class文件编码和JVM运行期内存编码?字符串默认编码?
本文探讨了编程中常见的字符串编码问题。首先解释了VS编译UTF-8源代码时字符串却显示ANSI编码的原因,指出编译器默认使用操作系统编码而非源代码编码。接着提供了多种语言获取字符串编码数据的方法,包括Swift、Java等。文章详细分析了不同编程语言和环境的字符串默认编码差异,如GCC/Clang使用UTF-8,MSVC使用ANSI,Java/C#使用UTF-16等。针对VS编译UTF-8无BOM文件时出现"常量中有换行符"错误的问题,建议使用/utf-8命令行参数解决。本文为开发者处理原创 2025-07-19 09:48:40 · 779 阅读 · 0 评论 -
C# char和Char与Java的char和Character?什么是值类型?值类型和引用类型?其它类型转换成数值类型?
本文对比了C#和Java中char类型的不同实现,分析了值类型与引用类型的区别。文章详细介绍了不同编程语言中类型转换的规则,特别是非数值类型转换为数值类型的处理方式,包括JavaScript、C#和VB的转换方法。同时提供了C#中字符串转换数值的API(Parse/TryParse/Convert)和JavaScript相关函数(Number/parseInt/parseFloat)的使用说明,强调了参数类型对结果的影响。最后介绍了相关技术分享平台和微信公众号。原创 2025-07-19 09:29:12 · 926 阅读 · 0 评论 -
Java与Kotlin语言的特色之处
4.更安全的类型转换 在Java中,类型转换时常会出现运行时异常,而Kotlin通过使用"as?协程提供了一种轻量级的并发模型,可以避免传统线程和锁的使用,简化了并发编程的复杂性。致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享。一个try块可能捕获到多个异常,可以使用多个catch块分别处理每个异常,也可以使用一个catch块处理多个异常(多个异常使用管道符|分隔)。不支持八进制的字面常量。原创 2024-04-11 18:30:19 · 332 阅读 · 0 评论 -
虚拟机无法联网?虚拟机安装Tools?为什么Java程序运行需要ClassLoader?只有Java语言才可以运行在JVM之上吗?什么是中间代码?JVM是用什么语言编写的?
本文介绍了虚拟机使用中的常见问题及解决方案,包括网络连接故障排查和Tools安装方法。同时深入探讨了Java虚拟机的核心机制,包括类加载器的作用、JVM多语言支持特性、中间代码的概念以及JVM的实现语言。文章还指出除Java外,多种编程语言如Kotlin、Scala等都可以运行在JVM上,并通过对比C++等编译型语言,阐明了Java字节码的执行原理。最后提供了技术交流渠道,包括微信公众号和网站资源。原创 2025-06-22 10:59:26 · 938 阅读 · 0 评论 -
为什么编译Open JDK还需要旧版本JDK?Swift编译器是什么语言编写?X语言编译器可以用X语言编写吗?GCC是用什么语言编写的?编程语言出现之前,编译器或解释器用什么语言编写?
编译Open JDK需要旧版本JDK是因为JDK本身是用Java编写的,需要旧版JDK来编译。Swift编译器主要用C++和Swift编写。X语言编译器最初不能用X语言编写,需用其他语言编写初始编译器后,才能用X语言编写。编程语言或编译器的自举是指用某种语言编写该语言的编译器。GCC早期用C语言编写,后转向C++。其他编译器/解释器如MSVC、Clang、Java编译器等也经历了类似的发展过程。原创 2025-06-15 15:40:32 · 996 阅读 · 0 评论 -
为什么Swift不允许字符串使用===判断?Swift字符串默认编码?字符串默认编码?哪些编程语言支持字符串插值?各式各样的字符串类型?
摘要:本文探讨Swift字符串特性,包括为何禁用===运算符(因其为值类型),以及默认编码从ASCII/UTF-16转向UTF-8的演进。对比各语言(如C/C++、Java、Python等)的字符串编码差异,分析主流语言对字符串插值的支持方式(如C#的$语法、JS的模板字面量),解析插值技术的实现本质(如C#通过string.Format转化)。最后列举不同语言的字符串类型设计特点(如Go的值类型字符串、JS的基本字符串与对象区别),为开发者提供跨语言字符串处理的技术参考。(149字)原创 2025-06-08 11:20:57 · 1017 阅读 · 0 评论 -
常量一定在定义时初始化吗?为什么C#有const和readonly两种常量关键字?const常量的不同形式?变量或常量修改?
本文探讨了编程语言中常量(const)的相关概念和使用差异。主要内容包括:常量初始化规则(如C#的const和readonly区别)、不同语言对常量的实现方式(C/C++/Java/Python等)、const指针的解读方法、const对代码大小的影响,以及字符串常量的修改问题。文章指出,常量定义时应初始化以避免修改,不同语言对常量的处理各有特点(如C的"不可修改变量"与C++的真正常量),并解释了const与指针组合的解读方法。最后强调字符串字面量在多语言中的保护机制,提醒开发者注意不原创 2025-06-02 10:41:54 · 779 阅读 · 0 评论 -
元组可以比较大小吗?一次返回多个值?编程语言的元组?声明变量一定需要指定类型吗?
摘要:本文探讨了编程语言中元组(tuple)的特性与应用。元组作为一种不可变的多元素数据结构,在C#、Python、Swift等语言中支持,可用于一次返回多个值。文中对比了不同语言对元组的支持程度,详述了元组的初始化方法、类型推导机制(如var/auto关键字),并指出元组比较大小的规则因语言而异。文章还分析了现代编程语言的类型推导发展趋势,强调元组在简化代码、避免临时结构体方面的优势。原创 2025-05-24 13:05:37 · 766 阅读 · 0 评论 -
Ctrl + D是如何与内核文件结束符对应的?如何模拟文件结束符?数字中间为什么不能插入空格或逗号?丰富多彩的语句结束符或分隔符?语句结束符?
在Unix/Linux系统中,Ctrl+D用于表示输入流结束,对应内核的文件结束符EOF。Windows系统则使用Ctrl+Z实现相同功能。模拟文件结束符可通过发送ASCII码4(EOT)实现。许多编程语言如C++、Java、C#、JavaScript等支持在数值中使用下划线_作为分隔符以增强可读性。数字中间不能插入空格或逗号,因为这增加了编译器解析的复杂性。不同编程语言使用不同的语句结束符,如分号、换行符或冒号。误用分号可能导致逻辑错误,尤其是在条件语句中。SQL语言支持更改语句分隔符,而其他语言如C/C原创 2025-05-10 09:57:33 · 1081 阅读 · 0 评论 -
/*和/ *的差异?为什么不支持嵌套注释?注释/*和//的起源?为什么注释不能在字符或者字符串中?丰富多彩的注释形式?
/ 最早是BCPL作为单行注释,后来C++也以它作为单行注释,C89并未用它,直到C99标准才吸纳//. 需要注意,编程语言理论上可以选择任何不冲突的字符作为注释符,C系语言延续/*和//只是为了兼容和省事。原创 2025-05-05 09:51:34 · 944 阅读 · 0 评论 -
Swift可以像Python一样在定义变量时省略var或者let?定义常量和变量的不同形式?const常量的不同形式?变量或常量修改?
Swift是一门静态类型语言,它在编译时就需要知道每个变量的类型。为了满足这一要求,Swift 要求在定义变量时显式地声明它们是变量(var)还是常量(let这样做的好处是增加了代码的清晰性和可读性,同时也允许编译器在编译时进行更严格的类型检查。而Python是动态类型语言,不需要考虑变量定义,只需要用即可。C/C++/ObjC/C#/JS/Go 默认声明的是变量,const关键字变成常量是大部分编程语言的首选。Swift/仓颉 用let声明常量,var声明变量。原创 2025-05-04 09:01:58 · 814 阅读 · 0 评论 -
ObjC和C/C++代码转换的方法?C#如何很方便查看IL中间代码?如何展示源代码在不同编译器编译的汇编代码或中间代码?如何反编译java字节码?
通俗的解释,为了让所有编程语言统一,可以让任何编程语言先编译成一样格式的中间代码,用解释器执行中间代码就可以达到让所有编程语言都可以用解释器执行。甚至可以让C/C++/Python/Java都用一套Java虚拟机(当然前提是编译支持C/C++/Python生成字节码)。微软的MSIL和Java字节码是一个概念,只不过是.NET编程语言统一了中间代码。Java语言不同类型编译器人类对性能的期望永无止境。原创 2025-03-16 11:39:53 · 605 阅读 · 0 评论 -
ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定?字符串默认编码?
如下为例,NSString *s = @"a我a",以GNUStep GCC编译器为参考,用默认UTF-8源代码编码格式,字符串s是UTF-8编码。gcc编译器增加-fexec-charset=GB2312修改字符串编码,可以编译通过,s就变成了GB2312编码格式。这说明,NSString字符串编码是跟随编译器的设定,而非所谓ObjC语言规范,ObjC语言本身也没有这个规范。原创 2025-03-15 11:28:03 · 690 阅读 · 0 评论 -
%a和%A格式串?为什么%lx会将lx作为格式串, %fx只会将f作为格式串?C语言是如何区分开%f和%lf的?%ld和%d的区别?%d和%i的区别?%l %h和%d %o %u %x?万能格式串?
C语言中,%a或%A用于在*printf函数中以十六进制浮点数的形式输出一个float或double类型的值。输出格式一般是,其中h.hhhh是十六进制的小数部分,p是分隔符,d是指数部分,底数是2.输出结果:0x1.8p+00X1.8P+0。原创 2025-03-09 11:26:44 · 791 阅读 · 0 评论 -
可以控制结构体或类的字段偏移吗?为什么结构体要考虑对齐?如何优雅的展示一个类对象或结构体?Swift结构体或枚举mutating的本质?Swfit结构体和类设计?结构体指定成员初始化是哪个标准引入的?
mutating会让编译器将结构体或枚举成员函数的第一个参数self加上inout修饰符,即相应的代码修改会直接改到结构体或枚举本身,而不是self参数因为是值类型而被复制的结构体或枚举。原创 2025-03-08 10:40:15 · 678 阅读 · 0 评论 -
NSDirectoryEnumerator为什么只有nextObject没有currentObject?NSLog和printf的区别?输入输出返回值?标准输入输出?
标准输出概念最早起源于Unix操作系统,它默认有三个基本默认的I/O流:标准输入(stdin),标准输出(stdout)和标准错误(stderr)。不止这个类,还有其它类,其它编程语言也有类似的设计。原创 2025-03-08 10:32:06 · 673 阅读 · 0 评论 -
ObjC的autoreleasepool是GC机制吗?如何显示Java程序执行过程GC信息?哪些编程语言提供GC(Garbage Collection)机制?ARC和GC的区别?
不是,不管是ObjC 1.0 NSAutoreleasePool还是2.0的@autoreleasepool, 它们都是手动内存管理(MRC)的一种机制,只不过它与retain/release显得稍微智能化,它不属于GC机制,也不算所谓的"自动垃圾回收机制"。autoreleasepool是自动释放池,是程序员为了方便代码中一些自动创建的对象能得到及时清理的机制。为什么有这个需求?原创 2025-03-02 07:30:22 · 456 阅读 · 0 评论 -
如何分析Windows平台.exe文件是用什么语言编写?如何编译Windows版本JDK?为什么在Windows命令行输入shift执行shift.exe会没有任何输出?
Windows平台有包罗万象的可执行文件和动态链接库,五花八门的编程语言可能会让你感到困扰。某个应用程序是用什么语言编写的呢?C、C++、C#还是Java?原创 2025-02-23 11:55:57 · 1389 阅读 · 0 评论 -
多继承的困扰?为什么会设计类protectd访问权限?基类?怎么理解子类和父类的继承权限public protected private?
C++多继承的设计其实会产生极为复杂的结果,当继承层数超过3,应该调用哪一个基类的哪个函数就可能不好分辨了。大部分更现代的编程语言,都不支持多继承。原创 2025-02-16 10:45:48 · 402 阅读 · 0 评论 -
可变参数其实不复杂?参数默认值?函数默认参数?函数参数?未初始化的变量?
小伙伴们听到可变参数,可能会觉得里面包含各种类型和不定数量的变量,实现起来是不是不容易。事实上,可变参数的实现反而是很简单的。原创 2025-02-15 11:47:11 · 797 阅读 · 0 评论 -
为什么会设计类protected访问权限?怎么理解子类和父类的继承权限public protected private?ObjC类方法默认权限public?Swift权限控制?Kotlin访问修饰符?
一个人会让房子给他的儿子或者女儿住,但是外人不能随便去住,这就是protected访问权限的典型代表。ObjC语言是鲜有的设计默认实例成员是protected访问权限,C++默认是private. C++的设计比较common, 从语言语法角度,private是最安全的,ObjC很可能是受到GUI界面和类库继承体系的使用影响,设计成protected可以方便子类使用。原创 2025-02-03 11:01:56 · 720 阅读 · 0 评论 -
哪些编程语言可以运行期创建类?Java .class文件编码和JVM运行期内存编码?明明是一个通用指针类型, 为什么运行期可以找到正确的类对象?RTTI机制的原理?
大部分静态语言都不能支持运行期创建类,越是高级或者解释型语言,对运行期创建类的支持越方便。越高级的语言,有运行时的支持,"虚拟机"记录了所有类的讯息,当然也就容易支持创建类。原创 2025-02-02 11:03:25 · 493 阅读 · 0 评论 -
.cc扩展名是什么语言?C语言必须用.c为扩展名吗?主流编程语言扩展名?Java为什么不能用全数字的文件名?
cc是C++语言使用的扩展名,一种说法是它是c with class的简写,当然C++语言使用的扩展名不止.cc和.cpp, 还包含.cxx, .c++, .C等,这些在不同编译器系统采用的默认设定不同,需要区分使用。当然,编译器提供编译选项将源代码指定为特定编程语言的方式,例如gcc提供-x c++将源代码指定为c++代码,哪怕源代码扩展名是.java也会被当做c++代码。原创 2025-01-31 11:48:33 · 1457 阅读 · 0 评论 -
什么是macOS的五大API法王?Foundation.framework的底层实现?Swift如何引入ObjC框架?Carbon库的没落?什么是Cocoa?Cocoa和Cocoa Touch是什么语
Cocoa是苹果操作系统macOS和iOS上的应用程序开发框架集合,核心语言是Objective-C编程语言,在移动平台被称为Cocoa Touch,Cocoa包含多个子框架,其中最重要的包括Foundation和AppKit(macOS上)或UIKit(iOS上).Foundation框架提供了一系列与图形用户界面无关的基本服务,如字符串处理、集合、文件系统操作等。这些服务对于所有类型的应用程序都是必要的基础设施。原创 2025-01-25 12:11:02 · 1135 阅读 · 0 评论 -
如何很快将文件转换成另外一种编码格式?编码?按指定编码格式编译?如何检测文件编码格式?Java .class文件编码和JVM运行期内存编码?
如果是VS,就没有这样的烦恼,它可以自动检测编码,即使是UTF-16LE编码,可以用cl.exe demo.c轻松编译通过,不用特别指定编码。原因是你可能包含了系统头文件,而它们是用默认UTF-8编码的。原创 2025-01-04 10:45:58 · 1293 阅读 · 0 评论