@@ -18,25 +18,25 @@ head:
1818
19191 . 简单易学(语法简单,上手容易);
20202 . 面向对象(封装,继承,多态);
21- 3 . 平台无关性( Java 虚拟机实现平台无关性);
22- 4 . 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
21+ 3 . 平台无关性(Java 虚拟机实现平台无关性);
22+ 4 . 支持多线程(C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
23235 . 可靠性(具备异常处理和自动内存管理机制);
24246 . 安全性(Java 语言本身的设计就提供了多重安全防护机制如访问权限修饰符、限制程序直接访问操作系统资源);
25257 . 高效性(通过 Just In Time 编译器等技术的优化,Java 语言的运行效率还是非常不错的);
26268 . 支持网络编程并且很方便;
27279 . 编译与解释并存;
282810 . ……
2929
30- > ** 🐛 修正(参见:[ issue #544 ] ( https://github.com/Snailclimb/JavaGuide/issues/544 ) )** :C++11 开始(2011 年的时候), C++就引入了多线程库,在 windows、linux、macos 都可以使用` std::thread ` 和` std::async ` 来创建线程。参考链接:< http://www.cplusplus.com/reference/thread/thread/?kw=thread >
30+ > ** 🐛 修正(参见:[ issue #544 ] ( https://github.com/Snailclimb/JavaGuide/issues/544 ) )** :C++11 开始(2011 年的时候), C++ 就引入了多线程库,在 Windows、Linux、macOS 都可以使用` std::thread ` 和` std::async ` 来创建线程。参考链接:< http://www.cplusplus.com/reference/thread/thread/?kw=thread >
3131
3232🌈 拓展一下:
3333
3434“Write Once, Run Anywhere(一次编写,随处运行)”这句宣传口号,真心经典,流传了好多年!以至于,直到今天,依然有很多人觉得跨平台是 Java 语言最大的优势。实际上,跨平台已经不是 Java 最大的卖点了,各种 JDK 新特性也不是。目前市面上虚拟化技术已经非常成熟,比如你通过 Docker 就很容易实现跨平台了。在我看来,Java 强大的生态才是!
3535
3636### Java SE vs Java EE
3737
38- - Java SE(Java Platform, Standard Edition): Java 平台标准版,Java 编程语言的基础,它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建桌面应用程序或简单的服务器应用程序。
39- - Java EE(Java Platform, Enterprise Edition ):Java 平台企业版,建立在 Java SE 的基础上,包含了支持企业级应用程序开发和部署的标准和规范(比如 Servlet、JSP、EJB、JDBC、JPA、JTA、JavaMail、JMS)。 Java EE 可以用于构建分布式、可移植、健壮、可伸缩和安全的服务端 Java 应用程序,例如 Web 应用程序。
38+ - Java SE(Java Platform, Standard Edition): Java 平台标准版,Java 编程语言的基础,它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建桌面应用程序或简单的服务器应用程序。
39+ - Java EE(Java Platform, Enterprise Edition):Java 平台企业版,建立在 Java SE 的基础上,包含了支持企业级应用程序开发和部署的标准和规范(比如 Servlet、JSP、EJB、JDBC、JPA、JTA、JavaMail、JMS)。 Java EE 可以用于构建分布式、可移植、健壮、可伸缩和安全的服务端 Java 应用程序,例如 Web 应用程序。
4040
4141简单来说,Java SE 是 Java 的基础版本,Java EE 是 Java 的高级版本。Java SE 更适合开发桌面应用程序或简单的服务器应用程序,Java EE 更适合开发复杂的企业级应用程序或 Web 应用程序。
4242
@@ -233,7 +233,7 @@ Java 中的注释有三种:
233233
234234![ ] ( https://oss.javaguide.cn/github/javaguide/java/basis/image-20220714112336911.png )
235235
236- 在我们编写代码的时候,如果代码量比较少,我们自己或者团队其他成员还可以很轻易地看懂代码,但是当项目结构一旦复杂起来,我们就需要用到注释了。注释并不会执行(编译器在编译代码之前会把代码中的所有注释抹掉, 字节码中不保留注释),是我们程序员写给自己看的,注释是你的代码说明书,能够帮助看代码的人快速地理清代码之间的逻辑关系。因此,在写程序的时候随手加上注释是一个非常好的习惯。
236+ 在我们编写代码的时候,如果代码量比较少,我们自己或者团队其他成员还可以很轻易地看懂代码,但是当项目结构一旦复杂起来,我们就需要用到注释了。注释并不会执行(编译器在编译代码之前会把代码中的所有注释抹掉, 字节码中不保留注释),是我们程序员写给自己看的,注释是你的代码说明书,能够帮助看代码的人快速地理清代码之间的逻辑关系。因此,在写程序的时候随手加上注释是一个非常好的习惯。
237237
238238《Clean Code》这本书明确指出:
239239
@@ -409,8 +409,8 @@ flowchart TB
409409
410410Java 中有三种移位运算符:
411411
412- - `<< ` : 左移运算符,向左移若干位,高位丢弃,低位补零。`x << n`, 相当于 x 乘以 2 的 n 次方(不溢出的情况下)。
413- - `>> ` : 带符号右移,向右移若干位,高位补符号位,低位丢弃。正数高位补 0 , 负数高位补 1 。`x >> n`, 相当于 x 除以 2 的 n 次方。
412+ - `<< ` : 左移运算符,向左移若干位,高位丢弃,低位补零。`x << n`, 相当于 x 乘以 2 的 n 次方(不溢出的情况下)。
413+ - `>> ` : 带符号右移,向右移若干位,高位补符号位,低位丢弃。正数高位补 0 , 负数高位补 1 。`x >> n`, 相当于 x 除以 2 的 n 次方。
414414- `>>> ` : 无符号右移,忽略符号位,空位都以 0 补齐。
415415
416416虽然移位运算本质上可以分为左移和右移,但在实际应用中,右移操作需要考虑符号位的处理方式。
@@ -990,7 +990,7 @@ public class ConstantVariableExample {
990990### 字符型常量和字符串常量的区别?
991991
992992- ** 形式** : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符。
993- - ** 含义** : 字符常量相当于一个整型值( ASCII 值), 可以参加表达式运算; 字符串常量代表一个地址值( 该字符串在内存中存放位置) 。
993+ - ** 含义** : 字符常量相当于一个整型值( ASCII 值), 可以参加表达式运算; 字符串常量代表一个地址值( 该字符串在内存中存放位置) 。
994994- ** 占内存大小** :字符常量只占 2 个字节; 字符串常量占若干个字节。
995995
996996⚠️ 注意 `char ` 在 Java 中占两个字节。
@@ -1035,7 +1035,7 @@ public void f1() {
10351035// 下面这个方法也没有返回值,虽然用到了 return
10361036public void f(int a) {
10371037 if (... ) {
1038- // 表示结束方法的执行, 下方的输出语句不会执行
1038+ // 表示结束方法的执行, 下方的输出语句不会执行
10391039 return ;
10401040 }
10411041 System . out. println(a);
0 commit comments