三妹对她提议的《教妹学 Java》专栏一直很关心。 “嗯,有点激动。刚开始还以为是个马甲,没想到是真人!” “其实蒋涛点赞的文章很多很多了,二哥的只是其中一篇而已。”三妹出乎意料地泼起了冷水。...Groovy 代码能够完美地兼容 Java 代码,可以用来作为 Java 的一种补充。...你甚至可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本上和使用 Java 代码的方式相同。 许多 Java 开发人员非常喜欢 Groovy 代码和 Java 代码的相似性。...java 命令运行生成的字节码。...大多数情况下,Java 开发者更希望利用 Groovy 的特性来替代一些 Java 中不够优雅的解决方案。
“哥,我看你朋友圈说《教妹学 Java》专栏收到了第一笔赞赏呀,虽然只有一块钱,但我也替你感到开心。”三妹的脸上洋溢着自信的微笑,仿佛这钱是打给她的一样。 ?...由之前的例子我们就可以得出下面这些结论: 接口中允许定义变量 接口中允许定义抽象方法 接口中允许定义静态方法(Java 8 之后) 接口中允许定义默认方法(Java 8 之后) 除此之外,我们还应该知道...最典型的例子就是 Serializable 接口,在 java.io 包下。...: com.cmower.baeldung.interface1.CloneableTest at java.base/java.lang.Object.clone(Native Method) at....CloneableTest.main(CloneableTest.java:11) 第二,Java 原则上只支持单一继承,但通过接口可以实现多重继承的目的。
“哥,你发给我的那篇文章我看了,结果直接把我给看得不想学 Java 了!”三妹气冲冲地说。 “哪一篇啊?”看着三妹面色沉重,我关心地问到。...不过,需要注意的是,Java 7 的时候,字符串常量池从永久代中移动到了堆中,虽然此时永久代还没有完全被移除。Java 8 的时候,永久代被彻底移除。...这个变化也直接影响了 String.intern() 方法在执行时的策略,Java 7 之前,执行 String.intern() 方法的时候,不管对象在堆中是否已经创建,字符串常量池中仍然会创建一个内容完全相同的新对象...;Java 7 之后呢,由于字符串常量池放在了堆中,执行 String.intern() 方法的时候,如果对象在堆中已经创建了,字符串常量池中就不需要再创建新的对象了,而是直接保存堆中对象的引用,也就节省了一部分的内存空间
在 Java 中,索引是从 0 开始的。 “哥,能说一下为什么索引从 0 开始吗?”三妹突然这个话题很感兴趣。...“哦,Java 是基于 C/C++ 语言实现的,而 C 语言的下标是从 0 开始的,所以 Java 就继承了这个良好的传统习惯。...}; demo.varargsMethod(anArray); 也可以直接传递多个字符串,通过逗号隔开的方式: demo.varargsMethod("沉默王二", "一枚有趣的程序员"); 在 Java...{} 如果需要添加元素或者删除元素的话,需要把它转成 java.util.ArrayList。...new ArrayList(Arrays.asList(anArray)); Java 8 新增了 Stream 流的概念,这就意味着我们也可以将数组转成 Stream 进行操作。
性能开销:由于反射涉及到动态解析,因此无法执行 Java 虚拟机优化,再加上反射的写法的确要复杂得多,所以性能要比“正射”差很多,在一些性能敏感的程序中应该避免使用反射。 “那反射有哪些好处呢?”...我先对三妹点点头,然后说:“是的,掌握反射的基本使用方法确实不难,但要理解整个反射机制还是需要花一点时间去了解一下 Java 虚拟机的类加载机制的。”...也就是说,java.lang.Class 是所有反射 API 的入口。 而方法的反射调用,最终是由 Method 对象的 invoke() 方法完成的,来看一下源码(JDK 8 环境下)。...如果反射调用的次数比较多,动态实现的效率就会更高,因为本地实现需要经过 Java 到 C/C++ 再到 Java 之间的切换过程,而动态实现不需要;但如果反射调用的次数比较少,反而本地实现更快一些。”...第一篇:深入理解 Java 反射和动态代理 链接:https://dunwu.github.io/javacore/basics/java-reflection.html#_1-%E5%8F%8D%E5%
眼瞅着三妹的王者荣耀杀得正嗨,我趁机喊到:“别打了,三妹,我们来一起学习 Java 的集合框架吧。” “才不要呢,等我打完这一局啊。”三妹倔强地说。 “好吧。”...Java 集合框架可以分为两条大的支线: Collection,主要由 List、Set、Queue 组成,List 代表有序、可重复的集合,典型代表就是封装了动态数组的 ArrayList 和封装了链表的...Stack 是 Vector 的一个子类,本质上也是由动态数组实现的,只不过还实现了先进后出的功能(在 get、set、add 方法的基础上追加了 pop、peek 等方法),所以叫栈。...public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable
“哈哈,是呀,这次不能再断更了,我要再更 175 篇,总计 200 篇,给广大的学弟学妹们一个完整的 Java 学习体系。”我对未来充满了信心。 “那就开始吧。”三妹说。 ?...abstract class AbstractPlayer { } 关于抽象类的命名,《阿里的 Java 开发手册》上有强调,“抽象类命名要使用 Abstract 或 Base 开头”,这条规约还是值得遵守的
第三件,重新整理《教妹学 Java》专栏,GitHub、码云、在线阅读版的 docsify 和离线版的 PDF 做了全面升级,目前草帅版已经完结。我来重点说说这件事。 先说 GitHub。 ?...我打算至少更新 200 篇,涵盖到 Java 基础的方方面面,比如说 Java 核心知识点、Java 集合框架、Java IO、Java 并发编程和 Java 虚拟机,并且全部都要是原创,工作量还是挺大的...第三,在线阅读是通过码云 Pages + docsify(我之前详细介绍过,点击链接可查看)生成的(持续性白嫖),在此基础上增加了全局搜索、侧边栏和网站小图标。 ?...记得之前更新《教妹学 Java》的 static 关键字的时候,有个小姐姐留言了下面这段话,现在看完后仍然很感动。 ?...现在有了《教妹学 Java》专栏,希望大家像小姐姐一样,多多三连,多多推荐,最重要的是,多来催催进度,嘿嘿!!!
."); } } 这段代码在运行的时候就会抛出以下错误: Exception in thread "main" java.lang.ArithmeticException: 年纪未满 18 岁...,禁止观影 at com.itwanger.s43.ThrowDemo.checkEligibilty(ThrowDemo.java:9) at com.itwanger.s43.ThrowDemo.main...(ThrowDemo.java:16) “throws 关键字的作用就和 throw 完全不同。”...Class.forName() 方法在执行的时候可能会遇到 java.lang.ClassNotFoundException 异常,一个检查型异常,如果没有做处理,IDEA 就会提示你,要么在方法签名上声明
前言 Java 以前自学过一写,现在工作了,时间太久有一些知识都遗忘了,今天开始就更新 Java 了,想着把之前的 Java 基础知识捡起来;从最基础的开始,打好 Java 基础,便于以后复习。...Java 关键字是 Java 编程语言中预定义的具有特殊含义的保留字,这些保留字不能被用作标识符或变量名,而是在语法中有特定的用法和限制。...因此,在编写 Java 代码时,程序员需要遵守 Java 关键字的使用规则,以保证程序的正确性和可读性。...逻辑运算,布尔值是逻辑运算的基础,Java 中的逻辑运算符有:与(&&)、或(||)、非(!)等,常用于对布尔值的运算和操作。 方法返回值,可以将布尔值作为方法的返回值,表示某种条件是否满足。...规定:正数的补码与反码、原码一样,称为三码合一; 负数的补码与反码、原码不一样: 负数的原码:把十进制 转为二进制,然后最高位设置为 1 负数的反码:在原码的基础上
“+ 号操作符其实被 Java 在编译的时候重新解释了,换一种说法就是,+ 号操作符是一种语法糖,让字符串的拼接变得更简便了。”...“是的,不过到了 Java 9,情况发生了一些改变,同样的代码,字节码指令完全不同了。”我说。...同样的代码,在 Java 11 的环境下,字节码指令是这样的: Compiled from "Demo.java" public class com.itwanger.thirtyseven.Demo...“好吧,总之就是 Java 9 以后,JDK 用了另外一种方法来动态解释 + 号操作符,具体的实现方式在字节码指令层面已经看不到了,所以我就以 Java 8 来继续讲解吧。”...“再回到《Java 开发手册》上的那段内容:循环体内,拼接字符串最好使用 StringBuilder 的 append() 方法,而不是 + 号操作符。
我教信息系统开发课程,立即体味到这要求背后的“迭代”二字。不完美的原型作品拿出来,你才可以跟用户有效沟通。因为用户只有见到这种原型后,才可能发现他想的东西跟你想的东西是不是一回事儿。...但教授的前提是学员已经找回了基础创新能力。一旦走上正确的求知与实践路径,你就会进入一种正反馈循环。各种意想不到的好事儿(李笑来常说的serendipity)就会纷纷向你砸过来。 不信?试试呗。...在你看来,创新该怎么教?欢迎留言,我们一起交流讨论。 ----
嗨,《教妹学 Java》专栏的同学们,大家好呀,久违了! 连更 23 讲后,感觉实在是太累了!几乎每天都在写文章,再加上工作和生活,完全是一副丧尸的模样,扛不住。...Java 是一门面向对象的编程语言,也就意味着除了基本数据类型,所有的类都会隐式继承 Object 类。所以下面的结果肯定也会输出 true。
“该讲 try-catch-finally 了。”我说,“try 关键字后面会跟一个大括号 {},我们把一些可能发生异常的代码放到大括号里;try 块后面一般会...
“Java 语言在一开始就提供了相对完善的异常处理机制,这种机制大大降低了编写可靠程序的门槛,这也是 Java 之所以能够流行的原因之一。” “那导致程序抛出异常的原因有哪些呢?”三妹问。...: / by zero at com.itwanger.s41.Demo.main(Demo.java:8) “你看,三妹,这个原生的异常信息对用户来说,显然是不太容易理解的,但对于我们开发者来说,...Error 的出现,意味着程序出现了严重的问题,而这些问题不应该再交给 Java 的异常处理机制来处理,程序应该直接崩溃掉,比如说 OutOfMemoryError,内存溢出了,这就意味着程序在运行时申请的内存大于系统能够提供的内存...“二哥,针对 checked 异常,我在知乎上看到一个帖子,说 Java 中的 checked 很没有必要,这种异常在编译期要么 try-catch,要么 throws,但又不一定会出现异常,你觉得这样的设计有意义吗...显然,Socket 编程中,肯定是会遇到 IOException 的,假如 IOException 是非检查型异常,就意味着开发者也可以不考虑,直接跳过,交给 Java 虚拟机来处理,但我觉得这样做肯定更不合适
定义:关键字是一些英文单词,但在java中有特殊含义,自定义的变量不能和关键字重名。 ii.注:关键字一般都小写。 b) 标识符 i. ...Unicode国际标准码表:java使用的是Unicode码表,该表兼容任何国家的语言。 viii. Char与int转化 1. ...与运算& Java中只要是数字就是int型。 一个int四个字节(4bit),一个比特=8个二进制位。 然后上下两行分别作与运算,得出的结果转化为十进制就是6&3的值。 3. ...编译和运行的过程 javac XXX.java:启动了java的编译器,将xxx.java编译成xxx.class文件;java xxx:启动了java虚拟机,运行xxx这个java程序。
严格区分大小写、不能是Java关键字和保留字。 1.关键字 关键字:Java中的关键字是对编译器有特殊意义的词。...比如class是用来定义类的关键字,编译器遇到class就知道这是定义了一个类 保留字:保留字是Java预留的关键字,虽然现在还没有作为关键字,但是以后升级版本中会成为关键字(包括:goto、const...尽量简单,做到见名知意:比如age、stuName Java变量名没有长度限制。 ②.类名命名规则 满足Pascal(帕斯卡)命名法规范:组成类名的首字母总是要大写HelloImooc 3....真 ==>假 \ 假 ==>真 7.条件运算符 Java中的条件运算符是三目运算符。(++是单目运算符、+ - * /是双目运算符。) 语法:布尔表达式?...Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合; 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 1.方法命名规范 1.始终遵循驼峰命名法。
我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的, 而1.8中放弃了Segment臃肿的设计,取而代之的是采用 Node...a20050114 4 2006032404 5 a20050115 NULL NULL (所影响的行数为 5 行) 结果说明: left join是以A表的记录为基础的...简介 fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。...Session Session是另一种记录客户状态的机制,它是在服务端保存的一个数据结构(主要存储的的SessionID和Session内容,同时也包含了很多自定义的内容如:用户基础信息、权限信息、用户机构信息...如: User user = new User("Java技术栈"); 这就是强引用,user持有了这个对象的存储地址的引用。
在JAVA中,只要给定类的名字,那么就可以通过反射机制来获取类的所有信息。Java 的动态就体现在反射。通过反射我们可以实现动态装配,降低代码的耦合度;动态代理等。...Java中的IO流 java.io包中还有许多其他的流,主要是为了提高性能和使用方便。...27. java序列化 定义:序列化是将 Java 对象转换成字节流的过程。反序列化是将字节流转换成 Java 对象的过程。...Java泛型的实现方法:类型擦除undefinedJava的泛型是伪泛型,因为Java在编译期间,所有的泛型信息都会被擦掉。...31. java类的里面可以再定义一个类吗 java类里面还可以定义一个类,即内部类。java内部类分为: 成员内部类、方法(局部)内部类、静态内部类、匿名内部类 。
答:JDK最核心的组成部分是JVM(Java Virtual Machine),它是Java虚拟机,真正运行Java程序的地方。 什么是核心类库?...答:它是Java本身写好的一些程序,给程序员调用的。 Java程序员并不是凭空开始写代码,是要基于核心类库提供的一些基础代码,进行编程。 什么是JRE?...答:JRE(Java Runtime Enviroment),意思是Java的运行环境;它是由JVM和核心类库组成的;如果你不是开发人员,只需要在电脑上安装JRE就可以运行Java程序。...Java开发工具IDEA 想要在IDEA正确的写一个Java程序,必须先认识一下IDEA的管理Java程序的工程结构。...基础语法 2.1 注释 为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释。
领取专属 10元无门槛券
手把手带您无忧上云