Java菜鸟起飞日记-每天五分钟(Java的基本程序设计结构第一部分)

本文从HelloWorld示例入手,介绍了Java基本程序结构、命名规范、数据类型、变量声明及初始化等内容,适合Java初学者。

昨天的第一篇博客,反响一般,可能是因为我水平有限,或者说不是很成体系的写法。不过我相信我的博客会越来越好的。昨天看了发明兄的博客,有一些感触,我想我也应该以一个比较系统化的写法按照一定的思路来。从开始进大学选择了计算机这么一个专业,是偶然。爱上这么一个专业,是使然。既然来过,总还是要留下一点东西的,就如同齐天大圣到此一游的感觉。从今天开始的更新将会以Java核心技术这一本书的思路以学习笔记的方式进行分享,之所以选中这样一本书,可能是因为这是我最早买的一个系列吧,虽然这本书好像并不那么适合初学者,也不如《Header First in Java》那么生动有趣,和《Thinking in Java》相比似乎也没有那么有深度,不过总的来说,这本书好过国内大部分参考书籍。那么今天的第一个篇章,我们就从Java的基本程序设计结构开始吧!

//还是以一个最简单的"Hello World"为例
public class Hello_World{
    public static void main(String[] args){
        System.out.println("Hello World");
    }
}

这个程序很简单,但是所有的Java应用程序都具有这样的结构,所以你首先得明白Java是一个大小写敏感的语言,如果不想被console窗口拒之门外,还是多多注意一下这一点。

关键字public称为访问修饰符(access modifier),它用于控制程序其他部分对这段代码的访问级别。关键字class表明程序中的全部内容都包含在类中,这里你只需要把类当成一个加载程序逻辑的容器。类是构建所有Java应用程序和applet的构建快,Java应用程序中的全部内容都必须放置在类中。

标准的命名规范:类名是以大写字母开头的名词。源代码的文件名必须与公共类的名字相同,并且用.java作为扩展名。如果已经正确命名了这个文件,并且源代码中没有任何录入错误,编译之后就会得到一个包含这个类字节码的文件。Java编译器将字节码文件自动的命名为Hello-World.class,并与源文件存储在同一个目录下。运行编译程序的时候,Java虚拟机将从指定类中的main方法开始执行(方法类似函数),类的源文件中必须包含一个main方法,作为程序进入的入口,总的来说和C中的函数调用是一个道理。
至于源代码中的{},是用来划分程序的各个部分(块)。Java中的所有函数都属于某个类的方法,而不是成员函数。因此Java中的main方法必须有一个外科类。Java中的main方法必须是静态的,不过main方法没有给操作系统返回“退出代码”,如果main方法正常退出,那么退出代码为0,表示成功运行。如果希望终止程序时返回其他的代码,那就需要调用System.exit方法。在Java中,每个句子必须用分号结束。回车不是语句结束的标志。

在上述代码中,在main方法体重,只有一个语句,作用是将 一个文本行输出到一个控制台上。在这里使用了System.out对象,并调用了它的println方法,点号(.),用于调用方法。Java的通用语法是object.method(parameters),等价于函数调用。

注释:和C一样,//表示单行注释,//表示多行注释,//注释不能嵌套

数据类型,Java是一种强类型语言。每一个变量必须声明一种类型。There are 8 primitive types in Java.一共有4种整型,2种浮点类型,1种表示Unicode编码的字符单元类型char和1种用于表示针织的boolean类型。Java有一个能表示任意精度的算术包,通常成为”大数值“,但它是一个Java对象而非类型,这一点大家需要格外注意。

byte和short类型主要用于特定的应用场合,例如底层的文件处理或者需要控制占用存储空间量的大数组

有的人可能会问,为什么Java是无视平台的?有一个比较很重要的原因是,在Java中,整型的范围与运行Java代码的机器无关。这就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同操作系统之间进行移植给程序员带来的诸多问题。Java中每一种数据类型的取值范围是固定的。

大家需要注意一点,Java没有任何无符号类型。

说到变量,可能很多人会比较喜欢,一行里面定义所有的变量,并不提倡这样的方法,毕竟逐一声明每一个变量可以提高程序的可读性。并且在声明变量之后,必须用赋值语句对变量进行显式初始化。给大家推荐一种比较好的程序编写风格,我们可以把变量的声明尽可能地靠近变量第一次使用的地方。

关键字final表示这个变量只能被赋值1次,并且习惯上,常量名使用全大写。需要注意的是类常量的定义位于main方法的外部。

在运算符这一块,我们需要注意证书被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。并且Java支持三元操作符?:。当条件为真时计算第1个表达式,否则计算第二个表达式。

位运算符后面会专门写一篇文章来记录,这里暂时不详谈。

使用Math类的函数,只需要在源文件的顶部加上 import static java.lang.Math.*;

两个不同数值类型的数值进行二元操作,如果两个操作数种有一个double类型,另一个操作数就会转换为double型,否则,如果其中有一个操作数是float类型,另一个操作数将会转换成为float类型,否则,如果其中一个操作数是long类型,另一个操作数将会转换为float类型,否则两个操作数都将被转换为int类型。强制类型转换通过截断小数部分将浮点值转换为整型。如果想对浮点数进行舍入运算,就需要Math.round方法,但是在调用round方法的时候,仍然需要使用强制i类型转换,因为round方法返回的值是long类型,由于存在信息丢失的可能性,只有使用显式的强制类型转换才能将long类型转换成int类型。如果试图将一个数值从一种类型转换成另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值。

还有一种比较特别的类型叫枚举类型,变量的取值只在一个有限的集合里,这个时候可以自定义枚举类型,包括有限个命名的值。例如:

enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};
Size s = Size.MEDIUM;
Size类型的变量只能存储在这个类型生命中给定的某个枚举值,或者null值,null表示这个变量没有设置任何的值。

这篇博客,理论太多比较的枯燥,在下才疏学浅,不知道应该怎样去写出一片生动形象的博客,所有就写成了这样一篇学习笔记,见笑了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值