Java语言是面向对象的程序设计语言,Java程序的基本组成单元就是类,类体中又包含属性与方法两部分。每一个Java本地应用程序都必须包含一个main方法,含有main方法的类称之为主类。
一个Java应用程序是由若干个类组成的,Java类必须执行导入才能够被当前类使用,在Java语言中可以通过import关键字导入相应的类。
通常将类的属性称之为类的全局变量(或成员变量),将方法中的属性称之为局部变量。全局变量声明在类体当中,局部变量声明在方法体当中。
main()方法是类体中的主方法。该方法从“{”开始,至“}”结束,中间是方法体。public、static、void分别是main方法的权限修饰符、静态修饰符和返回值类型声明,在java程序中的main()方法,必须声明为public static void。String arg[]是一个字符串类型的数组,它是main()方法的参数,main()方法是程序开始执行的位置。
main()方法是程序入口方法。它有固定的格氏,方法的参数也固定为一个字符串数组。
Java语言提供了3种添加注释的方法,分别为单行注释("//")、多行注释(”/* */”)和文档注释(“/** */”)。
JavaDoc文档注释:“/**”和“*/”是文档注释的起始和结束标记。在Java源文件编辑器中,选择某个成员方法或成员变量,然后按Shift+Alt+J键,Eclipse会自动添加JavaDoc文档注释结构。如果选择的是方法,还会自动添加参数名称。
Java语言使用的是Unicode标准字符集,最多可标识65535个字符。
Java中的关键字:
int | public | this | finally | boolean | abstract |
continue | float | long | short | throw | throws |
return | break | for | static | new | interface |
if | goto | default | byte | do | case |
strictfp | package | supper | void | try | switch |
else | catch | implements | private | final | class |
extends | volatile | while | synchronized | instanceof | char |
protecte | importd | transient | implements | dafault | double |
在声明变量时可以不赋值,也可以直接赋给初值。
系统的内存大致分为3个区域:系统区(OS)、程序区(Program)和数据区(Data)。当程序执行时,程序代码会加载到内存中的程序区,数据暂时存储在数据区中。在Java语言中允许使用汉字或其他语言文字作为变量名。
Java使用关键字final来声明常量,并且常量在声明之后只能够初始化一次。常量名通常使用大写字母,并使用“_”下划线字符分割多个单词。
全局常量(或成员常量)被声明之后,必须马上初始化,或者在类的所有构造方法中进行初始化,否则编译器会报错。
全局变量(又称为成员变量)定义在类体中,它的有效范围时整个类的代码段。局部变量是在方法体中定义的变量,只在当前代码块(即花括号内)中有效。
在Java中有8中基本数据类型用来存储数值、字符和布尔值。
数值型:整数类型(byte、short、int、long)和浮点类型(float、double)
字符型:char
布尔型:boolean
十进制是Java语言默认的数制,不能以0作为十进制数的开头(0除外)。八进制的表现形式以最高位的数字0来区分,八进制必须以0开头。十六进制必须以0X或0x开头。
数据类型 | 存储位数 | 取值范围 |
---|---|---|
byte | 8位 | -128到127 |
short | 16位 | -32768到32767 |
int | 32位 | -2147483648到2147483647 |
long | 64位 | -9223372036854775808到9223372036854775807 |
Java默认的整数类型是int,如果要标记整数是long类型,必须在数字末尾添加字母“L”。
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
float | 32位 | 1.4E-45到3.4028235E38 |
double | 64位 | 4.9E-324到1.7976931348623157E308 |
Java语言默认使用double双精度类型的浮点数,如果将实数赋值给float类型的变量,则需要在实数末尾添加“F”字母做后缀
字符类型(char)用于存储单个字符,占用16位(两个字节)的内存空间。字符类型以单引号表示。
数据从占用存储空间较小的类型转换为占用存储空间较大的数据类型时,不用做显示的类型转换(即自动类型转换),反之则必须做强制类型转换。
变量赋值:当为变量赋值的数据类型与变量类型不一致,并且赋值的数据类型级别低于变量类型的级别时,自动数据类型转换会将赋值数据自动转换为变量的类型。
方法调用:把一个数值传递给方法的参数,并且这个数值的数据类型低于方法的参数变量的数据类型。
当把高级的数据类型强制转换为低级的数据类型时,如果数值炒出低级数据类型的取值范围,则数值将被截取,会导致数据丢失、不完整。
boolean布尔型的数值不能被强制类型转换为其他数据类型,反之亦然。
代表不同运算操作的符号称为运算符,执行运算的数据称为操作符。操作符与操作符按一定语法形式组成有意义的符号序列成为表达式。
由于处理赋值运算符“=”时会先取得右方表达式处理后的结果,因此一个表达式中若含有两个以上的“=”运算符时,会从最右方的“=”开始处理。
自增、自减运算符是一元算术运算符,可以作为前缀,也可以作为后缀使用。它的作用是使变量的值增1或减1。放在变量前面的自增、自减运算符,例如“++x”,会先将变量x的值加1,然后再引用该变量的值参与运算。放在变量后边的自增、自减运算符,例如“x++”,会先引用变量的值参与表达式的运算,然后再将该变量加1。
比较运算符也称关系运算符,属于二元运算符,其运算结果是boolean类型:>、<、==、>=、<=、!=
Java逻辑运算符包括“&&"逻辑与、“||”逻辑或和“!”逻辑非。
位运算符用于处理整型或字符型的操作符。位运算是完全针对二进制位(bit)单位的操作。~(非,按位取反)、&(与,按位相与)、|(或,按位相或)、^(异或,按位异或)、<<(左移位)、>>(右移位)、>>>(无符号右移位)。Java的位运算符中,~非运算是一元运算符,其他的都是二元运算符。
左移就是将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,左移空出的部分补0,右移则复杂一些,如果最高位是0,左移空出的部分就补0,如果最高位是1,右移空出的部分就补1。Java还提供了无符号右移运算符(>>>)不管最高位是0还是1,左移空出的位都补0.
移位运算符使用的数据类型有byte、short、char、int和long
移位能实现整数除以或乘以2的n次方的效果。一个数左移n位,就是将这个数乘以2的n次方,一个数右移n位,就是将这个数除以2的n次方。
三元运算符:条件式?值1:值2。若条件式的值为true,则整个表达式取值1,否则取值2
优先级 | 描述 | 运算符 |
---|---|---|
高 | 括号 | () |
| | 正负号 | + - |
| | 一元运算符 | ++ -- ! |
| | 乘除 | * / % |
| | 加减 | + - |
| | 移位运算 | << >> >>> |
| | 比较大小 | > < >= <= |
| | 比较是否相等 | == != |
| | 按位与运算 | & |
| | 按位异或运算 | ^ |
| | 按位或运算 | | |
| | 逻辑与运算 | && |
| | 逻辑或运算 | || |
↓ | 三元运算符 | ?: |
低 | 赋值运算符 | = += -= *= /+ %= |
编码规范:每条语句单独占一行,一条命令要以分号结束。在声明变量时,应尽量使每个变量的声明单独占一行,对于局部变量,应在声明的同时对其进行初始化。类名和接口的名称不但要求使用有意义的单词而且所有单词的首字母都要大写。常量的所有字母全部大写,多个单词使用“_”下划线连接。
一个字节由8位(bit)组成,位是最小单位,字节中的位是按从低到高依次排序,索引下标是位0至位7.
if条件判断语句中,如果省略条件语句后的复合语句,需要在if语句末尾添加分号“;”,还可以使用空的复合语句。
对于if...else语句可以使用三元操作符对语句进行简化。
switch语句根据一个表达式的结果,执行特定的操作。其中表达式、case常量是必要的参数,而break和default是可选的参数。
switch语句中的表达式类型的级别必须低于int整数类型,即表达式的值只能是byte、short、char或int类型,不能使用浮点类型或long长整型。case子句中的常量必须和表达式的类型兼容,而且每个case子句的常量值都不能相同。switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相同,则执行该case语句后的若干个语句直到遇到break语句为止。如果case语句中没有break语句,则继续执行下一个case语句,直到遇到break语句为止。若没有一个case子句的常量与表达式的值相同,则执行default分支的语句。如果defgaul语句不存在,则switch语句不做任何处理。break语句用来跳出switch语句。switch语句的所有功能都可以使用if...else语句实现。多个相连的case分支省略break语句可以实现多个条件执行同一业务处理的效果。
case常量表达式的值可以是字符,但一定不能使字符串。
在编程时,有时会遇到使用for循环的特殊语法格式来实现无限循环,语法格式为:for(;;){循环体},对于无限循环可以通过break语句跳出循环。while语句是“当型”循环语句,当条件表达式成立时就执行循环体中的内容。在执行完循环体中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时退出循环。do...while循环语句与while循环语句类似,它们之间的差别是while语句先判断条件是否成立在执行循环体,而do...while语句是先执行一次循环,在判断条件是否成立。do...while语句与while语句的一个明显区别是,它在结尾处多了一个分号(;).
println()方法在输出字符串时,自动在字符串的末尾添加"\n"换行字符,print()方法同样用于输出字符串到控制台,该方法输出字符串后不会自动换行。
Java语言定义的break语句和continue语句用于循环的跳转,它们可以实现上述功能。
continue语句只能应用于for、while和do...while循环语句中,用于结束本次循环直接跳过循环体剩余的语句,进行下一次循环。continue 标号;标号是可选参数,标号有合法标识符和“:”字符组成。
不带标号跳转:将结束本次循环,跳过循环体中剩余的没有被执行的语句,根据循环的条件判断去执行下一次循环,或者结束循环。如果是for循环,则还要执行表达式3,改变循环控制变量的值。
带标号跳转:不是跳过当前循环语句的一次循环,而是跳过标号指定的循环语句的一次循环,然后判断指定标号的循环条件,以决定是否执行标号指定的循环。
break语句可以应用在for、while和do...while循环语句中,实现强行退出循环。break 标号;不带标号的break语句可以终止break语句所在的循环。带标号的break语句可以终止标号指定的循环,它常用语跳出多层循环的情况。
break语句和continue语句的区别在于break语句将终止整个循环语句,而continue语句只结束本次循环。
数组是具有相同数据类型的一组数据的集合。数组作为对象允许使用new关键字进行内存分配,在使用数组之间,必须先定义数组变量所属的类型,即声明数组。数组类型 数组名[];或数组类型[] 数组名;声明数组后,还不能访问其中的任何元素。因为声明数组仅仅是给出了数组名称和类型,要想真正使用数组还要为它分配内存空间。在为数组分配内存空间时必须指明数组的长度。数组名字 = new 数组类型[数组长度];
数组的下标是从0开始的。使用new关键字为数组分配内存时,整型数组中的各个元素的初始化值都为0。也可在声明数组的同时为数组分配内存;数组元素类型 数组名 = new 数组元素类型[数组元素的个数];
数组的初始化就是包括在花括号之内用逗号分开的表达式列表。逗号分开了数组元素的值。对于整型二维数组,创建成功之后系统会给数组中的每个元素初始化值0.
length()方法用于获取数组的长度,array.length()方法判断第一维数组的长度,array[0].length方法判断下标为0的第二维数组的长度。
foreach()主要用于执行遍历功能的循环
for(类型 var:集合){
循环体
}
在eclipse中输入“fore”,然后按ALT+/键,在弹出菜单中选择foreach系列的模板选项。
java.util包的Arrays类包含用来操作数组的各种方法,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。既可以填充整个数组也可以填充部分数组。通过Arrays类的静态sort()方法实现对数组排序.Arrays类的copyOf()方法与copyOfRange()方法可实现对数组的复制。copyOf()方法是复制数组至指定长度。copyOfRange()方法则将指定数组的指定长度复制到一个新数组中。对于copyOf()方法,如果新数组的长度大于数组arr的长度,则用0填充(根据复制数组的类型来决定填充的值,整型数组用0填充。char型数组则会使用null填充);如果复制后的数组长度小于数组arr的长度,会从数组arr的第一个元素开始截取知道满足新数组长度为止。