Java教程1.docx
《Java教程1.docx》由会员分享,可在线阅读,更多相关《Java教程1.docx(26页珍藏版)》请在冰豆网上搜索。
Java教程1
第二章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!
”)//Thisisoutputastring
2、//System.out.println(“HelloWorld!
”)
2.1.2多行注释
以/*开始,以*/结束,他们之间的所有行都被注释掉了。
/*
intj=9;
j=j+1;
System.out.print(j);
*/
2.1.3文档注释
以/**开始,以*/结束,他们之间的所有行都被注释掉了,而且被看作是文档注释,通过特殊软件可以将程序中的文档注释提取出来形成文档。
举例:
publicclassDemo
{
publicstaticvoidmain(String[]args)
{
intx;
x=1;
x=x+1;
System.out.println("x="+x);
}
}
运行结果:
publicclassDemo
{
publicstaticvoidmain(String[]args)
{
intx;
x=1;
//x=x+1;
System.out.println("x="+x);
}
}
运行结果:
x=1
//x=x+1;等价于/*x=x+1;
publicclassDemo
{
publicstaticvoidmain(String[]args)
{
intx,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
Ø非法的标识符
2variable
*abc
2、保留字(关键字):
Java语言中有固定含义的标识符,不能用作程序员随意定义的标识符。
Ø用于内置类型
booleancharbyteshortintshortlongfloatdoublestrictfpvoid
Ø用于对象
newthissuper
Ø用于语句
选择语句:
ifelseswitchcasebreakdefault
循环语句:
forcontinuedowhile
控制转移语句:
returnthrow
异常处理语句:
trycatchfinallyassert
线程语句:
synchronized
Ø用于修饰声明
staticabstractfinalprivateprotectedpublic
Ø用于其他方法或相关类
classinstanceofthrowsnativetransientvolatile
Ø用于类的扩展和接口的继承
extendsinterfaceimplementspackageimport
Ø留作将来使用的
constgoto
举例:
if(x==1)
y=1;
else
y=0;
3、变量、赋值语句和输出语句
Ø变量:
就是程序员自定义的标识符,程序员用这种标识符说明它代表某个事物
例如:
x=1y=2z=x+y
变量的空间分配
注意:
1)变量使用前必须声明其类型:
publicclassDemo
{
publicstaticvoidmain(String[]args)
{
intx;
inty;
x=1;
y=x+1;
System.out.println("y="+y);
}
}
2)变量声明后,就不能再次声明:
publicclassDemo
{
publicstaticvoidmain(String[]args)
{
intx;
x=1;
intx=2;
System.out.println("x="+x);
}
}
3)变量声明后,使用前必须赋值:
publicclassDemo
{
publicstaticvoidmain(String[]args)
{
intx;
inty;
x=1;
System.out.println("y="+y);
}
}
注意:
若是声明一个变量后,程序没有使用它,那么可以不赋值,编译是不会出错
Ø=是赋值符
intx=1;就是一条赋值语句,等价于intx;x=1;
结果为:
Ø输出语句:
System.out.print/System.out.println的用法
//c2:
Print1.java
//author:
ZhangHongbin
//Thisprogramisprotectedbycopyrightlaws.
//Theeffectsofprintandprintln.
publicclassPrint1
{
publicstaticvoidmain(String[]args)
{
intx=1;
inty=2;
intz=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、语句:
表达式加上分号
intx;
x=1;
y=7+x;
2、语句块:
在花括号之间的所有语句组成了语句块
publicclassXYZ
{
publicstaticvoidmain(String[]args)
{
//语句块
}
}
if(条件)
{
//语句块
}
3、书写Java源程序时要遵守一些规范
Ø对齐
Ø缩进
2.4基本数据类型
1、整型:
Øbyte(8位)
Øshort(16位)
Øint(32位)
Ølong(64位)
publicclassVar2
{
publicstaticvoidmain(String[]args)
{
byteabyte=12;
intaint=12;
System.out.println("abyte="+abyte);
System.out.println("anint="+aint);
}
}
注意:
下面的程序编译能通过吗,也就是有没有语法错误?
publicclassVar3
{
publicstaticvoidmain(String[]args)
{
byteabyte;
System.out.println("abyte="+abyte);
}
}
若在一个方法(函数)中声明一个变量,那么在使用这个变量前,必须对其赋值。
★八进制和十六进制
一个数字前面有0,表示这个数为八进制数:
例如intx=017
若前面是0x,表示这个数为十六进制数:
例如intx=0x17
publicclassVar4
{
publicstaticvoidmain(String[]args)
{
intaint2=017;
intaint3=0x17;
intaint4=0xab;
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变量
floatnum;
2、声明一个float变量,同时给其赋值
floatnum=9.7f
3、floatnum=9.3是非法的,因为系统会把9.3看作double型
大家把书翻到第31页,看例程VarInit5
Ødouble(64位):
双精度
如:
4.8d,7D8.9。
注意可以没有d(D)
Ø不能把一个大的数据类型的数赋值给小的数据类型变量
floatx=15.7
inty=23.3f
3、字符型(char):
Ø声明一个char变量
charch;
Ø声明一个char变量,同时给其赋值
charch=‘A’
charch=65
charch=‘\n’
charch=‘\u0061’
举例:
publicclassBase
{
publicstaticvoidmain(Stringargv[])
{
charch='\n';
System.out.print("-------->1");
System.out.print(ch);
System.out.print("-------->1");
}
}
结果为:
把程序改为:
publicclassBase
{
publicstaticvoidmain(Stringargv[])
{
charch='\n';
System.out.print("-------->1");
//System.out.print(ch);
System.out.print("-------->1");
}
}
结果为:
大家把书翻到第33页,看例程VarInit5
4、布尔型(boolean):
Øtrue
Øfalse
举例:
publicclassDemo
{
publicstaticvoidmain(Stringargv[])
{
booleanb1=true;
booleanb2=false;
System.out.println("b1="+b1);
System.out.println("b2="+b2);
}
}
5、常量:
finalfloatPI=3.14f
finalintA=3
finalcharCH=‘c’
finalbooleanB=true
注意:
常量定义的时侯必须确定它的值,而且再不能改变它的值。
如finalintI=9;
I=1;//出错
publicclassTest
{
finalfloatPI=3.1415f;
intx=0;
floaty=0f;
booleanz=true;
charc='u';
voidfun()
{
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);
}
publicstaticvoidmain(String[]args)
{
Tests=newTest();
s.fun();
}
}
结果为:
2.5运算符,表达式和返回值
运算符和变量组合起来就形成了表达式
如:
算术表达式:
a+b/3–5返回数值
关系表达式:
a>b返回布尔值
逻辑表达式:
!
x&&y返回布尔值
混合表达式:
(a+b)>13返回布尔值
举例:
publicclassDemo
{
publicstaticvoidmain(String[]args)
{
inta=2;
intb=0;
booleanx=true;
booleany=true;
System.out.println("a+b/3-5="+(a+b/3-5));
System.out.println("a>b="+(a>b));
System.out.println("x&&y="+(x&&y));
System.out.println("(a+b)>13="+((a+b)>13));
}
}
结果为:
2.6数学计算
数学运算符包括:
1、取负运算:
-
intx=5;
inty=-x;
举例:
publicclassXYZ
{
publicstaticvoidmain(String[]args)
{
intx=1;
inty=-(x+1);
System.out.print("x="+x+"y="+y);
}
}
结果为:
x=1y=-2
2、加减乘除运算:
+—*/(参见教材P36代码片段)
3、求余运算:
%(参见教材P36代码片段)
4、数学运算的若干规则
Ø整数运算语法规则
intx=2;
longy=1;
x=y;//error
会有什么发生?
byteb1=1;
byteb2=2;
byteb3=b1+b2;//error
byteb4=3+2;
byteb5=1+b1;//error
Ø浮点数运算语法规则
2.0f+4.0的结果为double型
intresult=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、测试赋值语句返回值的程序
publicclassLValue
{
publicstaticvoidmain(String[]args)
{
intx,y;
y=(x=2+5);
System.out.println();
System.out.println("x="+x+",y="+y);
}
}
结果为:
x=7y=7
2.8类型转换
1、表达式结果的类型和表达式在最大的数据类型一致,如:
100-7-8.6f,其结果为float类型
2、赋值语句的左值和右值的类型要兼容
Ø左右类型一致:
intx=100–7;
Ø右部的类型取值范围小于左部:
floatr=100–7
3、类型强制转换
当右部的类型取值范围大于左部时,在表达式的前面加上类型名。
floatr=100–7–8.6f对。
intr=100–7–8.6f错。
改为intr=(int)(100–7–8.6f)
4、byter=(byte)(20*20);
r的值为多少?
结果为:
2.9自增和自减运算
1、I++:
先用I值,然后对I自增1
2、++I:
先对I自增1,然后在用I值
注意:
intresult=1;
result++;
等价于
intresult=1;
result=result+1;
参见P42下的程序片段
参见一个P43程序
2.10比较运算(关系运算)
1、比较运算符(关系运算符):
<,>,<=,>=,==,!
=
2、比较运算表达式的结果:
true,false
结果为:
2.11逻辑运算
1、逻辑运算符:
!
^&&||
2、逻辑运算表达式的结果:
true,false
与(&&)
或(||)
异或(^)
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
Ø若exp为false,表达式!
exp的值为true
Ø若exp1和exp2都为true,表达式exp1&&exp2的值为true
Ø若exp1和exp2中有一个为true,表达式exp1||exp2的值为true
结果为:
注意:
若有3个&&连接的表达式,当计算第一个给false时,那么逻辑表达式的值为false,其余的两个表达式不再计算;若有3个||连接的表达式,当计算第一个给true时,那么逻辑表达式的值为true,其余的两个表达式不再计算。
publicclassShortCiruit
{
publicstaticvoidmain(String[]args)
{
intn=3;
intm=4;
System.out.println();
System.out.println(((n>m)&&(++n)>m));
System.out.println("n="+n);
System.out.println("-----------------");
System.out.println(((nm));
System.out.println("n="+n);
}
}
结果为:
false
n=3
--------------------
false
n=4
2.12位运算和移位运算
1、位运算符:
~&|^
3&5的结果为1,因为3的二进制值为0011,5的二进制值为0101,因此按位与的结果为0001
publicclassCompareNumber
{
publicstaticvoidmain(String[]args)
{
intn=3;
intm=5;
System.out.println("3&5="+(n&m));
System.out.println("3|5="+(n|m));
System.out.println("3^5="+(n^m));
}
}
结果为:
3&5=1;
3|5=7;
3^5=6;
2、移位运算符:
<<>>>>>
Ø>>:
执行算术或带符号的右移
Ø>>:
执行算术或带符号的左移
Ø>>>:
执行无符号的右移
Ø<<<:
执行无符号的左移
例:
128>>1的结果为64
128的二进制值为10000000,则右移一位为01000000,即为64