`
bsr1983
  • 浏览: 1099344 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第三章 Java基本的程序设计结构

阅读更多
3.1 一个简单的Java应用程序
Java对大小写敏感。
Java应用程序中的全部内容都必须放置在类中。
Java定义类名:名字必须以字母开头,后面可以跟字母和任意数字的组合,长度上基本上没有限制,但是不能使用Java关键字。
在Java中,每个句子必须用分号结束。
3.2 注释
在Java中有三种表示注释的方式:
//       注释内容从“//”开始到本行结束
/*  */ 注释内容从“/*”开始到“*/”结束
/**  */ 注释内容从“/**”开始到“*/”结束,可用来自动生成文档
在Java中“/*”和“*/”不能嵌套
3.3 数据类型
Java是一种强类型语言(strongly type language),这就意味着必须要为每个变量声明一种类型。Java中一共有8种基本类型(primitive type),其中有4个整数类型,2个浮点数类型,1个用于表示Unicode编码的字符单元的字符类型char和一个用于标示真值的boolean类型。
3.3.1 整型
在Java中整型的范围与运行Java的机器无关。
长整型数值有一个后缀L,十六进制数值有个前缀0x,八进制数值有个前缀0,例如010对应八进制中的8。
Java没有任何的unsigned类型。
3.3.2 浮点型
浮点类型用于表示有小数部分的数值。
float 占用4字节,double占用8字节
float类型的数值有一个后缀F,没有后缀的浮点数值默认为double类型
在JDK5.0中可以使用十六进制表示浮点数,在十六进制表示法中,使用p表示指数,而不是e。
3.3.3 char类型
代码点(code point)是指与一个编码表中的某个字符对应的代码值。
UTF-16编码采用不同长度的编码表示所有的Unicode代码点。在基本的多语言级别中,每个字符用16位表示,通常被称为代码单元(code unit)
在Java中,char类型用UTF-16编码描述一个代码单元。
3.3.4 boolean类型
boolean类型有两个值:false和true,用来判断逻辑条件。这两个值不能与整型进行相互转换。
3.4 变量
变量名必须是一个以字母开头的字母或数字序列。
注意:如果要知道哪些Unicode字符属于Java中的“字母”,可以使用Character类的isJavaIdentifierStart和isJavaIdentifierPart进行检测。
3.4.1 初始化变量
3.4.2 常量
在Java中,利用关键字final声明常量。关键字final表示这个变量只能被赋值一次,一旦被赋值后就不能再更改了。
可以使用关键字static final设置一个类常量。
const是Java的保留的关键字,但目前并没有使用,在Java中必须使用final定义常量。
3.5 运算符
当参与/运算的两个操作数都是整数时表示整数除法,否则表示浮点数除法。
整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN。
对于使用strictfp关键字标示的方法来说,必须使用严格的浮点计算,以产生理想的结果。
3.5.1 自增运算符与自减运算符
3.5.2 关系运算符与boolean运算符
3.5.3 位运算符
在处理整型数值时,可以直接对组成整型数值的各个位进行操作。
&(“与”)、|(“或”)、^(“异或”)、~(“非”)
还有“>>”和“<<”,他们将进行二进制位右移或左移,最后“>>>”运算符将用0填充前面的位,“>>”用符号位填充左侧的位。
没有“<<<”运算符。
警告:对移位运算符右侧的参数需要进行模32位的运算(除非左边的操作数十long类型,在这种情况下需对右侧操作数模64)。例如1<<35与1<<3或8是相同的。
3.5.4 数学函数与常量
在Math类中,包含了各种各样的数学函数。
3.5.5 数值类型之间的转换
3.5.6 强制类型转换
强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,随后紧跟待转换的变量名。
警告:如果试图讲一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会被截断成一个完全不同的值,例如,(byte)300的实际值为44.
3.5.7 括号与运算符级别
因为+=是右结合运算符,所以表达式a+=b+=c等价与a+=(b+=c)
运算符 结合性
[] . () (方法调用) 从左向右
! ~ ++ -- +(一元运算)-(一元运算) ( )(强制类型转换)new 从右向左
* / % 从左向右
+ - 从左向右
<< >> <<< 从左向右
< <= > >= instenceof 从左向右
== != 从左向右
& 从左向右
^ 从左向右
| 从左向右
&& 从左向右
|| 从左向右
?: 从右向左
= += -= *=  /= &= |= ^= <<= >>= >>>= 从右向左
3.5.8 枚举类型
从JDK5.0开始,可以自定义枚举类型。枚举类型包括有限个命名的值。
例如,
Enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE}
3.6 字符串
从概念上讲,Java字符串就是Unicode字符序列。
Java没有内置的字符串类型,二十载表中的Java类库中提供了一个预定于类String。
3.6.1 代码点与代码单元
Java字符串由char值序列组成。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
Length方法将返回采用UTF-16编码表示的给定字符所需要的代码单元数量。如果要的到实际的长度,即代码点数量,可以使用codePointCount();
codePointAt方法能够辨别一个代码单元式辅助字符的第一部分还是第二部分,并且能够返回正确的结果。
3.6.2 子串
3.6.3 字符串编辑
String类没有提供用于修改现存字符串的方法。
由于不能修改Java字符串中的字符,所以在Java文档中将String类对象称为不可变字符串。不可变字符有一个优点:编译器可以将字符串共享。
3.6.4 拼接
Java语言允许使用+号连接(拼接)两个字符串。
当将一个字符与一个非字符串的值进行拼接时,后者被转化成字符串。
3.6.5 检测字符串是否相等
可以使用equals方法检测两个字符串是否相等。
一定不能使用= =运算符检测连个字符串是否相等!这个运算符只能够确定两个字符串是否被放置在同一个位置。
只有字符串常量是共享的,+或substring等操作产生的结果都不是共享的,因此永远不要使用= =运算符曾是字符串的相等性。
3.6.6 阅读联机API文档
3.7 输入输出
3.7.1 读取输入
要想通过控制台进行输入,首先需要构造一个Scanner对象,它附属于“标准输入流”System.in。
Scanner in = new Scanner(System.in);
3.7.2 格式化输出
注意:可以使用S转换符格式化任意的对象。对于任意实现了Formattable接口的对象都将调用formatTo方法;否则将调用toString方法,这个方法可以将对象转换为字符串。
3.8 控制流程
3.8.1 块作用域
块(即复合语句)是指由一对花括号括起来的若干条简单的Java语句。块确定了变量的作用域,一个块可以嵌套在另一个块中。
不能再嵌套的两个块中声明同名的两个变量。
3.8.2 条件语句
3.8.3 循环
while  do while
3.8.4 确定循环
for
3.8.5 多重选择——switch语句
注意,case标签必须是整数或枚举常量,不能检测字符串。
3.8.6 中断控制流程语句
Java提供了一种带标签的break语句,用于跳槽多重嵌套的循环语句。标签必须放置在最外层的循环之前,并且必须紧跟一个冒号。
continue语句与break语句一样,它将中断正常的控制流程。Continue语句将控制转移到最内层循环的首部。
3.9 大数值
如果基本的证书和浮点数精度不能满足需求,就可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal。这两个类可以处理任意长度的数值。
BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
3.10 数组
一旦创建了数组,就不能再改变它的大小。
3.10.1 “for each”循环
集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象。
3.10.2 数组初始化器以及匿名数组
注意:在Java中,允许数组的长度为0。在编写一个结果为数字的方法时,如果碰巧结果为空,那么这种语法形式就显得非常有用。测试可以创建一个长度为0的数组:
new elementType[0]
注意,数组长度为0,与null不同。
3.10.3 数组拷贝
在Java中,允许将一个数组变量拷贝给另一个数组变量。
如果希望将一个数组的所有值拷贝到另一个数组中去,就要使用System类的arraycopy方法。调用这个方法的语法格式为:
System.arraycopy(from,fromIndex,to,toIndex,count);
数组to必须有足够的空间来存放拷贝的元素。
3.10.4 命令行参数
每一个Java应用程序都有一个带String[] args参数的main方法。这个参数表名main方法将接收一个字符串数组,也就是命令行参数。
3.10.5 数组排序
Math.random方法将返回一个0~1之间(含0、不含1)的随机浮点数。
3.10.6 多维数组
多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排列形式。
3.10.7 不规则数组
Java实际上没有多维数组,只有一维数组。多维数组解释为“数组的数组”。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics