大家好,我叫答嗔,从今天起将开启java系列的文章,大家喜欢的话,可以订阅关注哦。
1、一个简单的Java应用程序
下面我们来看一段简单的java应用程序,它只发送一条消息到控制台窗口中。
FirstSimple:
package book.chapter1;
public class FirstSimple {
public static void main(String[] args) {
System.out.println("hello world");
}
}
这个程序虽然简单,但所有的java应用程序都具有这种结构,还是得花时间研究一下,首先java对大小写敏感,比如将main改成大写Main,那么程序将无法运行。
下面逐行解释一下这段代码:
关键字packge表示这段代码将被编译到那个文件下,这里将被编译到book/chaper1目录下,我们可以在工作台的相关项目的bin目录下找到这段代码的编译文件
关键字pakage后面紧跟着编译文件的存放目录。关键字public称为访问修饰符,用于控制其他程序其他部分对这段代码的访问级别。关键字class表明java程序的全部内容都表示在一个类中,这里只需要理解为加载应用程序逻辑的容器,程序逻辑定义了应用程序的行为。class关键字之后紧跟着类的命名,java的类命名规范很宽松,名字必须要以字母开头,后面可以紧跟字母和数字的组合,长度基本没有限制,但是不能以java保留字命名如(class,public)等,package、public、class等属于java保留字。
如果已经正确的命名了这个源文件,且源文件中没有任何录入错误,那么在编译源文件后将得到一个包含这个类的字节码文件,即FirstSimple.class文件,表示你写的代码通过了编译,通过了编译的代码才可以运行。
这段代码运行后控制台上将显示hello world字样,当运行代码时,java虚拟机将从指定类中的main方法开始执行逻辑程序,因此,为了保证应用程序能够运行,类中必须添加一个main方法,其他逻辑封装在其他方法中,并在main方法中调用其他方法。
这段代码中还需要注意的是花括号{},在Java程序中,用花括号{}划分应用程序的各个部分,通常称为块,java中任何方法的代码都用{表示开始,用}表示结束。
我们暂时不去理睬static void关键字,而仅把它当做应用程序必要的部分就行了,现在记住每个类都需要有一个main方法。另外,代码中还有一个;值得注意,它表示一个java语句的结束。这段代码中System.out.println("hello world")表示一个可执行的语句。
程序运行效果:
我们了解了代码的基本结构,是时候关注变量了。
2、变量
认识变量前,我们先来看看数据的概念。
数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。
它不仅指狭义上的数字,还可以是具有一定意义的文字、字母、数字符号的组合、图形、图像、视频、音频等,也是客观事物的属性、数量、位置及其相互关系的抽象表示。例如,“0、1、2…”、“阴、雨、下降、气温”、“学生的档案记录、货物的运输情况”等都是数据。
在计算机系统中,数据以二进制信息单元0、1的形式表示。
那么变量和数据是什么关系呢?变量是数据的一个字典,这个字典包含了数据的类型、名称甚至访问级别和状态等信息。如果没有这个字典,我们根本不知道这个数据表示什么,怎么识别,如何获取等,因此它就像字典一样,可以告诉我们某个字有几画、什么拼音、在哪里等。在代码中,它可以告诉我们这个数据的名称和类型等。
下面来看一段代码:
VariableTest:
package book.chapter1;
public class VerableTest {
public static void main(String[] args) {
int i=10;
int j=20;
int k;
k = i+j;
System.out.println(k);
}
}
这段代码共5个语句,我们来分析一下这几个语句。
int是一个java的保留字,表示一种数据类型,它叫整型类型,后面紧跟数据的名称,这样名称和类型构成了一个数据的字典即变量,现在如果这个变量没有数据那么使用的是
int k;
如果这个变量有数据那么使用的是
int i=10;
int j=20;
最后,对这个两个数据进行相加
k = i+j;
将计算的结果保存在变量k中,然后输出到控制台
这是一个计算两个数的和的逻辑代码
运行结果如下
这里我们了解了变量和数据的关系,我们进一步对变量做出讲述。
如前所述,数据需要变量作为字典,这个字典必须满足一定的规范,这样才能方便程序识别,
在java代码中,局部变量(方法中的变量)使用类型+名称来声明,如VariableTest中
int i=10;
它表示将整型数据10存储在变量i中,这个过程叫做变量的初始化。
变量的类型和名称都没有一个准确的标准,只是变量的名称和类的名称一样,都只能以字母开头,然后跟上字母和数字的组合。
为了提高代码质量,变量的声明规范可以参考以下限制:
1.具有某种意义的声明
这种声明必须对数据的名称做出合理的命名,如圆周率,我们可以使用pi来命名,长度可以使用length来命名。
2.当存在同种类型的数据使用,可以使用名称加下标的方式
这种情况比较常见,如计算两个数的和,可以使用num1和num2,其中num表示number的缩写。
3.当变量表示下标索引时
这种情况在遍历数组是经常使用,用小写英文字母表示如:i,j,k等
改写的计算两个数之和的代码如下
package book.chapter1;
public class VerableTest {
public static void main(String[] args) {
int num1=10;
int num2=20;
int sum;
sum = num1+num2;
System.out.println(sum);
}
}
程序的运行结果是等价的,因为初始化数据是一样的,只是改变了数据的字典
值得注意的是这段代码中的“=”,它是一种运算符,表示赋值,使用
int sum;
声明sum变量时,sum变量中并没有数据,需要对sum变量进行赋值,它的值为两个数的和,即
sum = num1+num2;
如果sum没有被赋值,那么代码是不能运行的
代码会有明显的报错,叫做
java.lang.Error: Unresolved compilation problem:
The local variable sum may not have been initialized
也就是变量sum没有被初始化错误。
所以,变量可以在声明时不被初始化,但是一定要在后面的逻辑中被赋值。
java对于一些特殊的数据,如圆周率、自然底数等亘古不变的数据可以做特殊声明,这类数据只能被赋值一次,并且在接下来的代码中使用这种数据时不允许被修改,这种数据叫做常量。
来看下面的一段代码:
ConstantsTest
package book.chapter1;
public class ConstantsTest {
public static void main(String[] args) {
final double PI = 3.1415926;
System.out.println(PI);
}
}
这段代码虽然简单,但它新增加了一个final关键字和一个double关键字,final关键字表示这个变量只能被赋值一次,double是一个新的数据类型,它叫双精度浮点型类型,是一种基本数据类型。
原则上,常量也是一种变量,因此它的命名规则和变量的命名规则一样,都是不能以数字开头,必须以字母开头然后紧跟子母和数字的组合。
为了提高代码质量,经常将常量的声明规范作以下限制:
1.常量通常在类的成员中作声明
由于常量只允许被赋值一次,因此声明在类中更合理
2.常量名通常采用大写+“_”的组合使用
常量名一般为大写,如P圆周率有一个精度的问题,对于不同的精度可以用相应的单词表示,如:PI_SIMPLE
表示简单的圆周率
规范的ConstantsTest
package book.chapter1;
public class ConstantsTest {
public static final double PI_SIMPLE = 3.1415926;
public static void main(String[] args) {
System.out.println(ConstantsTest.PI_SIMPLE);
}
}
这段代码中PI_SIMPLE作为类ConstantsTest的一个静态成员被初始化
然后再main方法中使用了这个常量。