2.1标识符和关键字
1、标识符 :
标识符就是一个名称。用来表示变量、常量、方法、类、对象等元素的有效字符列序。
Java语言规定标识符是由字母、下划线、美元符号和数字等组成,第一个字符不允许是数字。
name,s_no,$2,boy_number//这些都是合法的标识符;
2y,a*b,w//不合法的标识符
标识符的长度不限,但在实际的命名中,不宜过长;标识符区分大小写,如monney和Money是不同的标识符。
在Java程序设计中,对标识符的通常还有以下的约定:
(1)变量名、对象名、方法名、包含等标识符全都采用小写字母;如果标识符由多个单词构成,则首字母小写,其后面的单词的首字母大写,如getAge。驼峰命名法。
(2)类名字首字母大写。
(3)常量名全部字母大写。
2、关键字
关键字是由Java语言定义的、具有特殊含义的字符序列。每一个关键字都有一种特殊的含义,不能将关键字作为普通标识符来使用。
abstract | default | if | package | this |
bollean | do | implements | private | throw |
break | double | import | protected | throws |
byte | else | instanceof | public | transient |
case | extends | int | return | true |
catch | final | long | static | void |
char | finally | native | super | volatile |
class | float | new | switch | while |
continue | for | null | sychroized |
2.2数据类型与常量、变量。
2.2.1 数据类型
数据是描述客观事物的数字、字母及能输入计算机并能被计算机处理的符号。数据是计算机程序处理的对象。程序中的任一数据都是属于某一特定类型,类型决定了数据的表达方式、取值范围以及可进行的操作。同一类型的数据具有相同的表达方式、取值范围和可进行的操作。
//Java中的整数类型int类型的取值合集为{-2^31,...,-2,-1,0,1,2,3,...,2^31,-1}
int数据也可以进行加(+)减(-)乘(*)除(/)运算和赋值等操作。
Java类型数据分为两大类:基本数据类型和引用数据类型。
基本数据类型是由一种简单的数据组成的数据类型,其数据是不可分解的,可以直接参与该类型所允许的运算。例:int 37;int 17;可以直接参与整除运算34/17。
基本数据类型已由Java语言定义,类型名的hi关键字,如int 、float、char、boolean等。
基本数据类型的变量保存数据值,而引用数据类型的变量中保存地址。Java的引用数据类型包括数组(array)、类(class)、接口(interface)。
2.2.2基本数据类型
1、整数类型
整数类型数据值有负整数、零、正整数,其含义与数学中的相同。在Java中整数类型又细分为4中类型。
数据类型 | 所占字节(B) | 取值范围 |
long(长整型) | 8 | -9223372036854775808~9223372036854775807 |
int(整形) | 4 | -2147483648~2147483647 |
short(短整型) | 2 | -32768~32767 |
byte(字节型) | 1 | -128~127 |
注:一个整数的默认类型为int。要表示一个整型为log型,要在其后面加上L或l如345L
Java提供了3种进制的整数表示形式:
1、十进制数。用0~9之间的数字表示的数,其首位不能为0,如10、-19。
2、八进制数。用0~7之间的数表示,以0为前缀,如013、026.
3、十六进制数。用0~9之间的数字和a~f、A~F之间的数表示,以0x或0X为前缀,如0xA3、0x1b等。
2.浮点数类型
浮点型类型就是数学中的实数,带小数点的数。
1、标准记数法:由整数部分和小数点和小数部分组成如:16.23、-0.235
2、科学计数法:由尾数、E或e及阶码组成,也成为指数形式,如:2.5E4,表示数学中2.5x10^4,其中2.5成为尾数,4成为阶码。
Java中由两种浮点数类型
浮点数类型 | 所占字节 | 取值范围 |
float(单精度浮点数) | 4 | -3.4E38~3.4E38 |
double(双精度浮点数) | 8 | -1.7E308~1.7E308 |
在Java中,一个浮点数默认类型为double。要表示一个浮点数为float类型的要在其后面加上F或f如:34.5f
3.字符类型
字符类型(char)表示Unicode字符,一个字符占16位。字符类型数据有3种表示方法:
1、用单引号括起来的单个字符,如'A'、'a'等。
2、用Unicode码表示,前缀是\u,如\u0043表示C。
3、Unicode字符集中的控制字符(如回车符)不能通过键盘输入,需要通过转义字符表示。转义字符和对应的Unicode码如下表所示
转义字符 | 功能 | Unicode |
\b | 退格 | \u0008 |
\t | 水平制表 | \u0009 |
\n | 换行 | \u000a |
\f | 换页 | \u000c |
\r | 回车 | \u000d |
由多个字符组成的字符序列成为字符串,字符串用双引号引起来,如"green"就是一个字符串。
4.布尔类型
努尔类型表示逻辑量,也称逻辑类型。布尔类型只有true(真)和false(假)两个值。布尔值类型占1B。
2.2.3常量
常量是指程序运行中其值始终保持不变了量。Java中常量的整型、浮点型、字符型、布尔型、和字符串型。在Java中,常量除了使用直接常量方式外,还可以用标识符表示常量,称为符号常量。
符号常量必须先声明,后使用。符号常量的声明方式如下:
final[修饰符] 类型标识符 常量名=(直接)常量;
说明:
1、修饰符是表示该常量适用范围的权限修饰符,如public、private、prote、protected或者省略号,符号[]表示其中的内容可以省略
2、类型标识符可以是任意的数据类型,如int、long、float、double等。
3、常量名必须符合标识符的规定,并习惯采用大写字母。取名时最好是“见名知意”的原则。
4、“=”右侧的常量类型必须和类型标识符的类型相匹配。
以下是合法的常量声明:
final float PI=3.14159;
final char SEX='M';
final int MAX=100;
优点:
1、增加了程序的可读性,从常量名可知常量的含义。增加了程序的可维护性,只要在常量的声明处修改常量的值,就自动修改了程序中所有地方使用的常量值。
2.2.4变量
变量是指在程序运行过程中其值可以改变的量。
变量必须先声明,后使用。变量的声明方式如下:
[修饰符] 类型标识符 变量名[=常量];
说明
1、修饰符是表示该变量使用范围的权限修饰符。如:public、private等。
2、类型标识符可以是任意的基本数据类型。如:int、long、float等。
3、变量名必须符合标识符的规定,习惯采用小写字母。如:int age;
4、声明一个变量,系统必须为变量分配内存单元。
5、如果生命中包含“=常量”部分,常量的数据类型必须与类型标识符相匹配。
6、可以同时声明同一数据的多个变量,各个变量之间用分号隔离。
以下是合法的变量声明:
float x=25.4,y;
char c;
boolean flag1=true,flag2;
int l,m;
其中,变量x和flag被赋予初始值,成为被初始化了,其他变量没有初始化,即没有初始值。
【例】使用整型变量。
public class Integers
{ public static void main(String args[])
{ int a=015; //八进制数
int b=20; //十进制数
int c=0x25; //十六进制数
short x=30;
long y=123456L;
System.out.println("a="+a); //输出a的值。
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("x="+x);
System.out.println("y="+y);
}
}
输出结果如下:
a=13
b=20
c=37
x=30
y=123456
【例】使用单精度和双精度的类型变量。
public class Float
{ public static void main(String args[])
{ float a=35.45f;
double b=3.65e18;
System.out.println("a="+a);
System.out.println("b="+b);
}
}
输出结果如下:
a=35.45
b=3.56E18
【例】使用字符类型变量。
public class Charactes
{ public static void main(String args[])
{ char ch1='a';
char ch2='B';
System.out.println("ch1="+ch1);
System.out.println("ch2="+ch2);
}
}
运行结果:
ch1=a
ch2=B
【例】使用字符串类型数据。
public class Samp2_5
{ public static void main(String args[])
{ String str1="abc";
String str2="\n";
String str3="123";
System.out.println("str1="+str1+str2+"str3="+str3);
}
}
运行结果:
str1=abc
str3=123
【例】使用逻辑类型变量。
public class Logic
{ public static void main(String args[])
{ boolean instance1=true;
boolean instance2=false;
System.out.println("逻辑状态1="+instance1+" "+"逻辑状态2="+instance2);
}
}
输出结果:逻辑状态1=true 逻辑状态2=false
2.3运算符和表达式
透算行
1、算术运算符
算术运算符完成数学上的加、减、乘、除四则运算。算术运算符包括双目运算符和
单目运算符。
双目算术运算符包括+(加)、一(减)、*(乘)、/(除)和%(取余),其中,前 4
个运算符既可用于整数类型数据,也可用于浮点数类型数据,而“%”仅用于整数类型数据,求两个操作数相除的余数。同时请注意,当“1”用于两个浮点数类型操作数时,得到的是其商;当“/用于两个整数类型操作数时,得到的是其商的整数部分,称为整除。表2-5给出了5个双目算术运算符的用例及功能。
运算符 | 用例 | 功能 |
+ | a+b | 求a与b之间的和 |
- | a-b | 求a与b之间的差 |
* | a*b | 求a与b之间的积 |
/ | a/b | 求a与b之间的商 |
% | a%b | 求a与b相除的余数 |
例如:
23+5 //结果28
6*5 //结果30
27/3 //结果9
45/4 //结果11
9%3 // 结果0
9%4 //结果1
单目运算符包括++(自增)、--(自减-(负号)。++和--只能用于整数类型的变量,而不能用于常量或表达式。
运算符 | 用例 | 功能 |
++ | a++或++a | a的值加1 |
-- | a--或--a | a的值减1 |
- | -a | a的绝对值不变,符号取反 |
例如:
int j=5;
j++; //j等于6
++j; //j等于7
--j; //j等于6
j--; //j等于5
2.关系运算符
关系运算符是两个操作数之间的比较运算。
运算符 | 用例 | 功能 |
> | a>b | 如果a>b成立,结果为true;否则结果为false |
>= | a>=b | 如果a>=b成立,结果为true;否则结果为false |
< | a<b | 如果a<b成立,结果为true;否则结果为false |
<= | a<=b | 如果a<+b成立,结果为true;否则结果为false |
== | a==b | 如果a==b成立,结果为true;否则结果为false(==为等于) |
!= | a!=b | 如果a!=b成立,结果为true;否则结果为false(!=为不等于) |
例如:
25.5>10.4 //结果是true
45!=45 //结果是false
'7'<'6' //结果是false
true!=false //结果是true
'T'<'a' //结果是true
'u'<'9' //结果是false
3.逻辑运算符
逻辑运算符 是对布尔类型操作进行的与、或、非的运算,运算结果仍是布尔类型值。逻辑运算也称布尔运算。逻辑运算符有三个:&&(与)、||(或)、!(非)。其中只有!(非)是单目运算符,其他的都是双目运算符。
a | b | !a | a&&b | a||b |
false | false | true | false | false |
false | true | true | false | true |
true | false | false | false | true |
true | true | false | true | true |
例如:
!ture //结果是false
true&&false //结果是 false
true||false //结果是true
逻辑运算用于判断组合条件是否满足,如:
(age>20) &&(age<30) //判断sge的值是否在20~30之间。
(ch=='b')||(ch=='B' ) //判断ch的值是否为b或B。
在判断组合条件是,&&和||具有短路计算功能。所谓短路计算功能是指在组合条件中,从左向右一次判断条件是否满足,一旦能够确定结果,就立即终止计算。例如:
false&&(a>b) //结果是false
(34>21)||(a==b) //结果是true
由于false参与&&运算,结果必然是false,就不必计算后面的结果,这个方法用到true也一样!
4.位运算符
位运算符是对整数类型的操作数按二进制的位进行运算,运算结果仍是整数类型。位算符总共有七个。
a | b | ~a | a&b | a||b | a^b |
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 0 |
运算符 | 用例 | 功能 |
~ | ~a | 将a逐位取反 |
& | a&b | a与b逐位进行与操作 |
| | a||b | a与b逐位进行或操作 |
^ | a^b | a与b逐位进行异或操作 |
<< | a<<b | a向左移动b位 |
>> | a>>b | a向右移动b位 |
>>> | a>>>b | a向右移动b位,移动后的空位用0填充 |
5.赋值运算符。
赋值运算符用于给变量赋值,赋值运算符的形式:
变量名=表达式;
其中“=”是赋值运算符。
赋值运算的次序是从右向左的,即先计算表达式的值,再将表达式的值赋予变量。
例如:
int i=3,j; //i的初始值是3
j=i+2; //j的初始值是5
i=2*j; //j的值是10
j=j+4; //j的值是9
赋值运算的本质是首先计算右面的表达式的值,再将表达式的值赋给左边的变量。不要将赋值运算与数学中的等符号混在一起。
运算符 | 用例 | 等价于 | 运算符 | 用例 | 等价于 |
+= | x+=y | x=x+y | *= | x*y | x=x*y |
-= | x-= | x=x-y | /= | x/=y | x=x/y |
%= | x%=y | x=x%y | ^= | x^=y | x=x^y |
>>>= | x=x>>>y | x=x>>>y | <<= | x<<=y | x=x<<y |
&= | x&=y | x=x&y | >>= | x>>=y | x=x>>y |
|= | x|=y | x=x|y |
例如:
i*=10;
等价于
i=i*10;
6.条件运算符
条件运算符如下:
表达式1?表达式2:表达式3
其中"?:"成为条件运算符,它是三目运算符,3个操作参与运算。