您的位置:首页 > 编程语言 > Java开发

Java核心技术第3章(1)

2015-09-25 17:44 351 查看

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

本章主要讲述程序设计相关的基本概念(如数据类型,分支以及循环)在Java中的实现方式.

对于一个具有C++编程经验的程序员来说,本章的内容只需要浏览一下,应该重点阅读分布在正文中的C/C++注释.

3.1 一个简单的Java应用程序

下面卡一个最简单的Java应用程序,它只发送一条消息到控制台窗口中:

public class FirstSample {
    public static void main(String[] args) {
        System.out.println("we will use 'hello, world!'");
    }
}
首先Java对大小写敏感,如果出现了大小写拼写错误,那程序将无法运行.

关键字public称为访问修饰符
(access modifier),它用于控制程序的其他部分对这段代码的访问级别.

关键字class表明Java程序中的全部内容都包含在类中.这里,只需要将类作为一个加载程序逻辑的容器,程序逻辑定义了应用程序的行为.

是构建所有Java应用程序和applet的构建块.Java应用程序中的全部内容都必须放置在类中.

关键字class后面紧跟类名.Java中定义类名的规则很宽松.名字必须以字母开头,后面可以跟字母和数字的任意组合.

从类名FirstSample可以看出,标准的命名规范为:类名是以大写字母开头的名字.如果名字由多个单词组成,每一个单词的第一个字母都应该大写.如果名字由多个单词组成,每个单词的第一个字母都应该大写.

源代码的文件名必须与公共类的名字相同,并用.java作为扩展名.因此,存储这段源代码的文件名必须为FirstSample.java .

如果一切正确,在编译这段源代码之后就会得到一个包含这个类字节码的文件.Java编译器将字节码文件自动地命名为FirstSample.class,并与源文件存储在同一个目录下.最后使用下面这行命令运行这个程序:

java FirstSample
当使用

java ClassName
运行编译程序时,Java虚拟机将从指定类中的main函数开始执行,因此为了代码能够执行,在类的源文件中必须包含一个main函数.当然,也可以将用户自定义的函数添加到类中,并且在main函数中调用它们.

需要记住:每个Java应用程序都必须有一个main函数,格式如下所示:

public class ClassName 
{
    public static void main(String[] args)
    {
        program statement
    }
}
C++注释:Java的类与C++的类很相似,但还是有些差异令人困惑.例如Java中的所有函数都属于某个类的方法(标准属于将其称为方法,而不是成员函数).因此,Java中的main方法必须有一个外壳类.C++中的静态成员函数(static member function)定义在类的内部,并且不对对象进行操作.Java中的main方法必须是静态的.最后,与C/C++一样,关键字void表示这个方法没有返回值,那么Java应用程序的退出码为0,表示成功地运行了程序.如果希望在终止程序时返回其他的代码,那就需要调用System.exit方法.

接下来,研究一下这段代码:

{
    System.out.println("we will use 'hello world!'");
}
在这里使用了System.out对象并调用了它的println方法.请注意,点号(.)用于调用方法.Java使用通用语法是:

object.method(parameters)
等价于函数调用.

在这个示例中,调用了println方法并传递给它一个字符串参数.这个方法将传递给它的字符串参数显示在控制台上.然后,终止这个输出行,以便每次调用println都会在新的一行上显示输出.不带参数的println方法只打印一个空行,使用下面的语句:

System.out.println();
注释:System.out还有一个print方法,它在输出后不换行.例如,System.out.print("hello")打印"hello"后不换行,后面的输出紧跟在字符"o"之后.

3.2 注释

在Java中有三种书写注释的方式.

最常用的是使用//

第二种是/*和*/

第三种注释可以用来自动地生成文档,以/**开始,以*/结束.

3.3 数据类型

Java是一种强类型语言,这就意味着必须为每一个变量声明一个类型.在Java中,一种有8种基本类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的额字符类型 char 和1种用于表示真正的 boolean 类型.

注释:Java有一个能够表示任意精度的算术包.通常称为"大数值".虽然被称为大数值,但并不是一种新的Java类型,而是一个Java对象.

3.3.1 整型

Java整型
类型    存储需求    取值范围
int     4字节       -20亿~20亿
short   2字节       -32768~32767
long    8字节       很大很大
byte    1字节       -128~127
在Java中,整型的范围与运行Java代码的机器无关.就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同操作系统之间进行移植给程序员带来的诸多问题.与此相反,C/C++程序需要针对不同的处理器选择最为有效的整型,这样就有可能造成一个在32位处理器上运行很好的C程序在16位系统上运行却发生整数溢出.

长整型数值有一个后缀L,如10000000L.十六进制数值有一个前缀0x(如0xCAFE).八进制有一个前缀0,例如010对应8.

注释:在C/C++中,int 表示的整型与目标平台相关.在8086这样的16位处理器上整型数值占2字节,在32位处理器上占4字节.类似地,在32位处理器上 long 值为4字节,在64位占8字节.在Java中,所有的数值类型占据的字节数量与平台无关.

此外,Java中没有无符号类型(unsigned).

3.3.2 浮点类型

浮点类型用于表示小数部分的数值.在Java中有两种浮点类型:float(4字节)和 double(8字节).

建议不采用 float 类型.

3.3.3 char类型

char 类型用于表示单个字符.

建议不要在程序中使用 char 类型.

3.3.4 boolean 类型

boolean(布尔)类型有两个值:false和true,用来判定逻辑条件.整型值和布尔值之间不能进行相互转换.

注释:在C++中,数值或指针可以代替 boolean 值.0相当于布尔值 false,非0相当于布尔值 true .在Java中则不是这样.因此,Java应用程序员不会遇到下述麻烦:

if (x = 0)      // oops...meant x = 0
在C++中这个测试可以编译运行,其结果总是 false .而在Java中,这个测试将不能通过编译,其原因是整数表达式 x=0 不能转换为布尔值.

3.4 变量

在Java中,每一个变量都属于一种类型.

double salary;
int vacationDays;
long earchPopulation;
boolean done;
变量名必须是一个以字母开头的,由字母或数字构成的序列.

许多程序员将变量名命名为类型名,例如

Box box;
还有一些程序员更加喜欢在变量名前加上前缀"a":

Box aBox;

3.4.1 变量初始化

声明一个变量之后,必须用赋值语句对变量进行显式初始化.

在Java中可以将声明放在代码中的任何地方.

在Java中,变量的声明尽可能地靠近变量第一次使用的地方(类似于C++,尽可能延后变量定义式出现的时间


),这是一种良好的程序编写风格.

注释:C/C++区分变量的声明与定义.例如:

int i = 10;
是一个定义,而

extern int i;
是一个声明.在Java中,不区分变量的声明与定义.

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 Constants2 
{
    public static final double CM_PER_INCH = 2.54;
    public static 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,那么其他类的方法也可以使用这个常量.

注释:const 是Java的保留字,但目前并没有使用.在Java中,必须使用 final 定义常量.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: