Java基础语法全集,适合新手,简单易用

 2024-02-27 03:04:01  阅读 0

第 2 章 Java 语言基础知识

学习任何知识都需要从基础知识开始。 同样,学习Java也需要从Java的基本语法开始。 本章将详细介绍Java的基本语法。 建议初学者不要急于求成,认真学习本章内容,为后续的学习打下坚实的基础。

2.1 标识符和关键字

2.1. 字符集

Java使用标准字符集,由协会管理并接受技术修改,最多可以识别65536个字符。 在字符集中,前128个字符恰好是ASCII码。 由于大多数国家的“字母表”中的字母都是字符集中的一个字母,因此Java使用的字母不仅包括常用的拉丁字母,还包括汉字。 、俄语、希腊字母等

2.1.2 关键词

关键字是在 Java 中被赋予特定含义的单词。 这些词不能用作标识符。 简单来说,凡是红色加粗的单词就是关键词。 Java关键字如表2.1所示。 JDK10增加了新的关键字var。

表2.1Java关键字

java判断特殊符号_java的判断符号_java中特殊符号

2.1.3 标识符

Java中的类名、对象名、方法名、常量名和变量名统称为标识符。

为了提高程序的可读性,在定义标识符时,尽量遵循“见其名即知其意”的原则。 Java标识符的具体命名规则如下:

(1) 标识符可以由多个单词连接组成,以表明其含义。

(2) 标识符由一个或多个字母、数字、下划线(_)和美元符号($)组成,长度不限。

(3) 标识符的第一个字符不能是数字。

(4) 标识符不能是关键字。

(5) 标识符不能为 true、false 或 null。

(6)对于类名,每个单词的首字母必须大写,其他字母应小写,例如。

(7) 对于方法名和变量名来说,它们与类名有些类似。 除第一个单词首字母小写外,其他单词首字母必须大写,如(),。

(8) 对于常量名,每个单词的每个字母必须大写。 如果由多个单词组成,单词之间通常用下划线(_)分隔,例如。

(9) 对于包名,每个单词的每个字母都必须小写,例如 com.frame。

学习笔记

Java区分大小写字母。

2.2 常量和变量

常量和变量在程序代码中随处可见。 我们来学习一下常量和变量的概念和使用点,以便区分常量和变量。

2.2.1 常量的概念和用法

所谓常数,就是其值不允许改变的量。 如果要声明常量,必须用关键字final修饰。 声明常量的具体方法如下:

例如:

java的判断符号_java中特殊符号_java判断特殊符号

学习笔记

定义常量标识符时,根据Java命名规则,所有字符必须大写。 如果常量标识符由多个单词组成,则用下划线“_”分隔,例如PIE。

当一个常量被声明后,通常会立即被赋值,即该常量被立即初始化。 常量声明和初始化的具体方式如下:

例如:

java判断特殊符号_java中特殊符号_java的判断符号

学习笔记

给float类型常量赋值时,需要在值后面添加字母“F”(或“f”),以表明该值是float类型。

如果需要声明多个同一类型的常量,还可以使用以下方法:

java判断特殊符号_java的判断符号_java中特殊符号

例如:

java判断特殊符号_java的判断符号_java中特殊符号

如果常量在声明时没有初始化,可以在需要时初始化,例如:

java的判断符号_java判断特殊符号_java中特殊符号

但是,如果常量在声明时就被初始化了,则不允许修改该常量的值。 例如,当尝试执行以下代码时,控制台上将输出错误消息“常量值无法修改”:

java的判断符号_java中特殊符号_java判断特殊符号

2.2.2 变量的概念和使用要点

所谓变量,就是其值可以改变的量。 如果你想声明一个变量,你不需要用任何关键字来修改它。 声明变量的具体方法如下:

例如:

java的判断符号_java中特殊符号_java判断特殊符号

学习笔记

定义变量标识符时,根据Java命名规则,第一个单词首字母小写,其他单词首字母大写,其他字母全部小写,比如name,。

当变量被声明后,可以立即赋值,即变量立即被初始化。 声明和初始化变量的具体方法如下:

例如:

java判断特殊符号_java中特殊符号_java的判断符号

如果需要声明多个同一类型的变量,还可以使用以下方法:

java的判断符号_java中特殊符号_java判断特殊符号

例如:

java判断特殊符号_java的判断符号_java中特殊符号

变量和常量的区别在于变量的值是允许改变的。 例如,下面的代码是正确的:

java的判断符号_java判断特殊符号_java中特殊符号

2.3 数据类型

Java 是一种强类型编程语言。 Java中数据类型的分类如图2.1所示。

java判断特殊符号_java的判断符号_java中特殊符号

图2.1 Java中的数据类型分类

Java中的数据类型分为两类,即基本数据类型和参考数据类型。 其中,基本数据类型是Java定义的,其数据在内存中占据固定的大小,内存中存储的是值本身; 而引用数据类型存储的是引用数据在内存中的存储地址,而不是数据本身。

2.3.1 基本数据类型

基本数据类型分为数值类型、字符类型和布尔类型。 数值类型又分为整数类型和浮点类型。 下面将依次讲解这四种基本数据类型的特点和用法。

1. 整数类型

声明为整数类型的常量或变量用于存储整数。 整数类型包括byte、short、int和long。 这四种数据类型之间的区别在于它们在内存中占用的字节数。 因此,它们可以存储的整数范围也不同,如表2.2所示。

表2.2 整型数据占用内存字节数及其取值范围

给这四种数据类型的常量或变量赋值时,所赋值的值不能超出相应数据类型允许的取值范围。 例如下面的代码中,不允许将byte、short、int类型变量的值赋给9412、794 125和9 876 543 210,即下面的代码是错误的:

java判断特殊符号_java中特殊符号_java的判断符号

给long常量或变量赋值时,需要在赋值后添加字母“L”(或“l”),以表明赋值的值是long类型。 如果赋值的值不超过int类型的取值范围,字母“L”(或“l”)也可以省略。 例如,下面的代码是正确的:

java中特殊符号_java的判断符号_java判断特殊符号

但下面的代码是错误的:

2.浮点类型

声明为浮点类型的常量或变量用于存储小数(也可以存储整数)。 浮点类型包括单精度(float)和双精度()数据类型。 这两种数据类型的区别在于它们在内存中占用的字节数不同。 因此,它们可以存储浮点数。 取值范围也不同,如表2.3所示。

表2.3 浮点型数据在内存中占用的字节数及其取值范围

java的判断符号_java判断特殊符号_java中特殊符号

给float类型常量或变量赋值时,需要在赋值后添加字母“F”(或“f”),以表明赋值的值为float类型。 如果赋值的值为整数且不超出int类型的取值范围,字母“F”(或“f”)也可以省略。 例如,下面的代码是正确的:

java的判断符号_java中特殊符号_java判断特殊符号

但下面的代码是错误的:

java的判断符号_java判断特殊符号_java中特殊符号

给类型常量或变量赋值时,需要在赋值后添加字母“D”(或“d”),以表明赋值的值是类型。 如果赋值的是小数,或者赋值的是整数且不超出int类型的取值范围,字母“D”(或“d”)也可以省略。 例如,下面的代码是正确的:

学习笔记

Java 默认使用小数作为类型,因此在将小数分配给类型常量或变量时,不需要添加字母“D”(或“d”)。

但下面的代码是错误的:

3.字符类型

声明为字符类型的常量或变量用于存储单个字符,占用2个字节的内存进行存储。 字符类型使用关键字 char 声明。

由于计算机只能存储二进制数据,因此字符需要用一串二进制数据来表示,这就是俗称的字符编码。 Java对字符采用编码方式,用2个字节表示1个字符,字符集中的前128个字符与ASCII字符集兼容。 例如,字符“a”的ASCII编码二进制数据形式是00001。它们都代表十进制数97。因此,Java与C和C++一样,将字符视为整数。

学习笔记

ASCII 编码是一种用于表示英文字符的编码。 每个字符占用1个字节,最多可以表示256个字符。 但英文字符并不多。 ASCII编码使用前128个字符(字节中的最高位为0)来存储字符,包括控制字符、数字、大小写英文字母以及其他一些符号。 字节最高位为1的其他128个字符称为“扩展ASCII”,通常用于存储英文制表符、一些音标等字符。 多语言文本无法使用 ASCII 编码表示。

Java中的字符以二进制形式编码并存储在计算机中。 计算机可以通过数据类型判断输出是字符还是整数。 编码采用无符号编码,总共可以存储65536个字符(~),因此Java中的字符几乎可以处理所有国家语言。

给char类型常量或变量赋值时,如果赋值是英文字母、符号或汉字,则在英文状态下,赋值的值必须放在一对单引号内。 例如,下面的代码将字母“M”、符号“*”和汉字“男”分别赋值给char类型变量ca、cb和cc:

java中特殊符号_java判断特殊符号_java的判断符号

学习笔记

给char类型常量或变量赋值时,无论赋值是字母、符号还是汉字,都只能是一个字符。

因为Java将字符视为整数,可以存储65536个字符,所以你也可以将0到65535之间的整数赋值给char类型常量或变量,但输出时得到的并不是分配的整数。 例如,下面的代码将整数88赋值给char类型变量c,输出变量c时得到的是大写字母“X”:

java判断特殊符号_java的判断符号_java中特殊符号

学习笔记

代码“.out.();” 用于将指定内容输出到控制台,输出后换行; 代码“.out.print();” 用于将指定的内容输出到控制台,但是输出后没有换行。

还可以将数字 0 到 9 分配给 char 类型常量或字符形式的变量。 赋值方法是英文模式下将数字0到9放在一对单引号中。 例如,以下代码将数字“6”分配给 char 变量 c:

4.布尔类型

声明为布尔类型的常量或变量用于存储布尔值。 布尔值唯一的就是true和false,分别用来表示逻辑判断中的“真”和“假”。 布尔类型使用关键字声明。

java判断特殊符号_java中特殊符号_java的判断符号

程序运行结果如图2.2所示。

java的判断符号_java中特殊符号_java判断特殊符号

图2.2 类型的使用

2.3.2 参考数据类型

引用数据类型包括类引用、接口引用和数组引用。 以下代码声明对 java.lang 的引用。 类、对 java.util.List 接口的引用和对 int 数组的引用:

java判断特殊符号_java的判断符号_java中特殊符号

学习笔记

当引用数据类型的常量或变量被初始化为null时,意味着该引用数据类型的常量或变量不引用任何对象。

执行上述代码,控制台会输出以下内容:

java中特殊符号_java的判断符号_java判断特殊符号

在具体初始化引用数据类型时,需要注意的是,接口引用的初始化需要通过接口对应的实现类来实现。 例如下面的代码具体初始化接口引用列表时,是通过实现类java.util来实现的。 接口 java.util.List 的:

java中特殊符号_java的判断符号_java判断特殊符号

执行上述代码,控制台会输出以下内容:

java中特殊符号_java的判断符号_java判断特殊符号

2.3.3 基本类型和引用类型的区别

基本数据类型和参考数据类型的主要区别在于以下两个方面。

1. 组成

基本数据类型是一种简单的数据类型,它表示特定的数字、字符或逻辑值,例如68、'M'或true。 对于引用数据类型,如果变量引用复杂数据结构的实例,则该变量的类型属于引用数据类型。 引用数据类型变量引用的实例不仅可以包含基本数据类型的变量,还可以包含对这些变量的具体操作,甚至可以包含其他引用数据类型的变量。

【示例2.1】使用基本数据类型和引用数据类型的场景。

创建一个归档类,其中name类型变量用于存储姓名,char类型变量sex用于存储性别,int类型变量age用于存储年龄,type变量用于存储婚姻状态,并提供了一些操作这些变量的方法。 Class具体代码如下:

java中特殊符号_java判断特殊符号_java的判断符号

java中特殊符号_java判断特殊符号_java的判断符号

接下来,创建两个类的实例,并分别通过变量 you 和 me 来引用它们。 具体代码如下:

java的判断符号_java中特殊符号_java判断特殊符号

上面的变量you and me属于引用数据类型,并且引用类的实例,更具体地说,它们属于类引用类型。

接下来继续在类的main()方法中编写以下代码。 通过类中相应的方法,依次初始化代表读者和作者的变量you and me中的姓名、性别、年龄和婚姻状况:

java的判断符号_java中特殊符号_java判断特殊符号

接下来继续在类的main()方法中编写以下代码。 通过类中相应的方法,依次获取读者和作者的姓名、性别、年龄、婚姻状况,并将获取到的信息输出到控制台:

java的判断符号_java判断特殊符号_java中特殊符号

执行上述代码会在控制台输出这两个字符的信息,如图2.3所示。

java判断特殊符号_java的判断符号_java中特殊符号

图2.3 输出两类字符信息

2.Java虚拟机是如何处理的

对于基本数据类型的变量,Java虚拟机根据变量的实际类型分配实际的内存空间。 例如,为一个int类型变量分配4个字节的内存空间来存储该变量的值。 对于引用数据类型的变量,Java虚拟机还需要为其分配内存空间。 但是,对于引用数据类型的变量来说,内存空间中存储的并不是该变量引用的对象,而是该对象在堆区中存储的地址。 也就是说,引用变量最终只是指向被引用的对象,而不是存储被引用的对象。 因此,两个引用变量之间的赋值实际上是将一个引用变量中存储的地址复制到另一个引用变量中。 这使得两个变量指向同一个对象。

例如创建一个Book类,具体代码如下:

java判断特殊符号_java中特殊符号_java的判断符号

下面声明了 Book 类的两个实例,分别通过变量 book1 和 book2 引用它们。 变量book1被专门初始化,变量book2被初始化为null。 具体代码如下:

java判断特殊符号_java的判断符号_java中特殊符号

Java虚拟机为变量book1、book2、book1引用的对象的成员变量分配的内存空间如图2.4所示。

java的判断符号_java中特殊符号_java判断特殊符号

图2.4 内存空间分配1

从图2.4可以看出,变量book1引用了Book类的一个实例,而变量book2没有引用任何实例。 下面具体初始化变量book2,将变量book1引用的实例的地址复制到变量book2中,即变量book2和book1引用的是Book类的同一个实例。 具体代码如下:

此时Java虚拟机的内存空间分配如图2.5所示。

java中特殊符号_java的判断符号_java判断特殊符号

图2.5 内存空间分配2

2.3.4 数据类型之间的相互转换

所谓数据类型之间的相互转换,就是将变量从当前数据类型转换为其他数据类型。 在Java中,数据类型之间的转换可以分为以下三种情况:

(1)基本数据类型之间的相互转换。

(2)字符串与其他数据类型之间的转换。

(3)引用数据类型之间的相互转换。

这里仅介绍基本数据类型之间的相互转换,其他两种情况将在相关章节中介绍。

对多种基本数据类型的数据进行混合运算时,如果这些数据不属于同一基本数据类型,例如表达式中同时包含整数类型、浮点类型和字符类型的数据,则需要在执行计算之前将它们转换为统一的数据类型。

基本数据类型之间的相互转换分为两种情况,即自动类型转换和强制类型转换。

1.自动类型转换

当需要从低级类型转换为高级类型时,程序员不需要做任何事情,Java会自动完成从低级类型到高级类型的转换。 低级类型是指取值范围相对较小的数据类型,高级类型是指取值范围相对较大的数据类型。 例如,long类型与float类型相比是低级数据类型,但与int类型相比,它是高级数据类型。 。 基本数据类型中,除了type之外,其他数据类型都可以参与算术运算。 这些数据类型从低到高的排序如图 2.6 所示。

java中特殊符号_java的判断符号_java判断特殊符号

图2.6 数据类型从低到高排序

不同数据类型之间的算术运算,可以分两种情况考虑:一种情况是算术表达式中包含int、long、float或类型数据; 另一种情况是上述四种类型不包含 类型数据,即仅包含 byte、short 或 char 类型的数据。

(1)算术表达式包含int、long、float或类型数据。

如果算术表达式中包含int、long、float或type数据,Java会首先自动将表达式中数据类型相对较低的所有变量转换为表达式中数据类型最高的数据类型,然后进行计算。 并且计算结果的数据类型也是表达式中数据类型最高的数据类型。

例如,下面的代码中,Java在执行计算之前会自动将表达式“b * c - i + l”中的变量b、c、i的数据类型转换为long类型,并计算出其数据类型结果是长类型。 也就是说,不允许将表达式“b * c - i + l”直接赋值给数据类型低于long(如int)的变量,但可以直接赋值给数据类型为a的变量高于 long 的类型(例如 int)。 如float类型)变量。

java的判断符号_java判断特殊符号_java中特殊符号

在下面的代码中,Java在执行计算之前会自动将表达式“b * c - i + d”中的变量b、c和i的数据类型转换为 type ,计算结果的数据类型将为 type 。 也就是说,不允许将表达式“b * c - i + d”直接赋值给较低数据类型(例如long类型)的变量。

java判断特殊符号_java的判断符号_java中特殊符号

(2) 算术表达式仅包含byte、short 或char 类型数据。

如果算术表达式仅包含byte、short或char类型数据,Java在计算前会自动将所有变量的类型转换为int类型,计算结果的数据类型将为int类型。

例如下面的代码,在执行计算之前,Java会自动将表达式“b + s * c”中变量b、s、c的数据类型转换为int类型,计算结果的数据类型为int 类型。 也就是说,不允许将表达式“b + s * c”直接赋值给低于int的数据类型(如char类型)的变量,但可以直接赋值给a数据类型的变量高于int(如long)。 类型)变量。

java中特殊符号_java的判断符号_java判断特殊符号

在下面的代码中,Java在执行计算之前会自动将表达式“s1 * s2”中变量s1和s2的数据类型转换为int类型,并且计算结果的数据类型也将是int类型。

java的判断符号_java判断特殊符号_java中特殊符号

对于byte、short、int、long、float等数据类型的变量,可以将数据类型较低的数据或变量直接赋值给数据类型较高的变量。 例如,可以直接为short数据类型的变量赋值给float数据类型的变量,但不能直接给数据类型比较高的变量赋值或者数据类型比较高的变量给数据比较低的变量类型。 例如,不能将数据类型为 float 的变量直接分配给数据类型为 Short 的变量。

对于char数据类型的变量,byte或short数据类型的变量不能直接赋值给char类型变量; 但是,char 类型变量可以直接分配给 int、long、float 或类型变量。

2.强制类型转换

如果需要将较高数据类型的数据或变量赋值给较低数据类型的变量,则必须进行强制类型转换。 例如,将Java的默认数据类型“7.5”赋给数据类型为int的变量,方法如下:

上面的代码中,在数据“7.5”前面添加了代码“(int)”,表示将数据“7.5”的类型强制为int类型。

执行类型转换时,可能会导致数据溢出或精度降低。 例如,上述代码中变量i的最终值为7,导致数据精度降低。

将Java默认的int类型数据“774”赋值给byte类型变量的方法如下:

变量b最终值为6,导致数据溢出。 数据溢出的原因是整数774超出了字节数据的取值范围。 在强制类型转换过程中,代表整数774的二进制数据流的前24位将被丢弃,分配给变量b的最终值是最后8位。 位二进制数据流数据,如图2.7所示。

图2.7 强制将十进制数774类型转换为字节类型

学习笔记

在编程过程中,建议读者谨慎使用可能导致数据溢出或精度降低的强制类型转换。

2.4 数组

数组是最常见的数据结构之一,可以存储一组相同数据类型的数据。 数组一旦创建,其长度就是固定的。 数组的类型可以是基本数据类型,也可以是引用数据类型; 它可以是一维数组、二维数组或多维数组。

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码