Java语言基础Word格式.docx
《Java语言基础Word格式.docx》由会员分享,可在线阅读,更多相关《Java语言基础Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
byte2个字节-128到127
hort2个字节-32,768到32,767
int4个字节-2,147,483,648到2,147,483,647
long8个字节-9,223,372,036,854,775,808L到9,223,372,036,854,775,807L
2、浮点数:
含有小数部分的数字。
Java提供两种浮点数:
float4个字节约+—3.40282347E+38F(6~7个有效的十进制数位)
double8个字节约+-1.79769313486231570E+308(15个有效数位)
说明:
1)float类型的数值有个后缀:
F,如果没有后缀F,那么默认为double。
double类型的数值也可以使用后缀D。
2)当这些数字遇到取值范围错误时,会发生(上溢Overflow);
而在遇到象被零除时,会发生下溢(Underflow)。
3、字符类型:
单引号用来表示char常量,
1)双引号则表示一个字串,他是Java的一个对象,并不是数据类型。
2)char类型表示Unicode编码方案中的字符。
Unicode可同时包含65536个字符,ASCII/ANSI只包含255个字符,实际上是Unicode的一个子集。
Unicode字符通常用十六进制编码方案表示,范围在'
\u0000'
到'
\uFFFF'
之间。
\u0000到\u00FF表示ASCII/ANSI字符。
\u表示这是一个Unicode值。
3)在Java中除了用这个\u的形式来表示字符外,还可以使用换码序列来表示特殊字符。
\b退格\u0008\tTab制表\u0009\n换行\u000a
\r硬回车\u000d\"
双引号\u0022\'
单引号\u0027
\反斜杠\u005c
4)Java使用Unicode字符,是否能显示出来,取决于使用的浏览器和操作系统。
4、布尔类型:
boolean类型有两个值:
false和true。
变量和常量
1、变量:
1)Java要求在使用一个变量之前要对变量的类型加以声明。
2)Java中一个变量的声明就是一条完整的Java语句,所以应在结尾使用分号。
3)变量的命名规则:
变量必须以一个字母开头,变量名是由一系列字母或数位的任意组合。
在Java中字母表示Unicode中相当于一个字母的任何字符。
数位也包含0-9以外的其他地位与一个数位相当的任何Unicode字符。
+、版权信息符号圈C和空格不能在变量名中使用。
变量名区分大小写。
变量名的长度基本上没有限制。
如想知道Java到目前位置认为哪些Unicode字符是字母的话,可以使用Character类中的isJavaIdentifierStart以及isJavaIdentifierPart方法进行检查。
变量名中不能使用Java的保留字。
4)可在一条语句中进行多个变量的声明,不同变量之间用逗号分隔。
2、变量的赋值和初始化:
变量的值可以通过两种方法获得,一种是赋值,给一个变量赋值需要使用赋值语句。
另外一种方法就是初始化,赋值语句是在声明变量的时候就一起完成的。
例如:
inta=10;
//这就是一个变量初始化的过程
下面两条语句的功能和上面一条的功能相同,这里将变量的声明和赋值分开。
inta;
a=10;
//在赋值语句的结尾应该是用分号来结束。
1)在Java中绝对不能出现未初始化的变量,在使用一个变量前必须给变量赋值。
2)声明可以在代码内的任何一个位置出现,但在方法的任何代码块内只可对一个变量声明一次。
3、常量:
1,“hello”
1)在Java中使用final关键字来定义一个常数。
intfinala=10;
//声明了一个整型常量a,它的值是10。
2)习惯上将常量的名字统统大写。
运算符和类型转换
1、运算符:
1)Java语言中,常用的运算符包括:
+,-,*,/。
2)幂:
Java没有乘幂运算符,必须使用Math.pow(x,a)方法,表示x的a次幂。
pow方法的两个参数都属于double类型,返回的值也是double类型。
doublea=Math.pow(10,3);
//定义了一个变量a,它的值是10的3次幂。
3)递增、递减运算符:
a++,a--先使用变量的值,然后再递增或递减。
++a,--a先递增或递减然后再使用变量的值。
4)关系和布尔运算符:
关系运算符:
==,!
=,<
,>
,<
=,>
=
布尔运算符:
&
(与),||(或),!
(否)
5)按位运算符:
(加),|(或),^(异或),~(否),>
>
向右移位,<
<
(向左移位),>
>
(用零来填充位于顶部的位)
注意Java没有<
运算符。
6)括号和运算符分级:
在Java中各种运算符默认的计算顺序是:
[],()(方法调用)从左到右
!
~++--+(一元)-(一元)()(造型)new从右到左
+/%从左到右+-从左到右<
从左到右
=>
instanceof从左到右==!
=从左到右
从左到右^从左到右|从左到右
从左到右||从左到右?
:
=+=-=*=/=&
=|=^=<
=.>
=从右到左
在Java中可用括号来指定自己希望的计算顺序,改变运算符默认的运算顺序。
2、数值类型的互相转换:
当不同数据类型的数据参加运算的时候,会涉及到不同的数据类型的转换问题:
Java语言数据类型的转换基本上按照下面的规则进行:
如果其中一个运算对象是double类型的,另一个也会被转换成double类型。
否则,如其中一个运算对象是float类型的,另一个也会被转换成float类型的。
否则,如果其中一个运算对象是long类型的,另一个也会被转换成long类型的。
否则,如果其中一个运算对象是int类型的,另一个也会被转换成int类型的。
否则,如其中一个运算对象是short类型的,另一个也会被转换成short类型的。
类型转换还可以通过“造型”来实现,语法很简单,将目标类型放在括号里,然后在后面跟上一个变量名就可以了。
doublex=9.99;
intnx=(int)x;
//这时nx就是一个int类型的数据了,并且它的值是9,后面的部分在造型过程中被丢掉了。
如果想把一个浮点数舍入成“最接近”的整数,可以使用Math.round方法。
在使用Math.round方法舍入后,可能还要使用造型来进行类型转换。
Java还允许将一种类型的变量值赋给另一个变量,同时不进行显示造型,同样可以进行某些特定的赋值转换,允许的转换包括:
buty->
short->
int_>
long->
float->
doublechar->
int
当进行赋值的时候,会按照上面的顺序从左向右转换。
字串和数组
1、字串:
Java没有提供内建的字串类型,但标准Java库中包含了一个预定义类,很自然地称作“String”,每个用双引号封闭的字串都是String的一个实例。
“abc"
"
hello"
Java允许使用+号把两个字串连接起来。
连接一个字串和一个非字串值时,后者被转换成字串。
这个特性常用于输出语句中。
子串:
使用String类中的substring方法,可从一个字串中提取出一个子串。
Java中字串中头一个字符的位置是0,
可以使用length方法得到字串的长度。
可以使用charAt(n)来提取位置第n处的字符。
可以使用equals方法来判断两个字串是否完全相等(含大小写)。
如想检测两个字串是否相等,同时忽略大小写字母的区别可以使用equalsIgnoreCase方法。
不能使用==来判断两个变量是否相等。
2、数组:
Java语言中,数组是第一类对象。
当建立一个数组后,就不能轻易地改变它的大小。
当你试图对数组声明边界外的任何一个元素进行访问时,程序运行就会中止,但编译的时候可以通过。
数组元素次序从零开始。
定义数组:
intx[]=newint[100];
或:
intx[];
x=newint[100];
注意:
下面定义是错误的,因为Java语言中不能指定其长度!
intx[100];
Java有一个建立一个数组对象并同时提供初始化值的简写形式:
int[]x={2,3,4,5,6};
或
intx[]=newint[]{2,3,4,5,6};
另外可以初始化一个“匿名数组”:
newint[]{2,3,4,5,6};
当将一个数组作为方法的参数时,又不想建立一个本地数组变量来保存数组,就可以使用匿名数组的方法。
如果想知道一个数组包含的元素数量,可以使用arrayName.length方法。
数组的复制:
可以把一个数组变量复制给另一个,但两个变量引用的都会是相同的数组,可使用System.arraycopy(from,fromIndex,to,toIndex,count);
方法。
数组作为参数使用:
Java中数组作为参数,使用的是引用的方式,即传递的数组的地址,在方法中改变数组元素的值可以改变源数组元素的值。
数组作为返回值使用:
一个方法可以返回一个数组。
多维数组:
Java语言中可以定义一个二维数组,但没有多维数组。
多维数组实际上是通过数组的数组来实现的。
控制流程
1、控制流程:
Java提供的控制流程和许多其他的程序语言基本上是相同的。
1)条件语句:
if(条件)语句;
if(条件){代码块}
else语句;
if(条件){代码块}else{代码块}
2)不确定循环:
while(条件){代码块}
do{代码块}while(条件);
3)确定循环:
for(inti=1;
i<
=10;
i++){代码块}
在for语句的第一个位置声明了一个变量后,这个变量的作用域会扩展到for循环主体结束。
但循环之外是不能使用这个变量的。
4)多重循环:
switch(choice)
{
case1:
...
break;
case2:
default:
}
default从句是可选的。
switch语句只能对char类型或除了long之外的其他整数类型进行测试。
5)标签中断:
在一个循环之前使用标签中断并在标签后面使用一个冒号,然后在循环体中如果想退出循环可以使用“break标签;
”的方法来退出循环并开始执行循环体后面的语句。
类的编写
PublicclassStack{
privateVectoritems;
publicdStack()
{
items=newVector(10);
}
publicObjectpush(Objectitem){
items.addElement(item);
returenitem;
publicsynchronizedObjectpop(){
intlen=items.size();
Objectobj=null;
if(len==0)
thrownewEmptStackException();
obj=items.elementAt(len-1);
items.removeElementAt(len-1);
returnobj;
publicbooleanisEmpty(){
if(items.size()==0)
returntrue;
else
returnfalse;
上面的例子定义了一个类叫作Stack,在这个类中定义了一个实例变量items,定义了一个构造器,定义了三个方法,关于实例变量,构造器和方法我们会再后面一个一个的给大家进行讲解。
类的定义:
一个类在使用前必须要进行定义,当然Java本身提供了许多类。
类声明的语法主要包括两个部分,一个是类的声明,就是上例中的第一行语句,用来声明类的名称等信息;
下面用一对大括号括起来的部分称为类体,用来定义类的实例对象,构造器和方法等。
类的声明:
下面我们给出类声明的语法,
publicclassispubliclyaccessible
abstractclasscannotbeinstantiated
finalclasscannotbesubclassed
classNameOfClassNameoftheClass
extendsSuperSuperclassoftheclass
implementsInterfacesInterfacesimplementedbytheclass
ClassBody
上面的语法中,大括号前面的内容就是类声明的基本语法,其中ClassNameOfClass是类声明中最主要的部分,它定义了类的名称,是必不可少的,Class是Java的关键字,NameOfClass是类的真实名称。
public,abstract,final可看成是一组,在使用的时候只能使用其中一个,他们必须放在类的名称前面,如果使用public说明定义的这个类可以被在同一个封装中的其他类所使用和访问,如果使用abstract说明定义的这个类是一个抽象类,不能用此类来创建类的实例,也就是对象,如果使用final说明定义的类是一个终极类,不能在用这个类来定义子类了。
extendsSuper和implementsInterfaces可以看成一组,在使用的时候只能使用其中的一个,如果使用extendsSuper说明现在定义的类是一个超类的子类,如果使用implementsInterfaces说明该类使用了Interfaces接口,这两个组成部分体现了类的继承特性。
类定义中的类体部分主要包含三个成分:
实例变量,构造器和方法,这三个成分称为类的成员。
其中实例变量用来保存类的状态,构造器用来对类的实例进行初始化,方法将用来赋予类强大的能力,来完成一些工作。
下面我们就组成类体的三个成分分别进行说明:
构造器:
构造器的作用就是对类的实例进行初始化。
构造器的名字必须和类名称相同。
比如例子中展示的类Stack的构造器也叫Stack。
Java允许类可以有多个构造器,但所有的构造器名称都要相同,要和类名称相同,但每个构造器的参数数量和类型是不同。
编译器会根据参数的数目和类型来准确的判断应该使用哪个构造器来对类的实例进行初始化。
一般的情况下,构造器主要就是对类的实例变量进行初始化。
编译器会根据你调用构造器时所使用的参数的个数和类型来选择准确的构造器。
当你编写一个类的时候,你也可以不给类定义构造器,此时Java的运行环境会自动使用默认的构造器来对类实例进行初始化。
实例变量:
在上面的例子中我们使用了一个实例变量:
实例变量用来描述类的状态。
为了声明实例变量我们应该将上面这条语句方法类体中,但不能放在类的方法声明中。
在方法中声明的变量是方法的本地变量,和我们现在提到的实例变量是不一样的。
AccessLevel:
Indicatestheaccesslevelforthismember
static:
Declaresaclassmember
final:
Indicatesthatitisconstant
transinet:
Thisvariableistransient
volatile:
Thisvariableisvolatile
typename:
Thetypeandnameofthevariable
上面就是声明一个实例变量的语法成分,其中typename是声明一个实例变量必须要有的,type用来说明实例变量的数据类型,也就说明该变量可以用来存放的值的类型,name是实例变量的名称,变量名可以由任何合法的字符组成,首字符应该是一个字母。
在一个类中,实例变量应该是唯一的,不能存在两个名称相同的实例变量,但你可以在该类的子类中重新定义一个实例变量和你的超类的实例变量名称相同,这时,子类的实例变量会覆盖掉超类的实例变量,另外实例变量的名称可以和类中的某个方法的名称相同。
除了typename之外,下面我们对其他的成分进行一下说明:
accessLevel
你可以使用这个修改符来控制其他类对该实例变量的访问方式,不同的访问方式包括:
public,protected,package,和private。
static
声明一个类变量,这个变量在不声明类实例的情况下就可以使用,使用的方式是:
对象名.变量名。
final
使用这个修改符实际上是定义了常量,他的值是不能被改变的。
transient
这种控制方式实际上不是Java语言主要的控制方式,主要是在serialization对象中使用。
volatile
这个修改符用来通知编译器不要在编译的时候对实例变量进行优化,这是一个Java的高级特性,一般很少用到他。
方法:
向你所知道的那样,对象有一个能力就是去执行一些方法,其他类的对象可以通过调用该类的方法来让该类执行一定的操作,下面我们就来看看如何在你的程序中给类填加方法。
publicObjectpush(Objecitem){
returnitem;
上面的例子定义了一个方法,通过这个例子我们可以分析一下,一个方法的定义应该包括两大部分,一个就是方法声明,一个是方法体。
方法声明用来定义类的各种性质,例如访问级别,返回类型,名称和参数等等。
accessLevelAccesslevelforthismethod
staticThisisaclassmethod
abstractThismethodisnotimplemented
finalMethodcannotbeoverridden
nativeMethodimplementedinanotherlanguage
synchronizedMethodrequiresamonitortorun
returnTypemethodnameThereturntypeandmethodname
(paramlist)Thelistofarguments
throwsexceptionsTheexceptionsthrownbythismethod
上面就是声明一个方法的语法成分,一样其中rutuenTypemehtodname是在声明一个方法的时候必须要有的,其中methodname是方法的名称。
returntype是方法的返回值类型。
声明一个方法的语法中其他的成分说明如下:
accessLevel:
和声明一个实例变量时是一样的,用来控制其他类访问该方法的方式,其中包括public,protected,package,和private。
static:
用来声明一个类方法,该方法可以在不声明对象实例的情况下直接使用,使用的语法是:
对象名.方法名
abstract:
用来声明一个抽象方法,该方法不能通过对象实例来直接使用,因为该方法一定是一个抽象类中的方法。
final:
声明一个终极类方法,就是说在该类的子类中不能用同名的方法来覆盖本方法。
native:
如果你有一些使用其他编程语言编写的函数,想在Java程序中使用他们,你可以使用native关键字来声明类中的某个方法不是用java编写的,这样你就可以将以往的工作成果包含到你的Java程序中。
synchronized:
当多个方法可能同时对同一个数据进行操作时,就需要对这些方法进行同步,确保每个方法的操作不会影响到其他的方法,这时你就可以使用该方法来完成。
(paramlist)
这是方法的参数,用来给方法传递信息。
[throwsexceptions]
当你的程序在执行过程中可能会出现一些问题或错误的时候,你应该进行违例处理,这就是本成分的功能,具体的违例处理我们还会在其他的文章中进行说明。
在方法体中,你可以编写任何条数的语句。
另外我们还要说明三个概念:
this:
在类的方法中,你可以使用this来表示对本类自身的调用,比如你在方法中需要使用到该类的某个实例变量,你可以通过this.变量名来使用。
super:
如