第一节 基本语法元素
一、空白、注释及语句
1、 空白
Java程序的元素之间可以插入任意数暈的空白,编译会忽略掉多余的空白。
2、 注释
注释不能插在一个标识符或关键字之中,也就是说,要保证程序中最基本元素的完整性。
程序中允许加空白的地方就可以写注释,注释不影响程序的执行结果,编译器将忽赂注释。
3、 语句、分号和块
二、关键字和保留字
Java关键字是对Java编译器有特殊含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明的变量类型、类、方法特性等信息。
关键字和保留字一律用小写字母标识,不可以作为标识符使用,按其用途划分为如下几组。
1、 用于数据类型:
用于数据类型的关键字有 boolean、byte、char、double、false、float、int、long、new、short、true、void、instanceof。
2、 用于语句:
用于语句的关键字有break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super。
3、 用于修饰:
用于修饰的关键字有 abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile。
4、 用于方法、类、接口、包和异常:
用于方法、类、接口、包和异常的关键字有 class、 extends、 implements、interface、 package、import、throws。
5、 Java保留的没有意义的关键字(未启用):
Java保留的但没有意义的关键字有 cat、 future、 generic、innerr、 operator、 outer、rest、var
6、 Java的3个保留字:
Java的3个保留字分别是true、false、null。它们不是关键字,而是文字。包含Java定义的值。
三、标识符
1、 标识符是由字母、数字、下划线(_)或美元符($)组成的字符串,其中数字不能作为标识符的开头。
2、 标识符区分大小写,长度没有限制。
3、 标识符中不能含有其他符号,例如+、=、*、及%等,当然也不允许插入空白。
4、 标识符可用作变量名、方法名、接口名和类名。
5、 Java源代码采用的是Unicode码,用16位无符号二进制数表示一个字符,汉字也是字符。所以也可以出现在标识符中,例如“”也是一个正确的标识符。
正确的标识符:_sys_varl、$abc123、sizeof、TRUE、defin、include(不是Java关键字)、这是一个标识符
上面是胡扯的,只有考试中会有,实际应用中严禁这样的写法。
错误的标识符:2Sun、class、#myname
四、Java编程风格
编写程序时应该注重自己的编程风格,增加必要的注释和空格,采用缩进格式。定义的各种标识符也要遵从惯例注意大小写。程序中尽量不使用没有含义的标识符,最好能望名知义。例如,变量用于计数,可将它命名为counter;用变量保存税率,可将它命名为taxRate。
类名或接口名:多为名词,含有大小写,每个单词的首字母大写如HelloWorld、Customer、SortClass等。
方法名:多是动词,含有大小写,首字母小写,其余各单词的首字母大写。尽量不要在方法名中使用下划线。如getName、setAddress、searchKey等。
常量名:简单类型常量的名字应该全部为大写字母,单词与单词之间用下划线分隔,对象常量可使用混合大小写。如BLUE_COLOR。
变量名:所有的实例变量、类变量、终极变量和静态变量等都使用混合大小写,首字符为小写,后面单词的首字母用大写。变量名中尽量不要使用下划线。如balance、orders、byPercent等。
命名时应尽量避免使用单字符名字,除非是临时使用的要“扔掉”的变量(比如仅在循环体中使用的循环变量)。
第二节 基本数据类型
Java的数据类型共分为两大类:基本数据类型和复合数据类型。
基本数据类型共有8种,分为4小类,分别是整型、浮点型、字符型和布尔型。整型和浮点型有时也合称为数值型。它们都可用作常量和变量。
复合数据类型包括数组、类和接口。其中数组是一个很特殊的概念,它是对象,而不是一个类,一般将它归为复合数据类型。
Java中所有类型的大小和表示都是固定的,不依赖于具体的实现。对此sizeof运算符已经没有意义。
一、整数类型
Java语言提供4种整型量,分别是byte、short、int和long,它们的字节数、整数长度、表示范围独立于平台并且依次倍增。
它们的字节数依次为:1、2、4、8;
int:字节数,4、整数长度,32位、表示范围,-2~2-1
整型量可用十进制、八进制或十六进制形式表示,以1-9开头的数为十进制数,以0开头的数为八进制数,以0x或0X开头的数为十六进制数。Java中4种整型量都是有符号的。整型常量是int型的。如果想表示一个长整型常量,需要在数的后面明确写出字母“L”。注意在Java里面不区分进制表示和常量的表示都不区分大小写。
Eg:077、0xBABE、2L、077L 、0XBABEL
Java整型常量的特殊值:Integer.MAX_VALUE、Integer.MIN_VALUE;
二、浮点数类型
Java中的浮点数类型有两种:单精度浮点数(float)和双精度浮点数(double)。
单精度浮点数(float)的字节数和整型量int的长度一样,Java的浮点数类型默认是double(D)除非yog用字母f明确指定。
Eg:0.0、-1.0、1D、1F、1.5e6
Java浮点数常量的特殊值:±Infinity,Double.POSITIVE_INFINITY,_Double._NEGATIVE_INFINITY、NaN(0/0)、Double.NaN。
三、字符类型
单个字符用char类型表示。一个表示一个Unicode字符,其值用16位无符号整数表示,范围为0 -65535。char类型的常量值必须用一对单引号‘’括起来,分为普通字符常量和转义宇符常量两种。
使用单引号括住一个字符,表示一个普通的字符常量。但有些字符在Java语言中有特殊的含义,表示时应使用转义字符。
Eg:\???、\u????
四、布尔类型boolean
逻辑值有两个状态,它们常被写作on和off、true和false、yes和no等。在Java中,这样的一个值用boolean(布尔)类型表示,布尔类型也称作逻辑类型。
boolean类型有两个常量值:true和false,它们全是小写,计算机内部使用8位二进制数表示。Java是一种严格的类型语言,它不允许数值类型和布尔类型之间进行转换。
第三节 表达式
表达式由运算符和操作数组成,对操作数进行运算符指定的操作,并得出运算结果。
Java运算符按功能可分为:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符,除此之外,还有几个特殊用途的运算符,如数组下标运算符等。操作数可以是变量、常量或方法调用等。
一、操作数
1、 常量
常量操作数很简单,只有简单数据类型和String类型才有相应的常量形式。
Eg:true、‘a’、“This is a String” String型常量
2、 变量的声明及初始化
变量是存储数据的基本单元,它可以用作表达式中的操作数。变量在使用之前要先声明。变量声明的基本格式为:类型 变量名1 [=初值1] [,变量名2 [=初值2]]….;
其中,类型是变量所属的类型,既可以是简单数据类型,如int和double等,又可以是类类型。有时也把类类型的变量称为引用。方括号中的初值是可选的。如果没有,则表明仅是声明了一个变量,否则是在声明变量的同时,给变量赋了初值,称为对变量进行了初始化。
声明变量的地方有两处,一处是在方法内,另一处是在类定义内。方法内定义的变量称为自动变量,也称为局部变量、临时变量或栈变量。这里所说的方法,包括程序员定义的各个方法。类中定义的变量就是类的成员变量。
简单数据类型的变量在说明之后,系统自动在内存分配相应的存储空间。说明引用后,系统只分配引用空间,程序员要调用new来创建对象实例,然后才分配相应的存储空间。
Java程序中不允许将未经初始化的变量用作操作数。对于自动变量,如果变量声明时没有进行初始化,则在变量使用之前必须使用赋值语句进行赋值。编译程序扫描代码时,会判定每个变量在首次使用前是否已被显式初始化。如果编译器发现某个变量没有初始化,编译时会出现错误。
创建一个对象引用后,需要使用new运算符为其分配存储空间。对于其中的成员变量,程序员可以显式进行初始化,也可以由系统自动进行初始化。系统默认初始化的值为各个类型的〇值(如果不存在,则是空值)。
Eg:int(0)、flout(0.0f)、double(0.0)、boolean(false)、所有引用类型(null)
3、 变量作用域:
变量的作用域是指可访问该变量的代码范围。类中定义的成员变量的作用域是整个类。方法中定义的局部变量的的作用域是从该变量的声明处开始到包含该声明的语句块结束处,块外面是不可使用的。
块内声明的变量将屏蔽其所在类定义中的同名变量。但同一个块中如果定义两个同名变量则会引发冲突。Java中允许屏蔽,但冲突将引发编译错误。
Eg:略
4、 数学函数
进行科学计算时,可能会经常用到数学函数,数学函数往往得到一个数值结果,这也属于操作数。Java语言提供了数学函数类Math,其中包含了常用的数学函数。
Math.sin(0)、
Math.abs(-1)、 Math.round(1.2)、
Math.ceil(1.2)、 Math.floor(1.8)
Math.sqrt(9)、 Math.pow(3,2)
Math.random() 返回0.0~1.0之间双精度的一个(近似)随机数值
二、运算符
1、 算术运算符
算术运算符包括通常的+、-、、/、%、++、—,完成整型和浮点型数据的算术运算。
Java中的取模运算符单独说一下:
Java扩展了取模运算,额外支持对浮点数的取模操作。书上似乎是错的,15.2%*5.0=0.1999999999999993
取模运算适用于负数,其结果的值取决于第一个操作数的符号。
2、 关系运算符
关系运算符都是二元运算符,用来比较两个值,运算结果是一个逻辑值。
Java允许“==”和“!=”两种运算用于任何数据类型。比如判断两个实例是否相等。
3、 逻辑运算符
4、 位运算符
位运算符用来对二进制位进行操作,包括~、&、|、^和移位运算符。位运算符只能对整型和字符型数据进行操作。
移位运算符(考纲上说不考)>>(缩小)、<<、>>>。9>>1=4
5、 其他运算符
Java中的运算符还包括扩展赋值运算符、条件运算符(?:)、点运算符(.)、实例运算符(instanceof)、new运算符及数组下标运算符([])等。
扩展赋值运算符是在赋值号(=)前再加上其他运算符,是对表达式的一种简写形式。
条件运算符(?:)是三元运算符,它的一般形式为:表达式?语句1:语句2;
逻辑表达式得到一个逻辑值,根据该值的真假决定执行什么操作。如果值为真,则执行语句1,否则执行语句2。语句1和语句2需要返回相同类型的值,且不能是void。
6、 运算符的优先次序
7、 表达式的提升和类型转换
Java是一种强类型语言,不支持变量类型间的自动任意转换,有时必须显式地进行变量类型的转换。每个数据都与特定的类型相关,允许整型、浮点型、字符型数据进行混合运算。运算时,不同类型的数据先转换为同一种类型,然后再进行运算。转换的一般原则是位数少的类型转换为位数多的类型,这称作自动类型转换这样做的目的是保证转换时不丢失有用信息。
Long.MAX_VALUE
Eg:int a = (int)(floutValue) // 为避免歧义后面的最好也加括号。