Java最新写给大忙人看的 Java 基础知识,阿里巴巴面试会问的问题

Spring全套教学资料

Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。

目录:

部分内容:

Spring源码

  • 第一部分 Spring 概述
  • 第二部分 核心思想
  • 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
  • 第四部分 Spring IOC 高级应用
    基础特性
    高级特性
  • 第五部分 Spring IOC源码深度剖析
    设计优雅
    设计模式
    注意:原则、方法和技巧
  • 第六部分 Spring AOP 应用
    声明事务控制
  • 第七部分 Spring AOP源码深度剖析
    必要的笔记、必要的图、通俗易懂的语言化解知识难点

脚手框架:SpringBoot技术

它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。

Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。

  • SpringBoot入门
  • 配置文件
  • 日志
  • Web开发
  • Docker
  • SpringBoot与数据访问
  • 启动配置原理
  • 自定义starter

微服务架构:Spring Cloud Alibaba

同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

  • 微服务架构介绍
  • Spring Cloud Alibaba介绍
  • 微服务环境搭建
  • 服务治理
  • 服务容错
  • 服务网关
  • 链路追踪
  • ZipKin集成及数据持久化
  • 消息驱动
  • 短信服务
  • Nacos Confifig—服务配置
  • Seata—分布式事务
  • Dubbo—rpc通信

Spring MVC

目录:

部分内容:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

type 可以是任意的基本数据类型或者引用类型。来看下面这个例子:

public class ArraysDemo {

public static void main(String[] args) {

int [] nums = new int[10];

nums[0] = 18;

nums[1] = 19;

System.out.println(nums[0]);

}

}

数组的索引从 0 开始,第一个元素的索引为 0,第二个元素的索引为 1。为什么要这样设计?感兴趣的话,你可以去探究一下。

通过变量名[索引]的方式可以访问数组指定索引处的元素,赋值或者取值是一样的。

04、关键字

关键字属于保留字,在 Java 中具有特殊的含义,比如说 public、final、static、new 等等,它们不能用来作为变量名。为了便于你作为参照,我列举了 48 个常用的关键字,你可以瞅一瞅。

  1. abstract: abstract 关键字用于声明抽象类——可以有抽象和非抽象方法。

  2. boolean: boolean 关键字用于将变量声明为布尔值类型,它只有 true 和 false 两个值。

  3. break: break 关键字用于中断循环或 switch 语句。

  4. byte: byte 关键字用于声明一个可以容纳 8 个比特的变量。

  5. case: case 关键字用于在 switch 语句中标记条件的值。

  6. catch: catch 关键字用于捕获 try 语句中的异常。

  7. char: char 关键字用于声明一个可以容纳无符号 16 位比特的 Unicode 字符的变量。

  8. class: class 关键字用于声明一个类。

  9. continue: continue 关键字用于继续下一个循环。它可以在指定条件下跳过其余代码。

  10. default: default 关键字用于指定 switch 语句中除去 case 条件之外的默认代码块。

  11. do: do 关键字通常和 while 关键字配合使用,do 后紧跟循环体。

  12. double: double 关键字用于声明一个可以容纳 64 位浮点数的变量。

  13. else: else 关键字用于指示 if 语句中的备用分支。

  14. enum: enum(枚举)关键字用于定义一组固定的常量。

  15. extends: extends 关键字用于指示一个类是从另一个类或接口继承的。

  16. final: final 关键字用于指示该变量是不可更改的。

  17. finally: finally 关键字和 try-catch 配合使用,表示无论是否处理异常,总是执行 finally 块中的代码。

  18. float: float 关键字用于声明一个可以容纳 32 位浮点数的变量。

  19. for: for 关键字用于启动一个 for 循环,如果循环次数是固定的,建议使用 for 循环。

  20. if: if 关键字用于指定条件,如果条件为真,则执行对应代码。

  21. implements: implements 关键字用于实现接口。

  22. import: import 关键字用于导入对应的类或者接口。

  23. instanceof: instanceof 关键字用于判断对象是否属于某个类型(class)。

  24. int: int 关键字用于声明一个可以容纳 32 位带符号的整数变量。

  25. interface: interface 关键字用于声明接口——只能具有抽象方法。

  26. long: long 关键字用于声明一个可以容纳 64 位整数的变量。

  27. native: native 关键字用于指定一个方法是通过调用本机接口(非 Java)实现的。

  28. new: new 关键字用于创建一个新的对象。

  29. null: 如果一个变量是空的(什么引用也没有指向),就可以将它赋值为 null。

  30. package: package 关键字用于声明类所在的包。

  31. private: private 关键字是一个访问修饰符,表示方法或变量只对当前类可见。

  32. protected: protected 关键字也是一个访问修饰符,表示方法或变量对同一包内的类和所有子类可见。

  33. public: public 关键字是另外一个访问修饰符,除了可以声明方法和变量(所有类可见),还可以声明类。main() 方法必须声明为 public。

  34. return: return 关键字用于在代码执行完成后返回(一个值)。

  35. short: short 关键字用于声明一个可以容纳 16 位整数的变量。

  36. static: static 关键字表示该变量或方法是静态变量或静态方法。

  37. strictfp: strictfp 关键字并不常见,通常用于修饰一个方法,确保方法体内的浮点数运算在每个平台上执行的结果相同。

  38. super: super 关键字可用于调用父类的方法或者变量。

  39. switch: switch 关键字通常用于三个(以上)的条件判断。

  40. synchronized: synchronized 关键字用于指定多线程代码中的同步方法、变量或者代码块。

  41. this: this 关键字可用于在方法或构造函数中引用当前对象。

  42. throw: throw 关键字主动抛出异常。

  43. throws: throws 关键字用于声明异常。

  44. transient: transient 关键字在序列化的使用用到,它修饰的字段不会被序列化。

  45. try: try 关键字用于包裹要捕获异常的代码块。

  46. void: void 关键字用于指定方法没有返回值。

  47. volatile: volatile 关键字保证了不同线程对它修饰的变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。

  48. while: 如果循环次数不固定,建议使用 while 循环。

05、操作符

除去“=”赋值操作符,Java 中还有很多其他作用的操作符,我们来大致看一下。

①、算术运算符

  • +(加号)

  • –(减号)

  • *(乘号)

  • /(除号)

  • %(取余)

来看一个例子:

public class ArithmeticOperator {

public static void main(String[] args) {

int a = 10;

int b = 5;

System.out.println(a + b);//15

System.out.println(a - b);//5

System.out.println(a * b);//50

System.out.println(a / b);//2

System.out.println(a % b);//0

}

}

“+”号比较特殊,还可以用于字符串拼接,来看一个例子:

String result = “沉默王二” + “一枚有趣的程序员”;

②、逻辑运算符

逻辑运算符通常用于布尔表达式,常见的有:

  • &&(AND)多个条件中只要有一个为 false 结果就为 false

  • ||(OR)多个条件只要有一个为 true 结果就为 true

  • !(NOT)条件如果为 true,加上“!”就为 false,否则,反之。

来看一个例子:

public class LogicalOperator {

public static void main(String[] args) {

int a=10;

int b=5;

int c=20;

System.out.println(a<b&&a<c);//false

System.out.println(a>b||a<c);//true

System.out.println(!(a<b)); // true

}

}

③、比较运算符

  • < (小于)

  • <= (小于或者等于)

  • > (大于)

  • >= (大于或者等于)

  • == (相等)

  • != (不等)

06、控制语句

控制语句可以分为 3 种:

1)条件判断,包括 if / else / else if、三元运算符、switch。

if 语句可以单独使用,但通常和 else 在一起配合使用,如果条件判断超过两个以上,还会用到 else if。

来看一个简单的示例,判断闰年的。

public class LeapYear {

public static void main(String[] args) {

int year = 2020;

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {

System.out.println(“闰年”);

} else {

System.out.println(“普通年份”);

}

}

}

如果执行语句比较简单的话,可以使用三元运算符来代替 if-else 语句,如果条件为 true,返回 ? 后面 : 前面的值;如果条件为 false,返回 : 后面的值。

public class IfElseTernaryExample {

public static void main(String[] args) {

int num = 13;

String result = (num % 2 == 0) ? “偶数” : “奇数”;

System.out.println(result);

}

}

switch 语句用来判断变量与多个值之间的相等性。变量的类型可以是 byte、short、int、long,或者对应的包装器类型 Byte、Short、Integer、Long,以及字符串和枚举。

来看个简单的示例:

public class Switch1 {

public static void main(String[] args) {

int age = 20;

switch (age) {

case 20 :

System.out.println(“上学”);

break;

case 24 :

System.out.println(“苏州工作”);

break;

case 30 :

System.out.println(“洛阳工作”);

break;

default:

System.out.println(“未知”);

break; // 可省略

}

}

}

2)循环遍历,包括 for、while、do-while。

来看个简单的 for 循环示例:

public class PyramidForExample {

public static void main(String[] args) {

for (int i = 0; i < 5; i++) {

for (int j = 0;j<= i;j++) {

System.out.print(“❤”);

}

System.out.println();

}

}

}

输出结果如下所示:

❤❤

❤❤❤

❤❤❤❤

❤❤❤❤❤

while 和 do-while 通常要和分支语句一块使用,随后来看。

3)分支语句,包括 continue、break。

来看一个在 do-while 循环中 continue(立即跳转到下一个循环)的例子。

public class ContinueDoWhileDemo {

public static void main(String[] args) {

int i=1;

do{

if(i==5){

i++;

continue;

}

System.out.println(i);

i++;

}while(i<=10);

}

}

再来看一个在 while 循环中 break(中断程序的当前流程)的例子:

int i = 1;

while (i <= 10) {

if (i == 5) {

i++;

break;

}

System.out.println(i);

i++;

}

07、程序结构

Java 中最小的程序单元叫做类,一个类可以有一个或者多个字段(也叫作成员变量),还可以有一个或者多个方法,甚至还可以有一些内部类。

如果一个类想要执行,就必须有一个 main 方法——程序运行的入口,就好像人的嘴一样,嗯,可以这么牵强的理解一下。

public class StructureProgram {

public static void main(String[] args) {

System.out.println(“没有成员变量,只有一个 main 方法”);

}

}

  • 类名叫做 StructureProgram,在它里面,只有一个 main 方法。

  • {} 之间的代码称之为代码块。

  • 以上源代码将会保存在一个后缀名为 java 的文件中。

main 方法的写法通常来说是固定的,就像上面代码展示的那样,但它还有几种不常见的变体,你知道吗?

第一种,中括号“[]” 更靠近 args 而不是 String:

public static void main(String []args) { }

第二种,中括号在 args 后面:

public static void main(String args[]) { }

第三种,使用可变参数的形式而不是数组的形式:

public static void main(String…args) { }

第四种,在 main 方法上加一个 strictfp 关键字(确保方法体内的浮点数运算在每个平台上执行的结果相同):

public strictfp static void main(String[] args) { }

第五种,为 args 参数加上 final 关键字修饰,确保 args 参数不会被修改:

public static void main(final String[] args) { }

是不是有种豁然开朗的感觉?

08、包

在 Java 中,我们使用包对相关的类、接口进行分组。这样做有以下好处:

  • 方便查找,通过包的路径就可以找到相关的类。

  • 避免类的命名冲突,比如说 com.niubi.Wanger 和 com.youxiu.Wanger 是不同的,因为 Wanger 类所在的包是不同的。

  • 通过包和访问权限符(public、private、protected)来控制类的可见性。

包的关键字叫 package,它通常在 Java 文件中的第一行。它的命名遵守以下约定:

  • 必须使用小写字母

  • 可以由多个单词组成,使用英文“.”隔开

  • 一般由创建它的公司或者组织的倒序命名,比如说 org.apache 其实就是 apache.org 的倒序。

为了在一个包中使用另外一个包中的类,需要通过 import 关键字导入。

import com.cmower.Wanger;

09、编译然后执行代码

通常,一些教程在介绍这块内容的时候,建议你通过命令行中先执行 javac 命令将源代码编译成字节码文件,然后再执行 java 命令指定代码。

但我不希望这个糟糕的局面再继续下去了——新手安装配置 JDK 真的蛮需要勇气和耐心的,稍有不慎,没入门就先放弃了。况且,在命令行中编译源代码会遇到很多莫名其妙的错误,这对新手是及其致命的——如果你再遇到这种老式的教程,可以吐口水了。

好的方法,就是去下载 IntelliJ IDEA,简称 IDEA,它被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克(位于东欧),开发人员以严谨著称。IDEA 分为社区版和付费版两个版本,新手直接下载社区版就足够用了。

安装成功后,可以开始敲代码了,然后直接右键运行(连保存都省了),结果会在 Run 面板中显示,如下图所示。

想查看反编译后的字节码的话,可以在 src 的同级目录 target/classes 的包路径下找到一个 StructureProgram.class 的文件(如果找不到的话,在目录上右键选择「Reload from Disk」)。

可以双击打开它。

//

// Source code recreated from a .class file by IntelliJ IDEA

// (powered by Fernflower decompiler)

//

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例

MyBatis答案解析
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

(连保存都省了),结果会在 Run 面板中显示,如下图所示。

想查看反编译后的字节码的话,可以在 src 的同级目录 target/classes 的包路径下找到一个 StructureProgram.class 的文件(如果找不到的话,在目录上右键选择「Reload from Disk」)。

可以双击打开它。

//

// Source code recreated from a .class file by IntelliJ IDEA

// (powered by Fernflower decompiler)

//

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
[外链图片转存中…(img-K0ILOhrX-1715425788935)]

[外链图片转存中…(img-EKB5vCze-1715425788936)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java核心技术是计算机科学领域中最重要的编程语言之一,广泛应用于软件开发、云计算和大数据处理等领域。为了方便大忙人下载学习,以下是关于Java核心技术的一些下载建议。 首先,您可以在Oracle官方网站上获取Java开发工具包(JDK)。JDK提供了编译和运行Java程序所需的各种工具和库文件。您可以根据您的操作系统版本选择合适的JDK版本进行下载。下载完成后,按照安装向导进行安装即可。 其次,您可以在Java官方网站上找到Java编程语言规范的文档。这些规范描述了Java语言的语法、语义和特性,是学习Java编程的基础。您可以选择下载最新版本的Java语言规范,并阅读文档以便更好地理解Java编程语言的使用和设计原则。 此外,Java核心技术维护者还提供了丰富的教程和示例代码,以帮助程序员更好地学习和应用Java。您可以在Java官方网站上找到官方发布的教程和手册,这些资源涵盖了Java核心技术的各个方面,包括面向对象编程、多线程、异常处理和网络编程等。同时,您还可以在开源社区中找到大量的Java教程和示例代码,如GitHub等,这些资源通常由开发者们共享,能够帮助您更深入地学习和理解Java核心技术的实际应用。 最后,您可以考虑加入Java技术社区和论坛,与其他Java开发者进行交流和分享。这些社区和论坛通常提供了丰富的学习资源和讨论区,您可以在这里提、解答问题,并与其他人共同探讨Java核心技术的应用和发展趋势。 总之,通过以上的下载和学习建议,您将能够更轻松地获取和学习Java核心技术。希望这些信息对您有所帮助,祝您在学习和应用Java核心技术的过程中取得成功! ### 回答2: 亲爱的大忙人, 首先,让我向您致以诚挚的候。我知道您很忙,但我相信对您来说,学习Java核心技术是非常重要的。因此,请允许我为您提供一些下载Java核心技术的途径。 首先,您可以前往Oracle官方网站,他们提供了最新版本的Java Development Kit(JDK)下载。JDK是编写和运行Java程序所必需的软件包。您可以在Oracle官方网站上找到针对不同操作系统和版本的JDK下载链接。 另外,您还可以加入Java开发者社区,例如GitHub或Stack Overflow。这些社区为Java开发者提供了大量的学习资源和交流平台。您可以在这些社区上查找和下载Java核心技术的代码示例、项目实例和经验分享。 此外,还有一些在线教育平台,如Coursera、Udemy和MOOC等,这些平台提供Java核心技术的线上课程。您可以通过这些课程系统性地学习Java的核心知识,并在实践中提升自己的技能。 最后,我建议您购买一本权威的Java核心技术教材,如《Java核心技术 卷一:基础知识》。这本书由Horstmann和Cay S. Horstmann编写,被广泛认可为Java技术的权威指南。 尊敬的大忙人,请一定要为自己的学习留出时间。学习Java核心技术将为您的职业生涯带来巨大的价值和机。如果您有任何疑或需要更多帮助,请随时与我联系。 祝您学习顺利,事业腾飞! 此致 敬礼 ### 回答3: Java核心技术是指在Java编程语言中必须具备的基本技术,是Java程序开发的基石。对于大忙人来说,以下是关于Java核心技术下载的说明: 首先,您可以通过访Oracle官方网站来下载Java核心技术的最新版本。在官方网站上,您可以找到Java Development Kit(JDK),它包括了编译器、调试器和其他开发工具。您可以选择适合您操作系统的版本进行下载和安装。 此外,您还可以通过其他第三方的合法渠道来获取Java核心技术的学习资料和相关书籍。这些资料可以帮助您理解Java编程语言的基本原理和核心概念,并提供实例和案例来帮助您更好地掌握技术。 另外,如果您有时间,您也可以考虑参加Java编程的培训课程。培训机构通常提供有关Java核心技术的详细教学内容以及实践项目,有助于您更加系统地学习和掌握Java编程技术。 最后,如果您想了解关于Java核心技术的最新动态和技术分享,您可以通过参加Java开发者社区的线上或线下活动来获取信息。这些社区经常组织技术讲座、研讨和交流活动,提供了与其他Java开发者互动和分享经验的机。 总之,要下载并学习Java核心技术,您可以从官方网站、第三方资源、培训课程和开发者社区等多个途径获取相关的学习资料和交流机。通过合理规划和利用碎片时间,您可以逐步掌握Java核心技术,并在实际项目中应用和提升您的编程能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值