一、注释
java注释是用于注解说明解释程序的文字。可分为三类:单行注释、多行注释、文档注释(java特有)。对于单行注释和多行注释,被注释的内容不会被JVM(java虚拟机)解释执行。而文档注释,其注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。操作命令如下:
javadoc -d mydoc -author -version HelloWorld.java
注意:一个源文件中最多只能有一个public类。其他类的个数不限。如果源文件中包含一个public类,则源文件名必须按照该public类名来命名。比如:
class Something{
public static void main(String[] args){
System.out.println("Do something ...");
}
}
因为class类没有使用public进行修饰,故此源文件的名称可以是Something.java,也可以是其他,如Otherthing.java。但如果class前面有public字段修饰,则该源文件的名称则必须与类名相同,即只能为Something.java。
二、关键字和保留字
关键字:被java语言赋予了特殊含义,用作专门用途的字符串(单词),其主要特点是关键字中所有字母都为小写。
在官方地址(https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html)中,可以看到所有的关键字。
用于定义数据类型的关键字 | |||||||||
---|---|---|---|---|---|---|---|---|---|
class | interface | enum | byte | short | int | long | float | double | char |
boolean | void | ||||||||
用于定义流程控制的关键字 | |||||||||
if | else | switch | case | default | while | do | for | break | continue |
return | |||||||||
用于定义访问权限修饰符的关键字 | |||||||||
public | protected | private | |||||||
用于定义类、函数、变相修饰符的关键字 | |||||||||
abstract | final | static | synchronized | ||||||
用于定义类与类之间关系的关键字 | |||||||||
extends | implements | ||||||||
用于定义建立实例及引用实例,判断实例的关键字 | |||||||||
new | this | super | instanceof | ||||||
用于异常处理的关键字 | |||||||||
try | catch | finally | throw | throws | |||||
用于包的关键字 | |||||||||
package | import | ||||||||
用于定义数据类型值的字面值 | |||||||||
true | false | null | |||||||
其他关键字 | |||||||||
native | strictfp | transient | valitile | assert |
保留字:现有java版本未使用,但以后版本可能会最为关键字。包括goto、const。
关键字和保留字共计50个,其中,true、false和null看起来像关键字,但它们实际上是文本;不能在程序中将它们用作标识符。
三、标识符(Identifier)
标识符:java对各种变量、方法和类等要素命名时使用的字符序列。
标识符定义规则:①由26个英文字母大小写,0-9,_或者$组成;②数字不可以开头;③不可以使用关键字和保留字,但能包含关键字和保留字;④严格区分大小写,长度无限制;⑤不能包含空格。
名称命名规范:①包名(多单词组成时所有字母都小写);②类名、接口名(多单词组成时,所有单词的首字母大写);③变量名、方法名(多单词组成时,第一个单词首字母小写,其他单词首字母大写);④常量名(所有字母大写,多单词时每个单词用下划线连接)。
注意:java采用unicode字符集,因此标识符也可以使用汉字声明,但不建议使用。
四、变量
变量是内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。变量是程序中最基本的存储单元,包含变量类型、变量名和存储的值。其主要作用是用于在内存中保存数据。
变量按照数据类型分类,可分为基本数据类型和引用数据类型。其中,基本数据类型包括数值型(byte、short、int、long、float、double)、字符型(char)和布尔型(boolean),引用数据类型包括类(class)、接口(interface)和数组([ ])。
按照声明的位置不同,可分为成员变量和局部变量。成员变量包括实例变量(不以static修饰)和类变量(以static修饰),局部变量包括形参(方法、构造器中定义的变量)、方法局部变量(方法内定义)和代码块局部变量(代码块中定义)。
java的整型变量默认为int类型,浮点型默认为double类型。
类型 | 占用存储空间 | 范围 |
byte | 1字节=8bit位 | -128 ~ 127 |
short | 2字节 | -2^15 ~2^15 -1 |
int | 4字节 | -2^31 ~ 2^31 -1 (约21亿) |
long | 8字节 | -2^63 ~ 2^63 -1 |
float | 4字节 | -3.403E38 ~ 3.403E38 |
double | 8字节 | -1.798E308 ~ 1.798E308 |
char类型数据占用2个字节,使用单引号进行定义,可以进行运算,因为它由对应的Unicode码。
boolean类型用来判断逻辑条件,一般用于流程控制,只允许取值true和false,也不可以使用0或非0整数替代false和true。
自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按照容量大小排序为:
转换规则:①有多种类型的数据混合运算时,系统首先自动将所有数据转换为容量最大的那种数据类型,然后进行计算;②byte、short、char之间不会进行相互转换,他们三者在计算时首先转换为int类型;③boolean类型不能与其它数据类型运算,也不能转换为其他数据类型;④当把任何基本数据类型的值和字符串进行连接运算时(+),基本数据类型的值将自动转化为字符串类型;④通常情况下,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以把字符串转换为基本类型。
强制类型转换:自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符,但可能造成精度降低或溢出。
五、运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。可分为算术运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符等。
算术运算符:+(正号)、-(负号)、+(加)、-(减)、*(乘)、/(除)、%(取余、取模)、++(自增)、--(自减)、+(字符串连接)。
赋值运算符:=(赋值)、+=、-=、*=、/=、%=。
比较运算符:==(相等于)、!=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、instanceof(检查是否是类的对象)。
逻辑运算符:&(逻辑与)、|(逻辑或)、!(逻辑非)、&&(短路与)、||(短路或)、^(逻辑异或)。
位运算符:<<(左移)、>>(右移)、>>>(无符号右移)、&(与运算)、|(或运算)、^(异或运算)、~(取反运算)。
三元运算符:(条件表达式)?表达式1:表达式2;
逻辑运算符细节
位运算符细节
运算符的优先级:
注意:1、使用算术运算符,如果对负数取模,则可以把模数负号忽略不计,但被模数是负数时则不可忽略。
2、使用赋值运算符“=”时,当两侧数据类型不一致时,可以使用自动类型转换或强制类型转换进行处理。
3、逻辑运算符中使用单“&”时,左边无论真假,右边都参与运算;使用双“&&”时,左边为真,右边参与运算,左边为假,右边不参与运算,单“|”和双“||”使用情况相同。
4、位运算符是直接对整数的二进制进行的运算。
5、三元运算符中表达式1和表达式2为同种类型。
6、所有运算符中,只有单目运算符、三元运算符、赋值运算符是从右向左运算的。
六、流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合能完成一定功能的小逻辑模块。基本的流程结构分为三种:顺序结构、分支结构和循环结构。
顺序结构:程序从上到下逐行的执行,中间没有任何判断和跳转。
分支结构:根据条件,选择性的执行某段代码。有if...else和switch-case两种分支语句。
if语句有如下三种格式:
switch-case结构:
switch语句有关规则:
1、switch表达式中的值必须是以下几种类型之一:byte、short、char、int、枚举(jdk5.0)、String(jdk7.0);
2、case子句中的值必须是常量,不能是变量名或不确定的表达式值;
3、同一个switch语句,所有case子句中的常量值互不相同;
4、break语句用来在执行完一个case分支后是程序跳出switch语句块,如果没有break,程序会顺序执行到switch结尾;
5、default子句是可任选的。同时,位置也是灵活的。当没有匹配的case子句时,执行default子句。
循环结构:根据循环条件,重复性的执行某段代码。有while、do...while、for三种循环语句。JDK1.5提供了增强for循环,即foreach循环,方便便利集合、数组元素。
循环语句有四个组成部分:初始化部分、循环条件部分、循环体部分、迭代部分。
在流程控制中,有两个特殊的流程控制语句,即break和continue。break语句用来终止某个语句块的执行,continue用于跳过本次循环,开启下一次循环。java中常见的return语句并非用于结束循环的,它的功能是结束整个方法,不论这个return处于多少层循环之内。