chapter2(My--Java教案)
chapter2(My--Java教案)本文简介:第二章Java基本语法前言第一步:安装JDK第二步:用EditPlus建立一个Java源文件第三步:在EditPlus里编写一个Java源文件HelloWorld.java第斯步:保存HelloWorld.java第五步:编译HelloWorld.java、运行HelloWorld.class2.1
chapter2(My--Java教案)本文内容:
第二章
Java基本语法
前言
第一步:安装JDK
第二步:用EditPlus建立一个Java源文件
第三步:在EditPlus里编写一个Java源文件
HelloWorld.java
第斯步:保存HelloWorld.java
第五步:编译HelloWorld.java、运行HelloWorld.class
2.1
注释
注释:是程序和代码的说明文字,本身并不运行。Java有3种注释:
?
单行注释://
?
多行注释:/*
…./
?
文档注释:/**
…./
2.1.1
单行注释
1、
System.out.println(
“HelloWorld!”
)
//
This
is
output
a
string
2、
//
System.out.println(
“HelloWorld!”
)
2.1.2多行注释
以/*开始,以*/结束,他们之间的所有行都被注释掉了。
/*
int
j
=
9;
j
=
j
+
1;
System.out.print(
j
);/
2.1.3文档注释
以/**开始,以*/结束,他们之间的所有行都被注释掉了,而且被看作是文档注释,通过特殊软件可以将程序中的文档注释提取出来形成文档。
举例:
public
class
Demo
{
public
static
void
main(String[]
args)
{
int
x;
x
=
1;
x
=
x
+
1;
System.out.println(“x=“+
x
);
}
}
运行结果:
public
class
Demo
{
public
static
void
main(String[]
args)
{
int
x;
x
=
1;
//x
=
x
+
1;
System.out.println(“x=“+
x
);
}
}
运行结果:x=1
//x
=
x
+
1;
等价于
/*
x
=
x
+
1;
public
class
Demo
{
public
static
void
main(String[]
args)
{
int
x,y;
x
=
1;
y
=
2;
//x
=
x
+
1;
//y
=
y
+
1;
System.out.println(“x=“+
x
+“,y=“+
y
);
}
}
//x
=
x
+
1;
//y
=
y
+
1;
等价于
/*
x
=
x
+
1;
y
=
y
+
1;/
2.2标识符
1、
标识符:是程序中那些中间不带空格的单词,并以字母、下划线_或美元符号$开头,且不能以数字字符开头。标识符的中间也只能出现下划线_或美元符号$这样的特殊字符,不能出现其他特殊字符,如中划线-等等。
?
合法的标识符
variable2
_whatavariable
_3_
$anothervar
?
非法的标识符
2variableabc
2、
保留字(关键字):Java语言中有固定含义的标识符,不能用作程序员随意定义的标识符。
?
用于内置类型
boolean
char
byte
short
int
short
long
float
double
strictfp
void
?
用于对象
new
this
super
?
用于语句
选择语句:if
else
switch
case
break
default
循环语句:for
continue
do
while
控制转移语句:return
throw
异常处理语句:try
catch
finally
assert
线程语句:synchronized
?
用于修饰声明
static
abstract
final
private
protected
public
?
用于其他方法或相关类
class
instanceof
throws
native
transient
volatile
?
用于类的扩展和接口的继承
extends
interface
implements
package
import
?
留作将来使用的
const
goto
举例:
if(
x
==
1
)
y
=
1;
else
y
=
0;
3、
变量、赋值语句和输出语句
?
变量:就是程序员自定义的标识符,程序员用这种标识符说明它代表某个事物
例如:
x
=
1
y
=
2
z
=
x
+
y
变量的空间分配
注意:
1)
变量使用前必须声明其类型:
public
class
Demo
{
public
static
void
main(String[]
args)
{
int
x;
int
y;
x
=
1;
y
=
x
+
1;
System.out.println(“y=“+
y
);
}
}
2)
变量声明后,就不能再次声明:
public
class
Demo
{
public
static
void
main(String[]
args)
{
int
x;
x
=
1;
int
x
=
2;
System.out.println(“x=“+
x
);
}
}
3)
变量声明后,使用前必须赋值:
public
class
Demo
{
public
static
void
main(String[]
args)
{
int
x;
int
y;
x
=
1;
System.out.println(“y=“+
y
);
}
}
注意:若是声明一个变量后,程序没有使用它,那么可以不赋值,编译是不会出错
?
=
是赋值符
int
x
=
1;
就是一条赋值语句
,等价于
int
x
;
x
=
1;
结果为:
?
输出语句:System.out.print
/
System.out.println的用法
//c2:Print1.java
//author:ZhangHongbin
//This
program
is
protected
by
copyright
laws.
//The
effects
of
and
println.
public
class
Print1
{
public
static
void
main(String[]
args)
{
int
x=1;
int
y=2;
int
z=3;
System.out.print(“x1=“+x);
System.out.print(“y1=“+y);
System.out.print(“z1=“+z);
System.out.println();
System.out.println(“x2=“+x+“,y2=“+y+“,z2=“+z);
}
}
结果为:
2.3
语句和语句块(首先按照书上P27讲解)
1、
语句:表达式加上分号
int
x
;
x
=
1;
y=
7
+
x;
2、
语句块:在花括号之间的所有语句组成了语句块
public
class
XYZ
{
public
static
void
main(
String[]
args
)
{
//语句块
}
}
if(条件)
{
//语句块
}
3、
书写Java源程序时要遵守一些规范
?
对齐
?
缩进
2.4
基本数据类型
1、
整型:
?
byte(8位)
?
short(16位)
?
int(32位)
?
long(***位)
public
class
Var2
{
public
static
void
main(String[]
args)
{
byte
abyte=12;
int
aint=12;
System.out.println(“a
byte=
“+abyte);
System.out.println(“an
int=
“+aint);
}
}
注意:下面的程序编译能通过吗,也就是有没有语法错误?
public
class
Var3
{
public
static
void
main(String[]
args)
{
byte
abyte;
System.out.println(“a
byte=
“+abyte);
}
}
若在一个方法(函数)中声明一个变量,那么在使用这个变量前,必须对其赋值。
★
八进制和十六进制
一个数字前面有0,表示这个数为八进制数:例如int
x
=
017
若前面是0
x,表示这个数为十六进制数:例如int
x
=
0
x17
public
class
Var4
{
public
static
void
main(String[]
args)
{
int
aint2
=
017;
int
aint3
=
0
x17;
int
aint4
=
0
xab;
System.out.println(“aint2=
“+
aint2);
System.out.println(“aint3=
“+
aint3);
System.out.println(“aint4=
“+
aint4);
}
}
结果为:
2、
浮点型:
?
float(32位):单精度
如:8.37f
,9F。注意必须有f(F)
1、
声明一个float变量
float
num;
2、
声明一个float变量,同时给其赋值
float
num
=
9.7f
3、float
num
=
9.3
是非法的,因为系统会把9.3看作double型
大家把书翻到第31页,看例程VarInit5
?
double(***位):双精度
如:4.8d
,7D
8.9。注意可以没有d(D)
?
不能把一个大的数据类型的数赋值给小的数据类型变量
float
x
=
15.7
int
y
=
23.3f
3、
字符型(char):
?
声明一个char变量
char
ch;
?
声明一个char变量,同时给其赋值
char
ch
=
‘A’
char
ch
=
65
char
ch
=
‘\n’
char
ch
=
‘\u0061’
举例:
public
class
Base
{
public
static
void
main(String
argv[])
{
char
ch
=
\n
;
System.out.print(
“-------->1“);
System.out.print(
ch
);
System.out.print(
“-------->1“);
}
}
结果为:
把程序改为:
public
class
Base
{
public
static
void
main(String
argv[])
{
char
ch
=
\n
;
System.out.print(
“-------->1“);
//System.out.print(
ch
);
System.out.print(
“-------->1“);
}
}
结果为:
大家把书翻到第33页,看例程VarInit5
4、
布尔型(boolean):
?
true
?
false
举例:
public
class
Demo
{
public
static
void
main(String
argv[])
{
boolean
b1
=
true;
boolean
b2
=
false;
System.out.println(
“b1=“+
b1
);
System.out.println(
“b2=“+
b2
);
}
}
5、
常量:
final
float
PI
=
3.14f
final
int
A
=
3
final
char
CH
=
‘c’
final
boolean
B
=
true
注意:常量定义的时侯必须确定它的值,而且再不能改变它的值。
如
final
int
I
=
9;
I
=
1;
//出错
public
class
Test
{
final
float
PI
=
3.1415f;
int
x
=
0;
float
y
=
0f;
boolean
z
=
true;
char
c
=
u
;
void
fun()
{
System.out.println(
“x=“+
x
);
System.out.println(
“y=“+
y
);
System.out.println(
“z=“+
z
);
System.out.println(
“c=“+
c
);
System.out.println(
“PI=“+
PI
);
}
public
static
void
main(String[]
args)
{
Test
s
=
new
Test();
s.fun();
}
}
结果为:
2.5
运算符,表达式和返回值
运算符和变量组合起来就形成了表达式
如:算术表达式:a
+
b
/
3
–
5
返回数值
关系表达式:a
>
b
返回布尔值
逻辑表达式:!x
int
b
=
0;
boolean
x
=
true;
boolean
y
=
true;
System.out.println(
“a+b/3-5
=
“+
(a+b/3-5)
);
System.out.println(
“a
>
b
=
“+
(a
>
b)
);
System.out.println(
“x
System.out.println(
“(a+b)>
13
=
“+
((a+b)>
13)
);
}
}
结果为:
2.6
数学计算
数学运算符包括:
1、
取负运算:-
int
x
=
5;
int
y
=
-x;
举例:
public
class
XYZ
{
public
static
void
main(String[]
args)
{
int
x
=
1;
int
y
=
-(x
+
1);
System.out.print(
“x=“+
x
+
“y=“+
y
);
}
}
结果为:x=1
y=-2
2、
加减乘除运算:+
—
*
/(参见教材P36代码片段)
3、
求余运算:%
(参见教材P36代码片段)
4、
数学运算的若干规则
?
整数运算语法规则
int
x
=
2;
long
y
=
1;
x
=
y;
//error
会有什么发生?
byte
b1
=
1;
byte
b2
=
2;
byte
b3
=
b1
+
b2;
//error
byte
b4
=
3
+
2;
byte
b5
=
1
+
b1;
//
error
?
浮点数运算语法规则
2.0f
+
4.0的结果为double型
int
result
=
5
/
2的结果只保留整数部分
5、
浮点数运算时,结果可能不够准确
例如1.2+2.4的结果也许不是3.6
6、
除零问题:不允许整数除零,允许浮点数除零
结果为:
2.7
赋值运算
1、
赋值运算符是等号,其右边是一个表达式,左边是变量,他把右部的值赋给左部的变量。
x
=
2
+
5;
y
=
4
+
x
2、赋值运算也是表达式
y
=
4
+
(
x
=
2
+
5
)
3、x
=
x
+
5
:把x加5,然后再赋值给x
结果为:
7、
测试赋值语句返回值的程序
public
class
LValue
{
public
static
void
main(String[]
args)
{
int
x,y;
y
=
(
x
=
2
+
5
);
System.out.println();
System.out.println(
“x
=
“+
x
+
“,y
=
“+
y
);
}
}
结果为:x=7
y=7
2.8
类型转换
1、表达式结果的类型和表达式在最大的数据类型一致,如:100-7-8.6f,其结果为float类型
2、
赋值语句的左值和右值的类型要兼容
?
左右类型一致:int
x
=
100
–
7;
?
右部的类型取值范围小于左部:float
r
=
100
–
7
3、
类型强制转换
当右部的类型取值范围大于左部时,在表达式的前面加上类型名。
float
r
=
100
–
7
–
8.6f
对。
int
r
=
100
–
7
–
8.6f
错。改为int
r
=
(
int
)(
100
–
7
–
8.6f
)
4、
byte
r
=
(byte)(20*20);
r的值为多少?
结果为:
2.9
自增和自减运算
1、
I++:先用I值,然后对I自增1
2、
++I:先对I自增1,然后在用I值
注意:
int
result
=
1;
result++;
等价于
int
result
=
1;
result
=
result
+
1;
参见P42下的程序片段
参见一个P43程序
2.10
比较运算(关系运算)
1、比较运算符(关系运算符):,=,=
=,!=
2、比较运算表达式的结果:true
,
false
结果为:
2.11
逻辑运算
1、逻辑运算符:!
^
&&
||
2、逻辑运算表达式的结果:true
,
false
与(
int
m
=
4;
System.out.println();
System.out.println(
(
(
n
>
m
)
System.out.println(
“n=
“+
n
);
System.out.println(
“-----------------“);
System.out.println(
(
(
n
m
)
);
System.out.println(
“n=
“+
n
);
}
}
结果为:
false
n=3
--------------------
false
n=4
2.12
位运算和移位运算
1、
位运算符:~
&
|
^
3
int
m
=
5;
System.out.println(
“3
System.out.println(
“3
|
5
=
“+
(n|m)
);
System.out.println(
“3
^
5
=
“+
(n^m)
);
}
}
结果为:
3
3
|
5
=
7;
3
^
5
=
6;
2、移位运算符:
>>>
?
>>:执行算术或带符号的右移
?
>>:执行算术或带符号的左移
?
>>>:执行无符号的右移
?
1
的结果为
***
128的二进制值为10000000,则右移一位为01000000,即为***