基础知识点【初学必看】
# 1、第一个Hello World程序
开发环境已经搭建好了,现在就开始每个程序员必学的第一个程序: Hello World
。为了理解Java程序执行过程,我们先不用集成开发环境。
需求:控制台打印一个Hello World
- 编写Hello.java
用记事本先编写一个Hello.java文件,注意里面的//
和/* */
都是注释,注释的内容不会被编译执行,是用来给人看的,就是备注,方面理解。可以先不用理解代码内容的含义,先理解代码的结构。
解释一下代码:创建了Hello类,从Java提供的main入口函数开始。main函数是Java程序的入口,无论任何的Java程序,首先第一个执行的就是main函数。然后我们在main函数中打印一个Hello World。System.out.println
(集成环境时快捷输入sout
)是系统提供的一个方法,帮助我们在控制台打印输出信息。
/**
* Hello类,名称与文件名相同
*/
public class Hello {
/**
* 入口函数
* @param args
*/
public static void main(String[] args) {
// 打印Hello World
System.out.println("Hello World");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
- 使用java编译器(javac.exe)将Hello.java文件编译成字节码文件(Hello.class)
开始编译,我们可以直接在该目录下执行cmd进入命令行,这样就不用切换目录了。
执行javac Hello.java
命令,编译成功后,会在当前目录下生成一个Hello.class文件。这是一个java可执行文件。
Hello.class文件
看下字节码文件Hello.class的内容,用记事本打开可能会乱码,可以用IDEA打开查看。发现注释内容都不见了,字节码文件是二进制文件,IDEA自己处理了帮助我们能够直接查看。
- 使用Java解释器(java.exe)执行字节码文件
现在我们就可以直接执行Hello.class文件,这个文件是可以被java解释器直接执行的。注意可以不用指定文件后缀,java解释器会自动识别。
- 总结分析
从上面我们可以知道了一个Java程序的执行过程:
- 我们编写代码为.java文件
- javac程序可以将我们的.java文件编译成.class字节码文件
- java程序可以读懂.class文件进行执行
- 类名与文件名相同,java解释器会自动识别
- 程序的入口是main函数
IDEA运行
# 2、标识符命名规则
Java的标识符命名规则有要求,也就是对方法、类、变量等的一些命名规则,其实其他的编程语言也差不多都是这些规则,具体可能有细节上的区别。
- 标识符可以由字母、下划线、美元符号、数字组成,长度不受限制
- 标识符第一个字符不能是数字
- 不能是关键字
- 注意点:标识符不能使用true、false、和null,虽然这几个不是关键字
# 3、注释
Java的注释分为单行注释和多行注释。等学完了Java基础可以去看看阿里巴巴Java开发手册-黄山版 (opens new window)
// 单行注释
/**
* 多行注释
*/
2
3
4
5
# 4、关键字
Java内部定义了很多关键字,这些关键字不能用作标识符,都是有它特殊的意义,这里列举一些常用的:
public
:表示公共的,可以在任何地方访问。private
:表示私有的,只能在同一类中访问。protected
:表示受保护的,在同一包或子类中访问。static
:表示静态的,属于类而不是对象。final
:表示不可修改的,用于修饰变量、方法和类。abstract
:表示抽象的,用于修饰抽象方法和类。class
:定义类。interface
:定义接口。extends
:表示继承一个类。implements
:表示实现一个接口。void
:表示无返回值的方法。this
:表示当前对象。super
:表示父类对象。if
:条件语句,用于执行条件判断。else
:与 if 一起使用,表示条件不满足时执行的语句块。for
:循环语句,用于重复执行一段代码。while
:循环语句,当条件满足时重复执行一段代码。do
:循环语句,先执行一段代码,然后根据条件重复执行。switch
:多分支选择语句,根据表达式的值,执行匹配的分支。case
:在 switch 语句中定义每个分支的值。break
:用于跳出循环或 switch 语句。continue
:用于跳过当前循环的剩余代码,开始下一次循环。return
:用于从方法中返回值。try
:异常处理语句的起始块。catch
:捕获异常并处理的代码块。finally
:与 try-catch 合用,执行最后必须执行的代码块。null
:表示空引用。native
:表示这个方法的实现是由其他语言(比如C或C++)编写的,它并不在Java源代码中。通过使用本地方法,我们可以直接调用其他语言的功能和库,从而提高性能或实现一些特定的系统操作。transient
:主要用于序列化。当对象序列化时,transient 关键字修饰的变量不会被序列化,也就是说在被序列化的过程中,这个域的值不会被存储下来。
# 5、语法糖
语法糖(Syntactic Sugar)是一种编程语言的设计特性,它使得代码更易读、更简洁,看起来像是“甜蜜”的语法。语法糖本质上是编程语言的一种语法扩展,不会增加新的功能,只是通过改变语法结构的方式,使程序的表达更简洁、更易理解。
使用语法糖可以减少程序员的工作量,简化代码的编写和维护。它可以隐藏底层复杂的实现细节,使代码更具可读性和可理解性。语法糖通常是编程语言提供的一种更加高层次的抽象,它能够通过少量的代码实现一系列常见的操作,从而提高编程效率。
编程语言中常见的一些语法糖包括:
- 运算符重载:通过在不同的数据类型上定义相同的操作符,使得代码更具有可读性和直观性。
- 简化循环语法:如Python的列表推导式、C#的LINQ查询表达式等,使得对数据集合的处理更加简洁。
- 简化函数调用:例如C#中的匿名方法和Lambda表达式,使函数调用更加简洁易懂。
- 自动类型推导:如Python的动态类型和JavaScript的隐式类型推导,减少了类型声明的繁琐性。
- Java泛型:通过在类型上定义泛型,使得代码更加安全、简洁和易维护。
总之,语法糖是一种编程语言的设计技巧,通过改进语法结构,使代码更具可读性和可理解性,提高编程效率和代码质量。它并不会增加新的功能,只是对现有语法的一种简化和增强。