通过阅读本篇,您可以:
了解Java主类结构
了解Java语言中的基本数据类型
理解Java语言中的常量与变量
掌握Java语言运算符的使用
理解Java语言数据类型的转换
了解Java语言中的代码注释与编码规范
Java主类结构
Java语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又包括属性与方法两部分。每一个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。
在Eclipse下依次创建项目item、包Number和类Frist。创建完成后,即可得到以下代码:
1 | package Number; |
在类体中输入以下代码,实现在控制台上输出“你好Java”
1 | package Number; |

文件名必须和类名Frist同名,即Frist.java。还要注意大小写,Java 是区分大小写的。
包声明
一个Java应用程序是由若干个类组成的,上述例子的包声明就是“package Number; ”,因为package就是包声明

类声明
通常将类的属性称为类的全局变量(成员变量),将方法中的属性称为局部变量。
上例的s1为成员变量而s2属于局部变量,因为s1在类中声明并没有任何方法中,而s2在方法public static void main(String[] args)中
编写主方法
main()方法是类体中的主方法。该方法从“{”开始,至“}”结束。
其中main()方法中的权限修饰符为public,静态修饰符为static、返回值修饰符为void。Java程序中的main()方法必须声明为public static void。
main()方法是程序开始执行的位置。
导入API类库
在Java语言中可以通过import关键字导入相关的类。在JDK的API中(应用程序接口)提供了如java.awt、java.io等130多个包。
可以通过 JDK的API文档来查看这些类,其中主要包括类的继承结构、类的应用、成员变量表、构造方法表等,并对每个变量的使用目的作了详细的描述,API文档是程序开发人员不可或缺的工具。
基本数据类型
在Java中有8种基本数据类型来存储数值、字符和布尔值

整数类型
整数类型用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。
十进制:
除了数字0,不能以0作为其他十进制数的开头
八进制:
八进制:如0123(转换成十进制数为83)、-0123(转换成十进制数为-83),八进制数必须以0开头。
十六进制
十六进制:如0x25(转换成十进制数为37)、0Xb01e(转换成十进制数为45086)。十六进制以 0X或者0x 开头
其中整数类型可分为byte、short、int和 long 4种类型,
浮点类型
浮点类型表示有小数部分的数字。Java语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double)。
在默认情况下,小数都被看作double型,若使用float型小数,则需要在小数后面添加F或f
可以使用后缀d或D来明确表明这是一个double类型数据,不加d不会出错,但声明float型变量时如果不加f,系统会认为变量是double类型,从而出错。
1 | float f1 = 13.23f; |
字符类型
char型
字符类型(char)用于存储单个字符,占用16位(两个字节)内存
1 | char x = 'a'; |
同C和C++语言一样,Java语言也可以把字符作为整数对待。由于 unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff)
转义字符

1 | char c1 = ''; //将转义字符叶’赋值给变量c1 |
布尔类型
布尔类型又称逻辑类型,通过关键字boolean来定义布尔类型变量, 只有true和false两个值别代表布尔逻辑中的“真”和“假”。
1 | boolean b; //定义布尔型变量b |
变量与常量
标识符和关键字
标识符
标识符就好似一个名字来标识类名、变量名、方法名、数组名、文件名
Java语言规定标识符由任意顺序的字母、下画线(_)、美元符号($)和数字组成,并且第一个字符不能是数字。标识符不能是Java中的保留关键字。
合法标识符:
1 | name |
非法标识符:
1 | 4word |
在Java语言中标识符中的字母是严格区分大小写的,如good和Good 是不同的两个标识符。
Java语言中的字母不仅包括通常的拉丁文字a、 b、c等,还包括汉字、日文以及其他许多语言中的文字。
关键字
关键字是Java语言中已经被赋予特定意义的一些单词
声明变量
定义变量就是要告诉编译器(compiler)这个变量的数据类型,这样,编译器就会分配对应的空间给它,并且让编译器知道他能存放的数据。
在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了便于操作,给这个空间取个名字,称为变量名。变量的命名必须是合法的标识符。
在声明变量时可以是没有赋值,也可以是直接赋给初值。
1 | int a; //声明一个名称为a的 int 型变量 |
对于变量的命名并不是随意的,应遵循以下几条规则:
变量名必须是一个有效的标识符。
变量名不可以使用Java中的关键字。
变量名不能重复。
应选择有意义的单词作为变量名。
声明常量
在程序运行过程中一直不会改变的量称为常量(constant),常量在整个程序中只能被赋值一次。
在Java语言中声明一个常量,除了要指定数据类型外,还需要通过 final关键字进行限定。声明常量的标准语法如下:
1 | final 数据类型 常量名称[=值] |
常量名通常使用大写字母,但这并不是必需的。大写字母表示常量,是为了清楚地表明正在使用常量。
1 | final double Pl=3.1415926D; //声明double 型常量PI并赋值 |
当常量属于“成员变量”时,必须在定义时就设定它的初值,否则将会产生编译错误。


变量的有效范围
在程序中,一般会根据变量的“有效范围”将变量分为“成员变量”和“局部变量”。
成员变量
在类体中所定义的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可分为两种,即静态变量和实例变量。
1 | class var{ |
在上面的代码中:x为实例变量,y为静态变量(也称类变量)
就是说,如果在成员变量的类型前面加上关键字static,这样的成员变量称为静态变量。静态变量的有效范围可以跨类,甚至可达到整个应用程序之内,还能直接以“类名.静态变量”的方式在其他类内使用。
局部变量
在类的方法体中定义的变量(方法内部定义,“{”与“}”之间的代码中声明的变量)称为局部变量。局部变量只在当前代码块中有效。在类的方法中声明的变量,包括方法的参数,都属于局部变量
局部变量只在当前定义的方法内有效,不能用于类的其他方法中。
局部变量可与成员变量的名字相同,此时成员变量将被隐藏,即这个(同名)成员变量在此方法中暂时失效。
1 | public class Val{ |

运算符
Java中提供了丰富的运算符,如赋值运算符、算术运算符、比较运算符等。
赋值运算符
赋值运算符以符号“=”表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方的操作数。
1 | int a = 100; |
该表达式是将100赋值给变量a。左方的操作数必须是一个变量,而右边的操作数则可以是任何表达式,包括变量(如a、number)、常量(如123、’book’)、有效的表达式(如45*12)
1 | int a = 10; //声明int型变量a |
遵循赋值运算符的运算规则,可知系统将先计算a+b的值,结果为15,然后将15赋值给变量c,因此c=15。
由于赋值运算符“=”处理时会先取得右方表达式处理后的结果,因此一个表达式中若含有两个以上的“=”运算符,会从最右方的“=”开始处理。
1 | public class Eval{ |
运行结果

在Java中可以把赋值运算符连在一起使用。如:
x = y = z = 5;
在这个语句中,变量x、y、z都得到同样的值5。但在实际开发中不建议使用这种赋值语句。
算术运算符
Java中的算术运算符主要有+(加)、-(减)、*(乘)、/(除)、%(求余),它们都是二元运算符。Java中算术运算符的功能及使用方式如表
其中,“+”和“-”运算符还可以作为数据的正负符号,如+5、-7
在项目中创建类Arith,在主方法中定义变量,使用算术运算符将变量的计算结果输出。
1 | public class Arith { //创建类 |
运行结果

自增和自减运算符
操作元必须是一个整型或浮点型变量。自增、自减运算符的作用是使变量的值增1或减1。
当运算符在前时,先进行运算,后操作。当运算符在后时,先操作,后进行运算。
粗略地分析,++a与a++的作用都相当于a = a+1。假设a = 4,则:
再看另一个语法,同样假设a = 4,则:
比较运算符
比较运算符属于二元运算符,用于程序中的变量之间、变量和自变量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean型。当运算符对应的关系成立时,运算结果为true,否则为 false。所有比较运算符通常作为判断的依据用在条件语句中。比较运算符共有6个,如表

在项目中创建类Compare,在主方法中创建整型变量, 使用比较运算符对变量进行比较运算,并将运算后的结果输出。
1 | public class Compare { //创建类 |
逻辑运算符
返回类型为布尔值的表达式,如比较运算符,可以被组合在一起构成一个更复杂的表达式。这是通过逻辑运算符来实现的。
逻辑运算符表如下

使用逻辑运算符进行逻辑运算表如下

在项目中创建类Calculation,在主方法中创建整型变量,使用逻辑运算符对变量进行运算,并将运算结果输出。
运行结果如图
位运算符
位运算符除“按位与”和“按位或”运算符外,其他只能用于处理整数的操作数。位运算是完全针对位方面的操作。整型数据在内存中以二进制的形式表示,如int型变量7的二进制表示是00000000 00000000 00000000 00000111。
左边最高位是符号位,最高位是0表示正数,若为1则表示负数。负数采用补码表示,如-8的二进制表示为111111111 111111111 1111111 11111000。这样就可以对整型数据进行按位运算。
“按位与”运算
“按位与”运算的运算符为“&”,为双目运算符。“按位与”运算的运算法则是:如果两个整型数据a、b对应位都是1,则结果位才是1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
“按位或”运算
“按位或”运算的运算符为“|”,为双目运算符。“按位或”运算的运算法则是:如果两个操作数对应位都是0,则结果位才是0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同
“按位取反”运算
“按位取反”运算也称“按位非”运算,运算符为“~”,为单目运算符。“按位取反”就是将操作数二进制中的1修改为0,0修改为1
“按位异或”运算
“按位异或”运算的运算符是“^”,为双目运算符。“按位异或”运算的运算法则是:当两个操作数的二进制表示相同(同时为0或同时为1) 时,结果为0,否则为1。若两个操作数的精度不同,则结果数的精度与精度高的操作数相同
除了上述运算符之外,还可以对数据按二进制位进行移位操作。
Java中的移位运算符有以下3种。
1.<<:左移
左移就是将运算符左边的操作数的二进制数据,按照运算符右边操作数指定的位数向左移动,
2.>>:右移。
右边移空的部分补0。右移则复杂一些。当使用“>>”符号时,如果最高位是0,右移空的位就填入0;如果最高位是1,右移空的位就填入1
3.>>>:无符号右移。
Java还提供了无符号右移“>>>”,无论最高位是0还是1,左侧被移空的高位都填入0。
移位运算符适用的数据类型有byte、short、char、int和long。
移位可以实现整数除以或乘以2n的效果。例如,y<<2与y*4的结果相同;y>>1的结果与y/2的结果相同。总之,一个数左移n位,就是将这个数乘以2n;一个数右移n位,就是将这个数除以2n。
三元运算符
三元运算符的使用格式为:条件式?值1:值2
三元运算符的运算规则为:若条件式的值为true,则整个表达式取值1,否则取值2。例如:
1 | boolean b = 20<45?true:false; |
如上例所示,表达式“20<45”的运算结果返回真,那么boolean型变量b取值为true;相反,表达式“45<20”返回为假,则boolean型变量b取值false。
三元运算符等价于if…else语句。
运算符优先级
通常优先级由高到低的顺序依次是:
增量和减量运算>算术运算>比较运算>逻辑运算>赋值运算
如果两个运算有相同的优先级,那么左边的表达式要比右边的表达式先被处理。
数据类型转换
类型转换是将一个值从一种类型更改为另一种类型的过程。例如, 可以将String类型的数据“457”转换为数值型,也可以将任意类型的数据转换为String类型。
如果从低精度数据类型向高精度数据类型转换,则永远不会溢出, 并且总是成功的;而把高精度数据类型向低精度数据类型转换时,则会有信息丢失,有可能失败。
数据类型转换有两种方式,即隐式转换与显式转换。
隐式类型转换
从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作。这种类型的转换称为隐式转换
这些类型按精度从低到高排列的顺序为byte < short < int < long < float < double
使用int型变量为float型变量赋值,此时int型变量将隐式转换成float型变量。
此时执行输出语句,y的结果将是50.0

显式类型转换
当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换运算(又称强制类型转换)
语法为:(类型名)要转换的值
将不同的数据类型进行显式类型转换
执行显式类型转换时,可能会导致精度损失。除boolean类型以外其他基本类型,都能以显式类型的方法实现转换。
当把整数赋值给一个byte、short、int、long型变量时,不可以超出这些变量的取值范围,否则必须进行强制类型转换。例如:
byte b = (byte)129;
代码注释与编码规范
在程序代码中适当地添加注释,可以提高程序的可读性和可维护性。好的编码规范可以使程序更易阅读和理解。
代码注释
通过在程序代码中添加注释可提高程序的可读性。
注释中包含了程序的信息,可以帮助程序员更好地阅读和理解程序。
在Java源程序文件的任意位置都可添加注释语句。注释中的文字Java编译器不进行编译, 所有代码中的注释文字对程序不产生任何影响。Java语言提供了3种添加注释的方法,分别为单行注释、多行注释和文档注释。
单行注释
“//”为单行注释标记,从符号“//”开始直到换行为止的所有内容均作为注释而被编译器忽略。
语法如下:
![]() |
例如,以下代码为声明的int型变量添加注释:
![]() |
多行注释
“/ * * /”为多行注释标记,符号“/* ”与“*/”之间的所有内容均为注释内容。注释中的内容可以换行。
语法如下:
![]() |
但在多行注释中不可以嵌套多行注释,以下代码为非法:
文档注释
“/** * /”为文档注释标记。符号“/**”与“ */”之间的内容均为文档注释内容。当文档注释出现在声明(如类的声明、类的成员变量的声明、类的成员方法声明等)之前时,会被Javadoc文档工具读取作为Javadoc文档内容。文档注释的格式与多行注释的格式相同。对于初学者而言,文档注释并不是很重要,了解即可。
编码规范
在学习开发的过程中要养成良好的编码习惯,因为规范的代码格式会给程序的开发与日后的维护提供很大方便。