Java语言基础详细讲解

就像人与人之间交流使用的语言需要遵循一定的语法规则一样,Java语言也离不开特定语法的支持,如基本语法、数据类型、变量、常量、运算符与表达式、类型转换和输入输出等,只不过这些语法要比日常生活中语言的语法更加严谨。本章我们先来学习这些基本语法,为后续学习打下扎实的根基。

2.1 Java基本语法

作为一门流行的编程语言,Java有着它自己特定的语法格式,要想使用Java语言开发出一款功能完善的软件产品,就必须熟练掌握这些基本语法。当然,这些基本语法都是简单易懂的,包括基本格式、关键字、标识符、注释、编程风格等。

2.1.1 Java语言的基本格式

学习任意一门编程语言,首先都要掌握其基本格式,Java语言的基本格式如下:

• 语句:语句是程序执行的基本单位。Java程序由两种语句组成,一种是结构定义语句,用于声明一个类或者方法;另一种是功能执行语句,用于实现具体的功能,以分号(;)结束。

• 语句块:一对大括号{}包含的一系列语句称为语句块(代码块),语句块可以嵌套,即语句块内可以嵌套子语句块。

• 空格:在Java程序中,为了增加程序的可读性,允许在程序元素之间增加任意数量的空格,编译器会自动忽略多余的空格。在Java程序中,回车键及换行符都可以表示一行的结束,可以被看作是空格,空格键、Tab键也是空格。

• 区分大小写:Java语言严格区分大小写。例如,在Java程序中,age和Age是意义完全不同的两个符号。

• 换行:当一个表达式无法容纳在一行内时,可以依据如下一般规则断开:在一个逗号后面断开;在一个操作符前面断开;宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开;新的一行应该与上一行同一级别表达式的开头处对齐;如果以上规则导致代码混乱或者使代码都堆挤在右边,那就代之以缩进8个空格。

• 其他:Java程序中,一句连续的字符串不能分开在两行中书写,例如下面的代码是错误的:

System.out.println("hello

Java编程讲义");

为了便于阅读,需要将一个比较长的字符串分在两行中书写,可以先将一个长字符串分成两个字符串,再用加号(+)连接起来,在(+)处断行,例如:

System.out.println("hello" +

"Java编程讲义");

2.1.2 Java关键字

关键字也称保留字,是编程语言里事先定义好并赋予特殊含义的英文单词,在程序设计中不能再将它定义成别的用途。在开发工具中(IDEA)中,关键字会以特殊颜色(默认蓝色)显示,用于提示其为关键字,避免被误用。Java中保留了许多关键字,这些关键字的所有字母都是小写的,具体如表2.1所示。

表2.1 Java关键字

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

在上面列举的关键字中,每个关键字都有他自己特殊的作用。例如,package关键字用于包的声明,import关键字用于引入包,class关键字用于类的声明。在本书后面的章节中,将会逐步对使用到的关键字进行讲解,所以大家不需要现在就将所有的关键字全部记住,只需要了解即可。

2.1.3 Java标识符

在编程过程中,我们经常需要在程序中定义一些符号来标记一些名称,比如编程中用到的变量名、包名、类名以及方法名、参数名等,这些符号被称为标识符。在Java语言中,标识符可以由编程人员自由指定,但是需要遵循如下规定:

• 标识符可以由任意顺序的大小写字母、数字、下划线和美元符号($)组成。

• 标识符不能以数字开头。

• 标识符不能是Java中的关键字。

• 标识符区分大小写,且长度没有限制。

在Java程序中,定义的标识符必须严格遵守上面列出的规范,否则程序无法完成编译。下面的这些标识符都是合法的:

    Test

    Demo123

    aaa_zhang

    userName

    $Demo

下面的这些标识符都是不合法的:

123Demo                         // 不能以数字开头

package                         // 不能是关键字

Hello year                         // 不能包含空格特殊字符

在实际使用标识符时,应该使标识符能够在一定程度上反映它所表示的变量、常量、对象或类的含义,达到“见名知意”的效果,这样程序的可读性更好。

注意:Java的标识符可以使用中文,但是习惯上以英文为主;标识符内可以包含关键字,但不能与关键字完全一样,例如,“thisTea”是一个合法的标识符,但“this”是关键字,不能用作标识符。

2.1.4 Java注释

真正开发一个应用程序,大多情况下都是团队合作,所以在编写程序时,为了使代码更易于阅读,通常会在实现功能的同时为代码加一些注释。注释是对程序的某个功能模块或者某行代码的解释说明,以便其他人能轻松地阅读代码,了解其意图。Java程序同样需要添加必要的注释,以增强可读性,这些注释只Java源文件中有效,在编译程序时,编译器会自动忽略这些注释信息,不会将其编译到class字节码文件中去。另外,注释还可以屏蔽一些暂时不用的语句,等需要时直接将此语句的注释取消即可。例如,在调试代码的时候彻底删除代码可能会误删,造成程序彻底瘫痪,这时候使用注释就显得异常轻松了。根据功能的不同,Java语言提供了如下3种注释方式:

• 单行注释:用于对程序的某一行代码进行解释。在注释内容前面加双斜杠“//”,Java编译器会忽略掉这一行双斜杠以后的信息,并且不会对其他代码造成影响,使用比较灵活。单行注释一般用来对声明的变量、一行程序作用进行简要说明。具体示例如下:

String tea_year = nul1;        // 定义一个String字符串,并为其赋值

• 多行注释:用于注释内容有多行的情况。在注释内容前面以单斜杠加一个星号“/*”开头,并在注释内容末尾以一个星号加单斜杠“*/”结束,常用于注释掉暂时不用的代码、说明方法的功能等。具体示例如下:

public class JavaaMultiline{// 定义一个类

int age;// 定义一个变量

/**

* 主方法,程序的入口地址

*/

public static void main(String[]args){

System.out.println("多行注释");

}

}

• 文档注释:用于对程序的结构、方法和属性等进行说明,以单斜杠加两个星号“/**”开头,并以一个星号加单斜杠“*/”结束。在实际开发中,开发人员可以使用javadoc命令将文档注释内容提取生成正式的HTML格式的帮助文档。对于初学者而言,文档注释并不是很重要,了解即可。文档的具体格式如下:

/**

*作者:张晨光

*公司:AAA软件教育

*功能:文档注释讲解

*/

public class JavaDoc{// 定义一个类

int age;// 定义一个变量

/**

* 主方法,程序的入口地址

*/

public static void main(String[]args){

System.out.println("文档注释");

}

}

知识点拨:javadoc是API文档生成器,该工具解析一组Java源文件中的声明与文档注释,生成一组HTML页面,描述这些源程序中定义的类、内部类、接口、构造方法、成员变量等,JDK的API文档就是javadoc工具生成的。

2.1.5 Java编程风格

编程风格是编程的规范,即程序开发者一般约定的一些编程规则、格式等。在日常开发过程中,一些比较大的项目通常都是由很多人合作完成的,所以遵守一门语言的编程风格至关重要,否则如果大家都按自己的喜好来进行编码,会导致代码阅读性大大降低,在后期维护的时候会非常不方便。例如,有的程序员可能会养成不换行的习惯,一串代码整行排列,除了本人,其他人是很难去阅读他的代码的。目前,Java程序的编写流行着两种代码块的写法,分别为Allmans风格和Kernighan风格。

1.Allmans风格

Allmans风格又称为独行风格,大括号左右两边都独占一行,大括号和具体的代码分隔开,在代码量少的时候,代码布局清晰,可读性强。Allmans风格的代码如下:

Public Class Allmans

{

public static void main(String[] args)

{

System.out.println("我是独行风格");

}

}

在代码量少的时候适合使用Allmans风格编码,但是如果代码量多的话,会导致代码左边出现很多大括号,反而不利于阅读。

2.Kernighan风格

Kernignan风格又称为“行尾”风格,左边的大括号在上一行代码的行尾,右边的大括号则独占一行,这样既能将大括号和代码分隔开,又不至于使代码看着过于冗余。当代码量较多时使用“行尾”风格,可使代码层次更加简洁清晰。Kernighan风格的代码如下:

Public Class Kernignan{

public static void main(String[] args){

System.out.println("我是行尾风格");

}

}

2.2 Java基本数据类型

在程序执行过程中,数据是程序必不可少的一部分,也是程序处理的对象。不同的数据有不同的数据类型。通常将数据按照性质进行分类,每一类称为一种数据类型。也就是说,数据类型定义了数据的性质、取值范围、存储方式和对数据能够进行的运算和操作。强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.C 、C++等语言。Java是一种强类型语言,数据类型可以分为两大类,一类是基本数据类型,另一类是引用数据类型(简称引用类型)。基本数据类型的数据在内存中存放的是数据值本身,每种基本数据类型的数据所占用内存的大小是固定的,与软硬件环境无关。引用数据类型的知识将在第2.6.1节详细讲解。

Java基本数据类型分为4类,分别是整数类型、浮点类型、字符型和布尔类型,其中有4种整数类型、2种浮点类型、1种字符类型和1种布尔类型,一共8种类型。它们的分类及对应关键字如下:

• 整数类型:byte、short、int、long。

• 浮点类型:float、double。

• 字符类型:char。

• 布尔类型:boolean。

2.2.1 整数类型

当数据不带小数点或不是分数时,该数据可以声明为整数类型。Java语言中,所有整数类型的数据均带有符号,分为正数和负数,整数数值的最高位表示符号,其中0表示正数,1表示负数,其余位表示值。Java语言的每种数据类型都对应一个默认值,使这种数据类型变量的取值总是确定的,所有整数类型的变量的默认值都是0。

整数类型可分为byte、short、int和long 4种,其长度、取值范围如表2.2所示。由于char(字符)类型可以转换为int类型,所以表2.2将这4种类型和char类型的长度与取值范围一起列出。

表2.2 整数类型长度与取值范围

数据类型

长度

取值范围

byte

8位

-27~27-1,即-128~127

short

16位

-215~215-1,即-32768~32767

int

32位

-231~231-1,即-2147483648~2147483647

long

64位

-263~263-1,即-9223372036854775808~9223372036854775807

char

16位

'\u0000'~'\uffff',即0~65535

在计算机中,整数类型常量可以使用十进制、八进制和十六进制3种形式表示。以1~0开头的数为十进制数,0除外,如1、2、889、0、9898等;以0开头的数为八进制数,如077、011等;以0x或0X开头的数为十六进制数,如0xBAB、0x3a、0xBFAL等(十六进制里面A、B、C、D、E、F大小写均可)。

注意:当一个整数定义为long型时,需要在数值后面加L或l,因为小写的L看起来和数字1很像,所以建议使用大写L。

2.2.2 浮点类型

浮点类型用来存储小数,当需要进行涉及小数的计算或精确度比较高的计算时,就需要使用浮点类型。在Java语言中,将小数又分为float单精度浮点数和double双精度浮点数两种类型,单精度浮点数以f或F结尾,双精度浮点数以d或D结尾,不加后缀会默认为double双精度浮点数。如果考虑到要节省运行时的资源,并且运算时对于数据取值范围不大,同时对运算精度的要求也不太高,可以使用单精度类型。Java使用如下两种方式表示浮点数:

• 标准计数法:由整数部分、小数点和小数部分组成,如2.8、58.98等。

• 科学计数法:由整数部分、小数点和指数部分组成,其中指数部分由字母E或e加上带正负符号的整数表示,如805.18可以表示为8.0518E+2。

在java中,float是单精度,32位.浮点数,默认是0.0f;double是双精度,64位,浮点数,默认是0.0d。 在内存中存储为float类型符号位1bit、指数8bit、尾数23bit;double类型符号位1bit、指数11bit、尾数52bit。

浮点类型的长度和取值范围如表2.3所示。

表2.3 浮点类型长度与取值范围

数据类型

长度

取值范围

float

32位

1.4E-45~3.4028235E+38

double

64位

4.9E-324~1.7976931348623157E+308

2.2.3 字符类型

字符类型用来存储单个字符,用char表示。Java语言中的字符采用Unicode字符集编码格式,在内存中占用两个字节,共16位,属于无符号整数,一共有65536个,字符的取值范围从0到65535,表示其在Unicode字符集中的排序位置。字符类型有如下3种形式:

• 用单引号括起来的字符。例如,'Z'、'G'、'7'等都是合法的字符串常量,哪怕是整数,被单引号包起来以后也是字符常量。

• 转义字符。Java语言中的一些特殊字符,称为转义字符。如'\b'表示退格、'\n'表示换行、'\t'表示制表符,调到下一个TAB位置。

• 用Unicode值表示的字符。格式是'\uXXXX',其中XXXX代表一个十六进制的整数,如'\u08B3'。

知识点拨:Unicode标准字符集表最多可以识别65536个字符,在其中前128个字符刚好是ASCII码字符。由于Java语言的字符类型采取了Unicode这种国际标准编码格式,所以使Java语言能够极为方便地处理各种语言。例如,可以将汉字作为字符类型变量的值,这为程序的国际化提供了方便。

2.2.4 布尔类型

在程序中表示判断条件,改变程序执行的流程,可以使用布尔类型。布尔类型也称

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值