Java程序设计–第2章 Java程序设计基础
2.1 标识符和关键字
一般地,在Java中标识符是以字母、下划线(_)、美元符号($)等开始的一个字符序列,后面可以跟字母、下划线、美元符号、数字等字符,不能包括运算符和一些特殊字符,如#、*等。
一些合法的标识符:Body、test,$hello
Java不允许对关键字赋予别的含义。所有的关键字都是小写的,如果被大写,就不是关键字了。
注释 //、 /* /、/* * */
2.2 常量和变量
[修饰符]<类型名><变量名> = <初值>[,<变量名>[=<初值>]…]
例如:int i;
piblic int j=5,k=4;
2.3 基本数据类型
布尔型数据类型用关键字boolean表示
只有true和false两个值,例如: boolean b=false;
字符类型变量用char表示,在Java虚拟机中一般用16位表示一个char值,范围为0~65535。字符型变量定义格式如下:
char c, c1=‘a’;
Java的字符型数据不同于整数,但是可以和整数在一起运算
int i=20000;
char one=’1’;
int j=’a’; //由字符向整数,自动类型转换
char c=(char)(i+one+j);
Java提供了转义字符,以反斜杠(\)开头
整数数据类型
十进制:用0~9的数表示,首位不能为0,
例如:124,-100;
八进制:以0开头,后跟多个0~7之间的数字,
如0134;
十六进制:以0x或者0X开头,后跟多个09之间的数字、或AF之间字母的大小写形式。af或者A-F分别表示1015,
例如,0x23FE,等于十进制数9214。
二进制:以0b或者0B开头,后跟多个0~1之间的数字。
数据类型的表示范围
数据类型 | 所占位数 | 数的范围 |
---|---|---|
byte | 8 | -27 ~(27 -1) |
short | 16 | -215 ~(215 -1) |
int | 32 | -231 ~(231 -1) |
long | 64 | -263 ~(263-1) |
一个整数数字隐含为int型,在表示long型常量时,需要在数字后面加上后缀L或者l。
浮点类型
标准计数法:由整数部分、小数点和小数部分组成,
如2.0,345.789。
科学计数法:由十进制数、小数点、小数和指数构成,指数部分由字母E或e跟上正负号的整数表示,
例如,345.789,可以表示成3.45789E+2;
数据类型 | 所占位数 | 数的范围 |
---|---|---|
float(单精度浮点数) | 32 | 3.4e-038 ~3.4e+038 |
double(双精度浮点数) | 64 | 1.7e-308 ~ 1.7e+308 |
在一个浮点数后加字母F或f,表示float型。
各类型数据间的相互转换
自动类型转换
从低到高
byte,short,char,int,long,float,double
强制类型转换
int i=65;
char c;
c=(char)i;
2.5 符号运算
大多和其他编程语言相似
运算符的注意事项
自增、自减运算符有前缀和后缀两种形式,
先运算后使用
先使用后运算
“%”(求模运算符)的操作数可为浮点数
如52.3%10=2.3;
对"+"运算进行了扩展,可作字符串连接运算符
如"ab"+“efd"得"abefd”
做"+"运算时,如果一个操作数是字符串,其它操作数自动转换成字符串.
如: String s; s=“s:”+6*5;
赋值相容
如果变量的类型和表达式的类型是相同的,就可以赋值,称为类型相同;
如果两者类型不同,并且变量类型比表达式类型长时,系统会自动将表达式的结果转换为较长的类型。如int 转换为long,这时也可以赋值,称为赋值相容;
赋值不兼容时,可以使用强制类型转换,其格式如下:
(<目标类型>)<表达式>
例如:
int i=(int)123123123123L; //强制类型转换
条件运算符
(boolean_expr)?true_statement:false_atatement;
例如:int result=sum==0?100:2*num;
位运算符(补码形式) &、|、~、^、<<、>>、>>>
关系运算符 ==、!=、<、>、<=、>=
逻辑运算,也叫布尔运算符,只能处理布尔类型的数据,所得结果也是布尔值。&&、||、!
表达式 运算符和操作数组合的符号序列(优先级和结合性)
2.6 程序控制语句
if语句
if(condition)
statement1;
else
statement2;
多路分支
表达式expression的计算结果必须为byte、short、int、char、字符串或者enum类型,每个case语句后的值value必须是与expression类型兼容的一个常量。重复的case值是不允许的。
switch(expression){
case value1:
...//语句序列
break;
case value2:
...//语句序列
break;
case valueN:
...//语句序列
break;
default:
...//缺省语句序列
}
while与do-while
while(...){
...
}
或者
do{
...
}while(...);
for语句
for(initialization;condition;iteration){
//循环体
...
}
break语句
终止循环、跳转
//终止循环
public static void main(String args[]){
for(int i=0;i<100;i++){
if(i == 5)break;//如果i等于5,终止循环
System.out.println("i:"+i);
}
System.out.println("Loop complete.");
}
//跳转
boolean t = true;
first:{
second:{
third:{
System.out.println("Before the break.");
if(t)
break second;
System.out.println("This won't execute");
}
System.out.println("This won't execute");
}
System.out.println("This won't execute");
}
continue语句
强迫一次循环提前结束而进行下一次循环、跳转
public static void main(String args[])
{
for(int i=1;i<20;i++){
System.out.print(i+" ");
if(i%5!=0)
continue;
System.out.println(" ");
}
}
outer:for(int i=1;i<10;i++){
for(int j=1;j<10;j++){
if(j<i){
System.out.println();
continue outer;
}
System.out.print(" "+(i*j));
}
}
Syetem.out.println();
//程序结果
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
实用案例【计算斐波那契(Fibonacci)数列】
public static void main(String[] args){
long f1,f2,f3,n=50;
f1=f2=1;
syetem.out.print(f1+" "+f2+" ");
for(int i=3;i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
System.out.print(f3+" ");
if(i%10==0)
{
Syetem.out.println();
}
}
}