目录
3.1 java主类结构
java程序的基本组成单元是类,类中又包括属性和方法两部分.每个应用程序必须包含一个main()方法 ,含有main()方法的类称为主类。下面通过程序来介绍java的主类结构:
package hello;//包
/**
* @author chengqian
*
*/
public class Hellojava {//主类
/**
* @param args
*/
private static String say="我要学会你!";
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
System.out.println("你好,java!"+say);
}
}
文件名必须和类名同名,还要注意大小写,java是区分大小写的.
3.1.1包声明
一个java应用程序由若干个类组成,语句package hello为声明该类所在的包,package为包的关键字.
3.1.2全局变量和局部变量
通常将类的属性称为类的全局变量(成员变量) ,将方法中的属性称为局部变量;全局变量的声明在类体中,局部变量的声明在方法体中;全局变量和局部变量都有各自的应用范围;在上面例子中say为全局变量,主方法中的变量为局部变量.
3.1.3主方法
main()方法是类体的主方法 ,该方法用{ }括起来;public,static,void分别是主方法的权限修饰符、静态修饰符和返回值修饰符;java中的main()方法必须声明为public static void;String[ ] args是一个字符串型的数组,作为主方法的形参;main()方法是程序开始执行的位置.
3.1.4导入API类库
在java中可以通过import关键字导入相关的类;在JDK的API(应用程序接口)中提供了130多个包,可以通过JDK的API文档来查看这些类;
3.2 基本数据类型
在java中有8种基本数据类型来存储数值、字符和布尔值,如下:
3.2.1整数类型
整数类型在java中有三种形式,十进制、八进制和十六进制.
十进制都很熟悉,八进制必须以0开头,如0123(转换为十进制数为83)、-0123(十进制为-83);十六进制必须以0X或0x开头,如0X25(十进制为37);
整数类型根据他所占的内存大小不同,可以分为以下:
下面以int为例讲解整型变量的定义:
定义以上4中变量时要注意它们的取值范围,超出相应的范围就会出错;对于long型数据,若赋给的值大于int型的最大值或小于int型的最小值,则要在数字后面加L或l,表示该数值为长整数,如long num=2134567898L。
3.2.2浮点类型
java中的浮点类型主要分为两种float(单精度浮点型)和double(双精度浮点型),它们具有不同的取值范围:
在默认的情况下,小数都被看做double型;若要使用float型小数,则需要在小数后加F或f。下面举例说明:
3.2.3字符型
1.char型
char用于存储单个字符,占用16位的存储空间。在定义字符型变量时,要用单引号标明,如's',而"s"是一个字符串,字符串用双引号标明.
同其他语言一样,java也把字符当做整数对待。由于unicode编码采用无符号编码,可以存储65536个字符(0X0000~0Xffff),所以java的字符可以处理所有国家的语言文字;若想得到一个0~65536之间的数所代表的的字符,必须使用char进行显示转换。看下例:
2.转义字符
转义字符是一种特殊的字符变量,它以反斜杠“\”开头,后跟一个或多个字符。java中的转义字符如下所示:
将转义字符赋值给字符变量时,与字符常量一样要使用单引号.
3.2.4布尔类型
布尔类型又叫逻辑类型,通过关键字boolean来定义,只有true和false两个值,分别代表逻辑中的真和假。布尔值不能与整数类型进行转换,通常用在流程控制中作为判断条件.
3.3变量与常量
在执行程序的过程中,其值不能改变的量称为常量,其值能改变的量称为变量。
3.3.1标识符与关键字
1.标识符
java语言规定表示符由字母、下划线、美元符号$和数字组成,并且第一个字符不能是数字。
标识符不能是java中的关键字.
2.关键字
3.3.2声明变量
定义变量就是要告诉编译器这个变量的数据类型以及用多大的内存来保存它,以及它能存放的数据.在声明变量时可以是没有赋值,也可以直接赋初值.
对于变量的命名并不是任意的,应遵循以下几条原则:
(1)变量名必须是一个有效的标识符;
(2)变量名不可以是关键字;
(3)变量名不能重复;
(4)应选择有意义的单词作为变量名;
在java中允许使用汉字或其它语言文字作为变量名,但是不建议使用.
3.3.3声明常量
在java中声明一个常量,除了要指定数据类型外,还要通过final关键字进行限定。标准语法如下:
常量名通常使用大写字母,但这不是必须的,如下:
当定义的final变量属于全局变量(成员变量)时,必须在定义时就设定初值,否则就会产生编译错误。
3.3.4变量的有效范围
由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点,该变量就会被释放掉,也就是说变量有它的生命周期。因此,变量的有效范围是指程序代码能够访问该变量的区域,超出该区域就会报错。在程序中,根据变量的有效范围将变量分为成员变量(全局变量)和局部变量。
1.成员变量
在类体中定义的变量为成员变量,成员变量在整个类中都有效。类的成员变量又可分为两种:静态变量和实例变量。
class var{
int x=45;//实例变量
static int y=90;//静态变量
}
在成员变量的类型前面加上关键字static,这样的成员变量称为静态变量。静态变量的有效范围可以跨类,甚至可以达到整个程序之外。对于静态变量,除了能在定义它的类存取,还能以“类名.静态变量名”的方式在其他类中使用.
2.局部变量
在类的方法体中(方法内部定义)定义的变量称为局部变量,局部变量只在该方法体中有效,不能用于类的其他方法中;局部变量可以与成员变量的名字相同,此时成员变量在该方法中被隐藏,即这个成员变量在该方法中暂时失效。
变量的有效范围如下图:
3.4运算符
3.4.1赋值运算符
由于赋值运算符处理时会优先取得右方表达式处理后的结果,所以若一个表达式中含有两个以上的赋值运算符,会从最右边的开始处理。
3.4.2算术运算符
在进行除法运算时,0不能做除数,否则系统会抛出异常。
3.4.3自增和自建运算符
自增和自建运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后,注意两者的区别。操作元必须是整型或浮点型变量。
3.4.4比较运算符
比较运算符属于二元运算符,运算的结果为boolean型。
3.4.5逻辑运算符
除了"!"以外,其余都是二元运算符,返回值类型为boolean型。
这里要注意两个与:&&和&的区别。&会判断两边的两个逻辑表达式来确定最后的结果,而&&当左边的表达式为假时,则不会去判断右边的表达式的真假,直接得到输出结果从而节省计算机的判断次数。
3.4.6位运算符
位运算符除了按位与和按位或之外,其余的只能用于处理整数操作数。这里主要讲一下移位操作。
java中的移位运算符有以下3种:
(1)<< 左移 左边移空的位置补零
(2)>> 右移 如果最高位为0,移空的位就填入0;如果最高位为1,移空的位填1;
(3)>>> 无符号右移 无论最高位为0或1,移空位都填入0;
注意,移位运算可以实现整数除以或乘以2的N次幂的效果。
3.4.7三元运算符
三元运算符等同于if...else语句,其语法格式如下:
3.4.8运算符优先级
如果两个运算有相同的优先级,那么左边的表达式要比右边的表达式先被处理。
在编写程序时尽量使用括号来限定运算次序,避免错误。
3.5数据类型转换
如果从低精度数据向高精度数据转换,则永远不会溢出,并且总是成功的;如果从高精度向低精度数据转换,则必然会有信息丢失,有可能失败。
数据转换有两种方式:显示转换和隐式转换。
3.5.1隐式类型转换
从低级类型向高级类型的转换,系统将自动执行,无需进行任何操作,这种转换称为隐式转换。数据转换不包括逻辑类型和字符类型,按精度从低到高排序为:byte<short<int<long<float<double。
隐式转换要遵循一定的规则,来解决在什么情况下降哪种类型的数据转换成另一种类型。下表列出了转换的一般规则:
3.5.2显示类型转换
把高精度的数据赋给低精度的数据时,必须使用显示类型转换运算,语法如下:
当把整数赋给整型变量时,不可以超出这些变量类型的范围,否则必须进行强制类型转换。
3.6代码注释与编码规范
3.6.1代码注释
1.单行注释
2.多行注释
语法格式如下:
多行注释可以嵌套单行注释,但是多行注释不能嵌套多行注释;
3.文档注释
/** ... */为文档注释标记.
3.6.2编码规范
在此对编码规范做以下总结:
(1)每条语句要单独占一行,以分号结束;
(2)在声明变量时,尽量使每个变量的声明占一行;对于局部变量,应在声明的同时对其进行初始化;
(3)在java中,关键字与关键字之间如果有多个空格,这些空格均被视作只有一个;
(4)关键一条,要多加注释,有助于代码的理解;