【最新】Java基础学习笔记(20天学会java黑马)(一)

2023-11-08



Java背景

Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言。

2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.com

Java语言共同创始人之一:詹姆斯·高斯林 (James Gosling),被称为“Java之父”

在这里插入图片描述

Java名称的由来:

在最初Java语言是叫做oak(橡树)。是因为刚开始公司门口有一颗橡树。所以就叫做橡树。然后发现oak已经被美国橡树公司注册了,就不能再继续使用了。所以需要改名。而程序员最爱喝的是咖啡,盛产咖啡的岛叫做爪哇岛,由此语言就叫做Java了

初步了解

Java的三大平台:

  • JavaSE

    ​ Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础。

  • JavaME

    ​ Java 语言的(小型版),用于嵌入式消费类电子设备。

  • JavaEE

    ​ Java 语言的(企业版),用于 Web 方向的网站开发。

JVM、JRE和JDK:

  • JVM(Java Virtual Machine),Java虚拟机

  • JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)

  • JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具

我们只需安装JDK即可,它包含了java的运行环境和虚拟机。

JDK的安装目录介绍:

目录名称 说明
bin 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。
conf 该路径下存放了JDK的相关配置文件。
include 该路径下存放了一些平台特定的头文件。
jmods 该路径下存放了JDK的各种模块。
legal 该路径下存放了JDK各模块的授权文档。
lib 该路径下存放了JDK工具的一些补充JAR包。

Java快速入门

学习计算机语言离不开HelloWorld

各种计算机语言都习惯使用该案例作为第一个演示案例。就是在计算机屏幕上输出“HelloWorld”这行文字。

开发Java程序,需要三个步骤:编写程序 ->编译程序 -> 运行程序

HelloWorld案例

先不要考虑为什么,照着案例敲下来

  1. 新建文本文档文件,修改名称为HelloWorld.java。
  2. 用记事本打开HelloWorld.java文件,输写程序内容。
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("HelloWorld");
	}
}
  1. 保存文件,打开命令行窗口(cmd,将目录切换至java文件所在目录,编译java文件生成class文件,运行class文件。

具体做法:

javac HelloWorld.java

java HelloWorld

常见问题如下:

1、非法字符问题。Java中的符号都是英文格式的,并且注意单词书写错误。

2、大小写问题。Java语言对大小写敏感(区分大小写)。

3、在系统中显示文件的扩展名,避免出现HelloWorld.java.txt文件。

4、编译命令后的java文件名需要带文件后缀.java

5、运行命令后的class文件名(类名)不需要带文件后缀.class

记事本终究不适合用于编程开发,我们无论是工作学习都是要用IDE(集成开发环境),这里推荐使用idea,功能强大,相关教程网上有很多

Java基础语法

注释

注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要。Java中的注释分为三种:

  1. 单行注释。单行注释的格式是使用//,从//开始至本行结尾的文字将作为注释文字。(IDEA快捷键:ctrl+/)
// 这是单行注释文字
  1. 多行注释。多行注释的格式是使用/* 和 */将一段较长的注释括起来。

(IDEA快捷键:代码块注释 shift+/)

/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
注意:多行注释不能嵌套使用。
  1. 文档注释。文档注释以/**开始,以*/结束。

数据类型

计算机底层都是一些数字电路(理解成开关),用开表示0、关表示1,这些01的形式就是二进制。

数据在计算机底层都是采用二进制存储的,在计算机中认为一个开关表示的0或1称为1位。

“位(bit)”是计算机存储设备的最小信息单元,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,通常用大写字母”B”表示,字节是由连续的8个位组成。

除了字节外还有一些常用的存储单位,其换算单位如下:

1B(字节) = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

Java是一个强类型语言,即Java中的数据必须明确数据类型。

在Java中的数据类型包括基本数据类型和引用数据类型(之后再讲)两种。

Java中的基本数据类型:

数据类型 关键字 内存占用 取值范围
整数 byte 1 负的2的7次方 ~ 2的7次方-1(-128~127)
short 2 负的2的15次方 ~ 2的15次方-1(-32768~32767)
int 4 负的2的31次方 ~ 2的31次方-1
long 8 负的2的63次方 ~ 2的63次方-1
浮点数 float 4 1.401298e-45 ~ 3.402823e+38
double 8 4.9000000e-324 ~ 1.797693e+308
字符 char 2(与c语言不同) 0-65535
布尔 boolean 1 true,false

说明:

​ e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。

​ 在java中整数默认是int类型,浮点数默认是double类型。

变量

变量:在程序运行过程中,其值可以发生改变的量。

从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化

变量的定义格式:

// 声明变量并赋值
数据类型 变量名 = 初始化值; 
int age = 18;
System.out.println(age);

// 先声明,后赋值(使用前赋值即可)
数据类型 变量名;
变量名 = 初始化值;
double money;
money = 55.5;
System.out.println(money);
  1. 在同一对花括号中,变量名不能重复。

  2. 变量在使用之前,必须初始化(赋值)。

  3. 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。

  4. 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。

关键字与标志符

定义:Java自己保留的一些单词,作为特殊功能的,例如:public、class、byte、short、int、long、double…

我们不能用来作为类名或者是变量名称,否则报错。

注意:关键字很多,不用刻意去记。

常见关键字:

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

标志符

标志符就是由一些字符、符号组合起来的名称,用于给类,方法,变量等起名字的规矩。

基本要求:由数字、字母、下划线(_)和美元符($)等组成

强制要求:不能以数字开头、不能是关键字、区分大小写

基本命令规范

变量名称:满足标识符规则,建议全英文、有意义、首字母小写,满足**“驼峰模式”**,例如:int studyNumber = 59。

类名称: 满足标识符规则,建议全英文、有意义、首字母大写,满足“驼峰模式”,例如:HelloWorld.java。

类型转换

Java中小范围类型的变量会自动转换成当前较大范围的类型再运算。

byte/short/char < int < long < float < double

注意事项:

表达式的最终结果类型由表达式中的最高类型决定。

在表达式中,byte、short、char 是直接转换成int类型参与运算的。

强制类型转换

类型范围大的数据或者变量,不能直接赋值给类型范围小的变量。必须进行强制类型转换。

强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;

例如:

double num1 = 5.5;
int num2 = (int) num1; // 将double类型的num1强制转换为int类型
System.out.println(num2); // 输出5(小数位直接舍弃)

说明:

  1. char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a’对应97。

  2. 整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。

  3. boolean类型不能与其他基本数据类型相互转换。

运算符

运算符:对常量或者变量进行操作的符号

表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。

算术运算符

符号 作用 说明
+ 就是加
- 就是减
* 就是乘
/ 就是除
% 取余 获取的是两个数据做除法的余数

注意:整数操作只能得到整数,要想得到小数,必须有浮点数参与运算

char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:

‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加

‘A’ – 65 A-Z是连续的,所以’B’对应的数值是66,'C’是67,依次递加

‘0’ – 48 0-9是连续的,所以’1’对应的数值是49,'2’是50,依次递加

字符串的“+”操作

当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。

当连续进行“+”操作时,按照运算的优先级从左到右逐个执行。

赋值运算符

赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。

符号 作用 说明
= 赋值 a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b的值给a
-= 减后赋值 a-=b,将a-b的值给a
*= 乘后赋值 a*=b,将a×b的值给a
/= 除后赋值 a/=b,将a÷b的商给a
%= 取余后赋值 a%=b,将a÷b的余数给a

注意:扩展的赋值运算符隐含了强制类型转换

自增自减运算符

符号 作用 说明
++ 自增 变量的值加1
自减 变量的值减1

注意事项:

​ ++和-- 既可以放在变量的后边,也可以放在变量的前边。

​ 单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。

​ 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。

​ 参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。

关系运算符

关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。

符号 说明
== a==b,判断a和b的值是否相等,成立为true,不成立为false
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false
> a>b,判断a是否大于b,成立为true,不成立为false
>= a>=b,判断a是否大于等于b,成立为true,不成立为false
< a<b,判断a是否小于b,成立为true,不成立为false
<= a<=b,判断a是否小于等于b,成立为true,不成立为false

注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。

逻辑运算符

逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。

符号 作用 说明
& 逻辑与 a&b,a和b都是true,结果为true,否则为false
| 逻辑或 a|b,a和b都是false,结果为false,否则为true
^ 逻辑异或 a^b,a和b结果不同为true,相同为false
! 逻辑非 !a,结果和a的结果正好相反
短路逻辑运算符
符号 作用 说明
&& 短路与 作用和&相同,但是有短路效果
|| 短路或 作用和|相同,但是有短路效果

在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。

三元运算符

三元运算符语法格式:

关系表达式 ? 表达式1 : 表达式2;

解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。

数据输入

API(Application Programming Interface,应用程序编程借口)

  • 可以理解为Java写好的程序
  • Oracle为Java写好的程序提供了相应的API文档

System、string在JDK的java.lang包下,不需要导包(默认

我们可以通过 Scanner 类来获取用户的输入。使用步骤如下:

1、导包。Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。

import java.util.Scanner; 

2、创建Scanner对象。

Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变

3、接收数据

int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【最新】Java基础学习笔记(20天学会java黑马)(一) 的相关文章

  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 手动编辑 Jar 以更改包名称

    我有一个来自外部源的 jar 文件 jar 中的所有类都位于 com xyz 包中 我想将所有类移动到 com xyzold 包中 这是否像解压缩 jar 将 xzy 文件夹重命名为 xyzold 并重新压缩它一样简单 或者我还需要修改每个
  • Jackson - 反序列化嵌套 JSON

    我有一个 JSON 字符串 其格式如下 response execution status ready report cache hit true created on 2013 07 29 08 42 42 fact cache erro
  • 使用 Java 在 WebDriver 中按 Ctrl+F5 刷新浏览器

    我已经使用 java 刷新了 WebDriver 中的浏览器 代码如下 driver navigate refresh 如何使用 Java 在 WebDriver 中按 Ctrl F5 来做到这一点 我认为您可以使用 WebDriver 和
  • 解决 Java Checkstyle 错误:名称 'logger' 必须匹配模式 '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'

    使用 Eclipse Checkstyle 插件我看到以下错误 名称 logger 必须匹配模式 A Z A Z0 9 A Z0 9 我通过更改解决了此错误 private static final Logger logger Logger
  • 如何开始使用 Chainsaw for Log4j?

    我想开始使用 Chainsaw v2 几乎没有关于它的信息 我只找到了this http www velocityreviews com forums t140105 help using chainsaw for log4j html 但
  • 无法使用 json 架构验证器根据预定义的 yaml 文件验证查询参数

    我需要根据预定义的 yaml 文件架构验证查询参数的架构 因此我使用 json 架构验证器 验证如何失败 我正在执行以下步骤 填充参数和相应的架构 final List
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • 如何在 Eclipse 中使用其他外部 jar 依赖项创建不可运行/不可执行的 jar

    我无法通过 Eclipse 导出向导创建普通的 jar 不可运行 不可执行 它仅创建 jar 文件 但不会导出依赖的 jar 从而在从其他类调用导出的 jar 的方法时出现错误 请帮助 非常感谢 kurellajunior的建议 它是通过使
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 如何初始化静态地图?

    你会如何初始化静态Map在Java中 方法一 静态初始化方法二 实例初始化 匿名子类 或者 还有其他方法吗 各自的优点和缺点是什么 这是说明这两种方法的示例 import java util HashMap import java util
  • Java:由 HTTP 连接创建的等待连接线程存活时间很长

    我有一个服务器端代码 用于检查 SOAP 服务是否已启动 代码如下 String response while response length 0 try final URL url new URL DummySoapServiceURL
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个

随机推荐

  • js中对象与函数的关系

    问题引入 new Function msg alert msg 分析某源码的时候看到这样一段代码 突然一个问题萌发了 js中对象与函数到底有什么样的关系 首先看几段代码 function test console log test inst
  • 最适合零基础学的爬虫案例,利用Python采集静态网站数据。

    前言 大家晚上好 我看到评论区有很多的零基础小白 是不怎么懂爬虫的 那么今天就教大家一个最适合新手小白的爬虫教程 就是抓取静态网站的数据 非常简单 废话不多说 直接上干货 首先如果我们想拿出来这个网址上有用的图片地址并下载下来 那就要用到了
  • RocektMQ社区"每周直播分享第7期"如约而至

    各位同学 RocektMQ社区 每周直播分享第7期 如约而至 分享题目 RocketMQ消息消费概述 直播方式 钉钉群直播方式 群号 21791227 分享时间 2019 01 17 20 00 21 30 本周四 分享讲师 费红健 内容简
  • POJ 1062 昂贵的聘礼

    题面 年轻的探险家来到了一个印第安部落里 在那里他和酋长的女儿相爱了 于是便向酋长去求亲 酋长要他用10000个金币作为聘礼才答应把女儿嫁给他 探险家拿不出这么多金币 便请求酋长降低要求 酋长说 嗯 如果你能够替我弄到大祭司的皮袄 我可以只
  • linux安装rocketmq(有效)

    1 基于java maven环境搭建 linux java 搭建 linux安装java1 8 拒绝 emo的博客 CSDN博客 linux maven搭建 linux安装maven3 2 2 拒绝 emo的博客 CSDN博客 2 下载 A
  • 七大排序算法的基本原理及实现

    目录 1 排序的概念及引用 1 1 排序的概念 1 2 常见的排序算法 2 常见排序算法的实现 2 1 基于选择的思想 2 1 1 直接选择排序 2 1 2 堆排序 2 2 基于插入的思想 2 2 1 直接插入排序 2 2 2 希尔排序 缩
  • pycharm连接MYSQL数据库

    pycharm连接MYSQL 1 gt 使用pip工具 进入cmd 输入 pip install pymysql 回车进行安装 有网络的情况下进行 安装最新版的pymysql可以使用 python m pip install upgrade
  • 希尔排序(Shell Sort)

    如今是大数据时代 大量数据需要处理 便越来越需要跟优秀的算法 算法 Algorithm 是指解题方案的准确而完整的描述 是一系列解决问题的清晰指令 算法代表着用系统的方法描述解决问题的策略机制 也就是说 能够对一定规范的输入 在有限时间内获
  • strcpy和memcpy的区别

    1 strcpy函数 1 1 函数原型 char strcpy char dest const char src 1 2 函数功能 strcpy是一种C语言的标准库函数 strcpy把含有 0 结束符的字符串复制到另一个地址空间 返回值的类
  • linux:docker compose使用已经存在的网络

    问题 如题 参考 Networking in Compose Docker Documentation services networks network1 name my pre existing network external tru
  • vue2+ElementUI时间选择器限制可选范围为今天往前7天内的任意一天

    题目有2个重点 1 可选范围为今天往前7天 含今天 2 只能选择7天内的任意一天 由此可知 用户选择的最大日期和最小日期为同一天 即只能选择一天 也就是说 使用了时间范围插件 但是model中的两个日期是同一天 HTML
  • c# 位运算符

    说来惭愧 今天看别人提供的源码 看了这些运算符竟然有些记不起来 在这里就记录一下 首先认识这些运算符 按位与 其实与 逻辑运算符有一致的地方 下面会讲到 按位或 同样与 有类似的地方 按位取反 按位异或 lt lt 左移运算符 gt gt
  • Python爬取天气数据并进行分析与预测

    随着全球气候的不断变化 对于天气数据的获取 分析和预测显得越来越重要 本文将介绍如何使用Python编写一个简单而强大的天气数据爬虫 并结合相关库实现对历史和当前天气数据进行分析以及未来趋势预测 1 数据源选择 选择可靠丰富的公开API或网
  • 百度又开源一款压测工具,可模拟几十亿的并发场景,太强悍了

    dperf 是百度开源的一款基于 DPDK 的 100Gbps 网络性能和负载测试软件 能够每秒建立千万级的 HTTP 连接 亿级别的并发请求和数百 Gbps 的吞吐量 优点 性能强大 基于 DPDK 使用一台普通 x86 服务器就可以产生
  • burpsuite扩展集成sqlmap插件

    通常我们在使用sqlmap测试SQL注入问题的时候会先使用burpsuite来抓包 然后交给sqlmap进行扫描 此操作略显繁琐 为了避免这种繁琐的重复操作可以将sqlmap以插件的方式集成到burpsuite里面 实现request右击s
  • ConnectTimeout和ReadTimeout所代表的意义

    ConnectTimeout 指的是建立连接所用的时间 适用于网络状况正常的情况下 两端连接所用的时间 在java中 网络状况正常的情况下 例如使用HttpClient或者HttpURLConnetion连接时设置参数connectTime
  • GO语言学习-Sublime+Go语言环境搭建

    sublime text3 Golang 搭建开发环境 1 引言 sublime text3搭建Golang的开发环境顺序为 1 安装Golang 2 sublime 安装 Gosublime 3 修改Gosublime中的配置 使之支持G
  • 基于蓝牙技术使用stm32制造一个智能小车 (寻迹,避障,遥控)

    目录 1 制作智能小车的硬件名单 3 引脚图 2 先让小车动起来 1 小车运动 2 代码 3 寻迹 1 工作原理 2 代码 4 超声波避障 1 工作原理 2 代码 5 蓝牙遥控 1 蓝牙工作原理 2 代码 6 oled屏幕 1 工作内容 7
  • Bootstarp入门教程(3)栅格系统

    栅格系统简介 栅格系统用于通过一系列的行 row 与列 column 的组合创建页面布局 你的内容就可以放入创建好的布局中 下面就介绍以下Bootstrap栅格系统的工作原理 行 row 必须包含在 container中 以便为其赋予合适的
  • 【最新】Java基础学习笔记(20天学会java黑马)(一)

    文章目录 Java背景 初步了解 Java快速入门 HelloWorld案例 Java基础语法 注释 数据类型 变量 关键字与标志符 类型转换 强制类型转换 运算符 算术运算符 赋值运算符 自增自减运算符 关系运算符 逻辑运算符 短路逻辑运