第三章 Java的基本程序设计结构 (1)
来源:互联网 发布:移动数据流量叠加卡 编辑:程序博客网 时间:2024/04/28 03:11
3.2 注释
与大多数程序语言一样,Java的注释是不会出现在可执行程序中。因此,可以在源程序中根据需要添加任意多的注释,而不必担心可执行代码会膨胀。在Java中有三种注释方式。
- 最常用的方式是使用//,其注释内容从//开始到本行结尾。
System.out.println("We will user 'Hello, World!'");//is this too cute?
- 当需要长篇注释时,既可以在每行的注释前面标记//,也可以用
/*
和*/
将一段比较长的注释括起来。
/* 这是一段很长的注释*/ System.out.println("We will user 'Hello, World!'");
- 第三种注释可以用来自动地生成文档。
/** * 这可以用来生成文档 * @version study-01 * @author zjk-order */ public class FirstSample{ public static void main(String[] args){ System.out.println("We will user 'Hello, World!'"); } }
注意: 在Java中,/* */
注释不能嵌套。也就是说,如果代码本身包含了一个*/
,就不能用/*
和*/
将注释括起来。
3.3 数据类型
Java 是一种强类型语言。这意味着每一变量声明一种类型,在Java中,一共有8种基本类型(primitive type),其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型char和一种用于表示真值得boolean类型。
注意:Java有一种能够表示任意精度算书包,通常称为“大数值”(big number)。虽然被称为大数值,但是它并不是一种新的Java数据类型,而是一个Java对象。
3.3.1 整型
整数用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,具体容如下:
在通常情况下,int类型最常用。但是如果表示星球上的居住人数,就需要使用long类型。byte和short主要用于特定的应用场合,例如,底层文件处理或者需要控制占用存储空间量的大数组。
在Java中,整型的范围和Java代码的机器运行无关。
长整型数值有一个后缀L(如:40000000000000000L)。十六进制数值有一个前缀0x(如:0xCAFE)。八进制前缀0。例如,010对应八进制中的8。很显然,八进制表示法比较容易混淆,所以建议最好不要使用八进制常数。
注意:Java没有任何无符号类型(unsigned)。
3.3.2 浮点类型
浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型,具体内容如下:
double表示这种类型的数值精度是float类型的两倍(有人称之为双精度数值)。绝大部分应用程序都采用double类型。在很多情况下,float类型的精度很难满足需求。
float类型的数值有一个后缀F(例如,3.14F)。没有后缀F的浮点数值(如3.14)默认为double类型。当然,也可以在浮点数值后面添加后缀D(例如,3.14D)。
所有的浮点数都遵循IEEE 754规范。下面用于表示溢出和出错情况的三种特殊的浮点数值
* Double.POSITIVE_INFINITY 正无穷大
* Double.NEGATIVE_INFINITY 负无穷大
* Double.NaN (不是一个数值)
但是在实际情况中很少遇到。特别要说明的是,不能这样检测一个特定的值是否等于Double.NaN:
if(x == Double.NaN)
所有“飞数值”的值都认为是不相同的。然而,可以使用Double.isNaN方法:
if(Double.isNaN(x))
3.3.3 char类型
char类型用于表示单个字符。通常永磊表示字符常量。例如:‘A’是编码为65所对应的字符常量。与“A”不同,“A”是一个包含字符A的字符串。Unicode编码单元可以表示为十六进制值。其范围从\u0000到\Uffff。例如:\u2122表示注册符号(™),\u03C0 表示希腊字符π。
3.3.4 boolean 类型
boolean 类型有两个值:false和true,用于判定逻辑条件。整型值和布尔值之间不能相互转换。
3.4 变量
在Java中,每一个变量属于一种类型(type)。在声明变量时,变量所属的类型位于变量名之前。这里列举一些声明变量的示例:
double salary; int vacationDays; long earthPopulation; boolean done;
变量名必须是以一个字母或数字构成的序列。变量名中所有的字符都是有意义的,并且大小写敏感。变量名的长度没有限制。
*注意: 如果想知道哪些Unicode字符属于Java中的“字母”,可以使用Character类的isJavaIdentifierStart和isJavaIdentifierPart方法进行检测。
不能将变量命名为Java保留字。*
3.4.1 变量初始化
声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不要使用未被初始化的变量。例如,Java编译器认为下面语句序列是错误的:
int vacationDays; System.out.print(vacationDays);//ERROR--variable not initialized
要想对一个已经进行声明过的变量进行赋值,就需要将变量名放在等号(=)左侧,相应取值的Java表达式放在等号的右侧。
int vacationDays; vacationDays = 12;
也可以将变量的声明和初始化放在同一行中。例如:
int vacationDays = 12;
最后在Java中可以声明放在代码中的任何地方。例如,下例带面的书写形式在Java 中完全是合法的:
double salary = 65000.0;System.out.println(salsry);int vacationDays = 12; //OK to declare a variable here
3.4.2 常量
在Java 中,利用关键字final指示常量。例如:
public class Constants{ public static void main(String[] args){ final double CM_PER_INCH = 2.54; double paperWidth = 8.5; double paperHeight = 11; System.out.println("Paper size in centimeters:" + paperWidth*CM_PER_INCH +"by"+paperHeight *CM_PER_INCH ); }}
关键字 final 表示这个变量只能被复制一次,一旦被赋值之后,就不能够再更改了。习惯上常量名使用全大写。
在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字static final
设置一个类常量。下面使用类常量的示例:
public class Constant2{ public static final double CM_PER_INCH = 2.54; public staitc void main(String[] args){ double paperWidth = 8.5; double paperHeight = 11; System.out.println("Paper size in centimeters:" + paperWidth*CM_PER_INCH +"by"+paperHeight *CM_PER_INCH ); } }
需要注意,类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也是可以使用这个常量。而且,如果常量被声明为public,那么其他类的方法也可以使用这个常量。
3.5 运算符
在Java中,使用算数运算符+、-、*、/表示加、减、乘、除运算。当参与/运算的恋歌操作数都是整数时,表示整数除法;否则,表示浮点数除法。整数的求余操作(有时称为取模)用%表示。例如15/2=7,15%2=1,15.0/2=7/5。
需要注意整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。
可以在赋值语句中采用一种简化的格式书写二元算数运算符。
例如,
x+=4 等于 x=x+4;
3.5.1 自增运算符与自减运算符
当然,程序员都知道加1、减1是数值变量最常见的操作。在Java中,借鉴了c和c++的实现方式,也使用了自增、自减运算符:n++将变量n的当前值加1;n–将n的当前值减1。例如:
int n = 12; n++;
n的值将变成13。因为这些运算符改变了变量的值。所以他的错作数不是是数值。例如,4++就是一条非法的语句。
实际上,这两个运算符有两种形式,上面介绍的是运算符放在操作数的后面的后缀形式,还有一种前缀形式,++n。两种方式都是对变量值加1。但在表达式中,这两种形式就有区别了。前缀方式先进行加1运算;后缀方式则使用变量原来的值。
int m =7; int n =7; int a = 2* ++m;//new a is 16,m is 8 int b = 2*n++; //new b is 14,n is 8
我们建议不要在其他表达式的内部使用++,这样编写的代码很容易令人困惑,并会产生烦人的BUG。
3.5.2 关系运算符与boolean运算符
Java包含各种关系运算符。其中,使用两个等号==检测是否相等。例如,3==7的值为false。
使用!=检测是否不相等。例如,3!=7的值为false。
另外,经常使用的运算符还有<,>,<=和>=。
Java沿用了C++的习惯,用&&表示逻辑“与”、用||表示逻辑“或”。从!=运算符很同意看出,!表示逻辑“非”。&&和||是按照“短路”的方式求值。如果第一个操作数已经能够正确表达式的值,第二个操作数就不必计算了。如果用&&对表达式进行计算:
expression1 && expression2
并且第一个表达式值为false,结果不能为真。因此,第二个表达式的值就没有必要计算。这种表达式可以避免一些错误的发生。例如,表达式:
x!=0&&1/x>x+y // no division by 0
当x为0时,不会计算第二部分。因此,若x为0,1/x不被计算,也不会出现除以0的错误。
与之类似,对于
expression1 || expression2
当第一个表达式为true时,结果自动为true。不必再计算第二部分。
最后,Java支持三元操作符?:。在很多时候,这个操作符非常有用。表达式
condition ? expression1 : expression2;
当条件condition为真时计算第一个表达式,否则计算第二个表达式。例如:
x < y ? x:y;
返回x和y中较小的那个值。
3.5.3 位运算符
在处理整型数值时,可以直接对组成整型数值的各个位进行操作。这意味着可以使用屏蔽技术获得证书中的各个位。位运算符包括:
&(“与”)、|(“或”)、^(“异或”)、~(“非”)
这些位运算符在位模式下工作。例如,如果n是一个整型变量,并且用二进制表示的n从右数第四位为1,那么
int fourtBitFromRight = (n & 0b1000) /ob1000;
返回1;否则返回0,通过运算用2的幂次方的&运算可以将其他位屏蔽掉,而值保留其中的某一位。
注意:&和|运算符应用于布尔值,得到的结果也是布尔值。这两个运算符与&&和||的运算非常相似,只是不按“短路”方式计算。即在得到计算结果之前,一定要计算两个操作数的值。
另外,“>>”和“<<”运算符将二进制位进行右移或左移操作。当需要建立为模式屏蔽默写位时,使用两个运算符十分方便:
int fourthBitFormRigth = (n&(1<<3))>>3;
最后,>>>运算符将用0填充最高位;>>运算符用符号位填充最高位。没有<<<运算符。
- 第三章 Java的基本程序设计结构 (1)
- 第三章 java基本的程序设计结构
- 第三章(JAVA基本的程序设计结构)
- 第三章 Java的基本程序设计结构
- 第三章 Java的基本程序设计结构(1)
- 第三章 Java的基本程序设计结构(一)
- 第三章 Java的基本程序设计结构 (2)
- 第三章 Java的基本程序设计结构 (3)
- 第三章 Java的基本程序设计结构 (4)
- 第三章 Java的基本程序设计结构 (5)
- 《java核心技术》读书笔记(二)第三章 java基本的程序设计结构(1)
- 【Java核心技术 I】第三章 Java的基本程序设计结构
- 第三章 Java基本程序设计结构(2)
- 第三章 Java的基本程序设计结构——字符串
- 第三章 Java基本的程序设计结构---笔记
- 《java核心技术》读书笔记(三)第三章 java基本的程序设计结构(2)
- 读书笔记(一)——《Java核心技术卷一》第三章Java的基本程序设计结构
- 读书笔记(二)——《Java核心技术卷一》第三章Java的基本程序设计结构
- 总结MFC中OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别
- iOS kCGImageAlphaPremultipliedLast与kCGImageAlphaLast区别和联系
- android app从登录界面进入主页,按home键回桌面再进入app,重新弹出登录界面的问题解决
- 软件包管理器
- 社交系统ThinkSNS+从V0.8.7到V0.8.9我们到底修复了多少个bug?
- 第三章 Java的基本程序设计结构 (1)
- CCF--学生排队
- 博客tinyos系列文章索引
- 拷贝文件的三种方法
- 编写10个线程,第一个线程从1加到10...
- 移植python到imx6
- TensorFlow深度学习,一篇文章就够了
- [剑指offer]面试题8:旋转数组的最小数字
- PHP生成日历(实例详解)