第3章 Java的基本程序设计结构
1.命名规范
前言:这部分如果有C++基础,则很容易理解
public class FirstSample
{
public static void main(String[] args)
{
System.out.println(“We will not use’Hello, World!’”);
}
}
对于上述这段代码,有几个需要注意的地方
- Java区分大小写,如果大小写出错,则程序很可能无法运行。
- Java定义类名,类名必须以字母开头,后面可以跟字母和数字的任意组合。长度基本没有限制,但不能使用Java保留字。
标准的命名规范为:类名是以大写字母开头的名字,如果名字有多个单词组成,每个单词的第一个字母都应该大写- 源代码的文件名必须与公共类的名字相同,并用.java作为扩展名,例如,这段源代码的命名为FirstSample.java。(注意大小写,不能写成 firstsample.java)
- main方法要声明为public,每个Java应用程序都必须有一个main方法
- Java的代码和C++一样,以 “{”开始,以 “}”结束
2.注释
在Java中有三种注释方式
- //,其注释内容从//开始到本行结尾
- 长篇注释可以每行都用//,也可以用/* 和 */把长注释括起来
- 以/*开始,以/结束,这种注释可以用来自动生成文档
注意: 在Java中,/* * /注释不能嵌套,也就是说,不能简单地把代码用 /* * /括起来作为注释,因为这段代码本身可能也含有一个*/
3. 数据类型
Java是一种强类型语言,必须为每一个变量声明一种类型
在Java中,一共有8种基本类型,其中4种整型,2种浮点 类型,一种用来表示Unicode编码的字符单元的字符类型char和一种用来表示真值的boolean类型。
3.1 整型
在 Java 中, 整型的范围与运行 Java 代码的机器无关。这就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同操作系统之间进行移植给程序员带来的诸多问题。
由于 Java 程序必须保证在所有机器上都能够得到相同的运行结果, 所以各种数据类型的取值范围必须固定。
与此相反,C 和 C++ 程序需要针对不同的处理器选择最为高效的整型, 这样就有可能造成一个在32 位处理器上运行很好的 C 程序在 16 位系统上运行却发生整数溢出。
在 C 和 C++ 中, int 和 long 等类型的大小与目标平台相关。在 8086 这样的
16 位处理器上整型数值占 2 字节;不过, 在 32 位处理器(比如 Pentium 或 SPARC) 上,整型数值则为 4 字节。 类似地, 在 32 位处理器上 long 值为 4 字节, 在 64 位处理器上则为 8 字节。由于存在这些差别, 这对编写跨平台程序带来了很大难度。
3.2 浮点类型
浮点类型用于表示有小数部分的数值。在 Java 中有两种浮点类型
double 表示这种类型的数值精度是 float 类型的两倍(有人称之为双精度数值)。绝大部分应用程序都采用 double 类型。在很多情况下,float 类型的精度很难满足需求。
实际上,只有很少的情况适合使用 float 类型,例如,需要单精度数据的库, 或者需要存储大量数据。
3.3 char类型
char 类型的字面量值要用单引号括起来。例如:‘A’ 是编码值为 65 所对应的字符常量。它与 “A” 不同,“A” 是包含一个字符 A 的字符串.
3.4 boolean 类型
boolean (布尔)类型有两个值:false 和 true, 用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。
在 C++ 中, 数值甚至指针可以代替 boolean 值。值 0 相当于布尔值 false, 非 0 值相当于布尔值 true, 在 Java 中则不是这样。
4 变量
在 Java 中,每个变量都有一个类型( type)。在声明变量时,变量的类型位于变量名之前。
变量名对大小写敏感, 例如,hireday 和 hireDay 是两个不同的变量名 , ,
double salary;
int vacationDays;
long earthPopulation;
boolean done;
可以看到,每个声明以分号结束。由于声明是一条完整的 Java语句,所以必须以分号结束
4.1 变量初始化
声明一个变量之后,必须用赋值语句对变量进行显式初始化.
//以下语句是错误的
int vacationDays;
System.out.println(vacationDays): // ERROR variable not initialized
要想对一个已经声明过的变量进行赋值, 就需要将变量名放在等号(=) 左侧, 相应取值的 Java 表达式放在等号的右侧。
int vacationDays;
vacationDays=12;
也可以将变量的声明和初始化放在同一行中。例如:
int vacationDays = 12;
最后,在 Java 中可以将声明放在代码中的任何地方。例如,下列代码的书写形式在 Java中是完全合法的
double salary = 65000.0;
System,out.println(salary);
int vacationDays = 12; // OK to declare a variable here
在 Java 中, 变量的声明尽可能地靠近变量第一次使用的地方, 这是一种良好的程序编写风格
C 和 C++ 区分变量的声明与定义。例如:
int i = 10;
是一个定义, 而
extern int i;
是一个声明。
但在 Java 中, 不区分变量的声明与定义。
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 Constants {
public static final double CM_PER_INCH = 2.54;
public static void main(Stringn args) {
double paperWidth = 8.5;
double paperHeight = 11;
System.out.println("Paper size in centimeters: " + paperWidth * CMJERJNCH + by " + paperHeight * CM_PER_INCH) ;
}
}
类常量的定义位于 main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且,如果一个常量被声明为 public,那么其他类的方法也可以使用个
常量
const 是 Java 保留的关键字,但目前并没有使用(在C++中使用)。在 Java 中, 必须使用 final定义常量。
5. 运算符
在 Java 中,使用算术运算符 +、-、 *、/ 表示加、减、 乘、除运算。 当参与 / 运算的两个操作数都是整数时, 表示整数除法;否则, 表示浮点除法。 整数的求余操作(有时称为取模) 用 % 表示。例如,15/2 等于 7 , 15%2 等于 1 , 15.0/2 等于 7.50
整数被 0 除将会产生一个异常, 而浮点数被 0 除将会得到无穷大或 NaN 结果
5.1 数据类型之间的转换
6 个实心箭头,表示无信息丢失的转换;有 3 个虚箭头, 表示可能有精度
损失的转换
当使用数值进行二元操作时(先要将两个操作数转换为同一种类型,然后再进行计算。
- 如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。
- 否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。
- 否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。
- 否则, 两个操作数都将被转换为 int 类型。
5.2 强制类型转换
强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。例如:
double x *=9.997;
int nx = (int) x;
这样, 变量 nx 的值为 9。强制类型转换通过截断小数部分将浮点值转换为整型
5.3 其他
可以在赋值中使用二元运算符,这是一种很方便的简写形式。例如, X += 4;
等价于:x = x + 4; (一般地, 要把运算符放在 = 号左边,如 *= 或 %=)。
在 Java 中, 借鉴了 C 和 C++的做法,也提供了自增、 自减运算符: n++ 将变量 n 的当前值加 1, n-- 则将 n 的值减 1。例 如, 以下代码:
int n = 12;
n++;
将 n 的值改为 13。
由于这些运算符会改变变量的值,所以它们的操作数不能是数值。例如, 4++ 就不是一个合法的语句
int m = 7;
int n = 7;
int a = 2 * ++m; // now a is 16, m is 8
int b = 2 * n++; // now b is 14, n is 8
Java 沿用了 C++ 的做法,使用 && 表示逻辑“ 与” 运算符,使用丨| 表示逻辑“ 或” 运算符。从 != 运算符可以想到,感叹号!就是逻辑非运算符
Java 支持三元操作符?:,这个操作符有时很有用。如果条件为 true, 下面的
表达式condition ? expression1 : expression2
就为第一个表达式的值,否则计算为第二个表达式的值。
例如, x < y ? x : y
会返回 x 和 y 中较小的一个
运算符优先级
6. 其他与C++的区别
数组