为什么会想学习Java呢,一句话: 书到用时方恨少。 要不是现场现在需要用到Java,我估计就不会学习这个了,现在才深刻的体会到:技不压身这句话的含义。学习的时候不要想到立竿见影的求效果,也许某一天她就用到了,而这个时候,也许你就比别人的路更宽广了。
所以不要纠结这个东西有没有用了,学吧,骚年(本来是少年的,结果出现了这个词)..........,
上两次说了一点Java的入门的东西,到这个程度,我们是否想要干点别的事情呢?因此我们需要来认识一下Java中结构化程序设计的部分:
流程控制;以及数据的操作结构:运算符。
【Java 赋值运算符】
为什么要说这个运算符呢? 因为太简单了,简单到必须说。赋值是什么意思呢? 我们通过实例来说明:
/*
This program test the oprator
*/
public class OprTest
{
public static void main(String[] args)
{
//asign value
int IntTest;
System.out.print("The value of IntTest is:"+IntTest);
}
}
上面的程序执行结果是:
抛出异常了,我们可以看到,编译的过程报错,为什么呢? 这个各位童鞋们可以自己想一下,就不多说了。
下面我们对代码进行一下修改:
/*
This program test the oprator
*/
public class OprTest
{
public static void main(String[] args)
{
//asign value
int IntTest;
IntTest=100; //初始化变量值
System.out.print("The value of IntTest is:"+IntTest);
}
}
执行结果是:
我们看到这个时候程序已经成功执行。为什么要在这里说这个问题呢? 因为我们在C语言中,有些时候不给变量赋值也能编译通过(没有启用ALL Alarm模式),而且运行过程中
有时候也正常,而在Java中,如果变量没有进行初始化赋值,那么就不能编译通过。同时我们也看到,我没有在定义变量的时候给变量赋初值,而是再起语句初始化变量,这个地方是与
C语言的叫法不一致的,需要注意。
赋值运行符,还有一些复合的用法,在下面我们会介绍。
【Java 四则运算】
知道数数后,我们接受的教育应当就是四则运算了,加、减、乘、除;一切简单而自然,但是在计算机的世界里面,简单却不自然了。我们通过实例来认识一下四则运算:
/*
This program test the oprator
*/
public class OprTest
{
public static void main(String[] args)
{
//asign value
int IntTest;
IntTest=100; //初始化变量值
System.out.println("The value of IntTest is:"+IntTest);
//add
int Sum;
Sum=IntTest + 20121221;
System.out.println("Sum=IntTest+20121221="+Sum);
//sub
int Dif;
Dif=Sum - 300;
System.out.println("Dif="+Dif);
//Multiplication
long Mul;
Mul=Sum * Dif;
System.out.println("Sum*Dif="+Mul); //overflow, but can execute,so you need pay atention to this
double DoubleMul;
DoubleMul=1.0*Sum* Dif; //here why we need to muliply with 1.0 ??
System.out.println("1.0*Sum*Dif="+DoubleMul);
//Division
int Div;
Div=Dif/789;
System.out.println("Dif/789="+Div); //Normally 20121021/20121321 = 0.999985;how can the result be ?
double DoubleDiv;
DoubleDiv=1.0*Dif/789;
System.out.println("1.0*Dif/789="+DoubleDiv); //IS the same wiht the statement Div=Dif/Sum; ??
//Mod
int Mod;
Mod=Sum % 2; //Is this equal to Sum / 2 ??
System.out.println("Sum % 2 ="+Mod);
System.out.println("Sum / 2 ="+Sum/2);
//Multiply plus and sub
int PostPlus;
int PrePlus;
int PostSub;
int PreSub;
System.out.println("Mod="+Mod+";"+" Dif="+Dif);
PostPlus=Mod++;
System.out.println("Mod++ is:"+PostPlus);
PostPlus=++PostPlus;
System.out.println("++Mod++ is:"+PostPlus);
PostSub=Dif--;
System.out.println("Dif-- is:"+PostSub);
PreSub=--PostSub;
System.out.println("--Dif-- is:"+PreSub);
}
}
上面程序运行的结果是:
四则运算需要说明的是: 在进行计算的时候,会进行类型转换。对于 / 运算符,如果操作数都是整型,则结果是整型;如果操作数有浮点类型,则结果
是浮点类型。对于 ++ 和 —— 运算符,则和C语言一样。
【Java关系运算符】
Java提供了功能丰富的关系运算符: == 、 != 、 <、<=、>、>=
这些运算符的效果和C语言中是一样的;这里就不进行具体的介绍了,但是有一点需要说明,在判断两个浮点数相等的时候,不能简单的用==符号进行比较。
我们就做一个简答的测试。
//Equal to
float fNum1=1.0F;
float fNum2=0.99999999F;
if(fNum1!=fNum2)
System.out.println("1.0 != 0.9999999");
这段程序的输出是什么呢?输出结果如下所示:
这里可以看到,什么也没有输出,那么就表示Java在判断if条件的时候,将 fNum1 判断为与fNum2相等了。
【Java 逻辑运算符】
在Java中也提供了逻辑运算符: 与、或、非;并且沿用了C语言的符号,与用 && 表示; 或用 || 表示;非用 ! 表示。
具体的与或非逻辑我们就举例了。
值得一提的是: 与或非逻辑运算过程中,有一个“短路”的求值过程,当可以判断出结果的时候就不会计算后面的数值了。这个有时候会影响参数的传递过程。
具体的实例我们等到讨论方法的时候再举例。
Java中还提供了一个三元运算符;那就是 “:?”。 这个运算符的计算规则与C语言一样,我们就不再举例了。
【Java 位运算符】
Java提供了与C语言类似的位运算符,这些位运算符应用非常广泛,通常用于“屏蔽技术”(怎么感觉像PLC中的屏蔽,不过两者还是有区别的)。位运算符有:
按位与、按位或、按位异或、按位非。
具体的实例我们就不举例了,有一个简单的应用就是求byte类型的溢出值: 300&0XFF; 具体实例见:
这里还有一个有趣的事情就是: & 和 | 可以对boolean的进行求值,其计算规则和用法和逻辑运算符一样, & 对应 &&,而| 对应||; 我们可以看一个实例:
//Bit oprator
boolean bTest1=true;
boolean bTest2=false;
if(bTest1 & bTest2)
System.out.println("True & True is ture");
if(bTest1 | bTest2)
System.out.println("True | True is ture");
执行结果如下所示:
【Java 移位运算符】
在Java中也C语言一样,也提供了移位运算符,同样移位运算符适合于整型数的计算。Java提供了: 右移>>、左移<<两种运算符。其具体的用法和C语言的移位
运算符一致。
我们知道在C语言中右移运算符>>,最高位的补齐规则由编译器决定,标准并没有规定,为了消除这个歧义,Java特别设计一个右移运算符 ">>>" ; 并且规定
>> 运算符是符号位填充,即>> 不会改变数值的正负; 而>>> 则规定用0补齐最高位。
【Java中的常量】
我们知道在C语言中提供了define机制来定义符号常量,或者说符号字面值;而在C++中则另外提供了const这一机制补充“符号字面值”的使用,那么在Java中有没有
提供一种类似的机制呢?
很显然,提供这样一种机制,将有利于编程人员的程序编写和阅读;在Java中也提供了这样的机制。那如何实现呢?
在Java中我们可以通过 final 关键字来定义符号常量。其定义语法为:
final datatype VaribleName=常量字面值;
下面我们通过一个实例来说明这个问题:
我们在看下一个例子:
类中可以定义类常量,就像上面的定义,但是这样定义是默认为私有的呢?还是public的呢? 这里留下一个疑问,等到以后我们学到修饰符的时候再来解答。
下面是这次测试代码:
/*
This program test the oprator
*/
public class OprTest
{
public static void main(String[] args)
{
/*********
//asign value
int IntTest;
IntTest=100; //初始化变量值
System.out.println("The value of IntTest is:"+IntTest);
//add
int Sum;
Sum=IntTest + 20121221;
System.out.println("Sum=IntTest+20121221="+Sum);
//sub
int Dif;
Dif=Sum - 300;
System.out.println("Dif="+Dif);
//Multiplication
long Mul;
Mul=Sum * Dif;
System.out.println("Sum*Dif="+Mul); //overflow, but can execute,so you need pay atention to this
double DoubleMul;
DoubleMul=1.0*Sum* Dif; //here why we need to muliply with 1.0 ??
System.out.println("1.0*Sum*Dif="+DoubleMul);
//Division
int Div;
Div=Dif/789;
System.out.println("Dif/789="+Div); //Normally 20121021/20121321 = 0.999985;how can the result be ?
double DoubleDiv;
DoubleDiv=1.0*Dif/789;
System.out.println("1.0*Dif/789="+DoubleDiv); //IS the same wiht the statement Div=Dif/Sum; ??
//Mod
int Mod;
Mod=Sum % 2; //Is this equal to Sum / 2 ??
System.out.println("Sum % 2 ="+Mod);
System.out.println("Sum / 2 ="+Sum/2);
//Multiply plus and sub
int PostPlus;
int PrePlus;
int PostSub;
int PreSub;
System.out.println("Mod="+Mod+";"+" Dif="+Dif);
PostPlus=Mod++;
System.out.println("Mod++ is:"+PostPlus);
PostPlus=++PostPlus;
System.out.println("++Mod++ is:"+PostPlus);
PostSub=Dif--;
System.out.println("Dif-- is:"+PostSub);
PreSub=--PostSub;
System.out.println("--Dif-- is:"+PreSub);
*********/
/********************
//Equal to
float fNum1=1.0F;
float fNum2=0.99999999F;
if(fNum1!=fNum2)
System.out.println("1.0 != 0.9999999");
***********************/
/******************
//Bit oprator
boolean bTest1=true;
boolean bTest2=false;
if(bTest1 & bTest2)
System.out.println("True & True is ture");
if(bTest1 | bTest2)
System.out.println("True | True is ture");
************/
final int finalIntTest=100;
System.out.println("finalIntTest is:"+finalIntTest);
}
}
发现Java是一种类C的语言,很多的机制和规则与C语言非常相似,但是需要细心的区别两者存在的区别。