Java入门篇(二)——Java语言基础(上)

时间:2022-04-24 20:03:37

因各类原因更换博客,新博客地址:https://blog.csdn.net/adamjwh

 

  本篇我们开始进入Java的学习,首先在学习如何编写Java语言前要先了解Java程序的基本结构。

一、Java程序的基本结构

  一个Java程序的基本结构大体可以分为包、类、main()主方法、标识符、关键字、语句和注释等,如下:

 1 package hello;                                                // 定义包
 2 
 3 public class Structure {                                    // 创建类
 4 
 5     static int num = 1;                                // 定义类的成员变量
 6     
 7     public static void main(String[] args) {                // 定义主方法
 8         
 9         String str = "http://www.cnblogs.com/adamjwh/";        // 定义局部变量
10         
11         System.out.println(num);                            // 输出成员变量的值
12         
13         System.out.println(str);                            // 输出局部变量的值
14         
15     }
16 
17 }

  我们来逐一分析一下每一条语句,过多的概念我就不详述了,只说最基本的。

  第一条语句“package hello;”定义了Java程序中类所在的包是hello,hello是一个标识符,由程序员自己定义,package是关键字。注意:标识符和关键字区分大小写。

  第二条语句“public class Structure”用于创建一个名为Structure的类,类名由程序员自己定义,其中public及class是关键字,关于public和static的用法会在后续篇章中提到。

  第三条语句“static int num = 1;”定义了类的成员变量,static和int都是关键字,而num是一个标识符,由程序员自己定义。

  第四条语句“public static void main(String[] args)”是类的主方法,Java程序从这里开始执行,除了可以将“String[] args”改为“String args[]”外,不可改变本条语句的任何部分。

  第五条语句“String str = "http://www.cnblogs.com/adamjwh”是在主方法中定义了一个局部变量,String是一个类,用于创建字符串对象(说简单点就是说,如果你想创建一条字符串,就使用String类),str是局部变量的名称,为程序员自己定义的一个标识符,而后面引号中的网址是局部变量str的值,“=”为赋值运算符。

  第六条语句“System.out.println(num);”是输出语句,这是输出语句的固定写法,注意区分大小写,输出换行为println,不换行为print。

  第七条语句同样为输出语句,执行将输出str的值,即http://www.cnblogs.com/adamjwh。

二、标识符和关键字

  那么说了这么多是不是觉得好复杂啊,标识符、关键字都是什么。其实标识符可以简单理解为一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。

  例如,定义一个变量i并赋值为100,那么我们可以写出如下代码: int i = 100; 

  这就是一个典型的赋值语句,其中int是定义一个整型数,i就是标识符,由程序员自己起名,但有一定的规则,简单点来说就是由字母、数字、下划线和美元符号组成,第一个字符不能为数字,并且区分大小写,不能为关键字或保留字。

  我们可以举几个例子看看,合法标识符如name、user、_u8080、tc_bvt等等,非法标识符如5work、7fix等等。

  上面提到的关键字和保留字,是Java语言中已经被赋予特定意义的一组单词,不可作为标识符使用,比如上面代码中的int就是关键字,至于java的关键字有哪些我就不过多的描述了,毕竟网上有很多很详细的介绍,我们还是主要从代码入手。

 三、基本数据类型

  了解了上面的Java程序的基本结构后是不是对Java有一定的感觉了呢,那么编写程序肯定要用到许许多多数据,那Java中的数据又是如何分类及编写的呢?

  在Java中有8种数据类型,其中6种是数值类型,另外两种分别是字符类型和布尔类型,如下:

 1 public class Type {
 2     
 3     /* 整数类型 */
 4     byte myByte = 45;                // byte型变量,占一个字节,取值范围-128~127
 5     short myShort = 100;            // short型变量,也即短整型,占两个字节,取值范围-32768~32767
 6     int myInt = 450;                // int型变量,也即整型,占四个字节,取值范围-2147483648~2147483647
 7     long myLong = 45261636L;        // long型变量,也即长整型,占八个字节,取值范围-9223372036854775808~9223372036854775807
 8     
 9     /* 浮点类型 */
10     float myFloat = 15.621F;        // 单精度浮点型,占四个字节,结尾必须加'F'或'f',如果不加自动定义为double型变量,取值范围1.4E-45~3.4028235E-38
11     double myDouble = 15.621D;        // 双精度浮点型,占八个字节,结尾可以加'D'或'd',也可不加,取值范围4.9E-324~1.7976931348623157E-308
12     
13     /* 字符类型 */ 
14     char myChar = 'a';                // 字符类型变量,用于存储单个字符,占两个字节,需用单引号括起来
15     
16     /* 布尔类型 */
17     boolean myBoolean = true;        // 布尔类型又称逻辑类型,只有true和false两个值,分别代表“真”和“假”
18 }

  当我们要定义一个变量的时候,先判断变量的数据类型,再从上方8种类型中选择合适的类型使用即可,定义方法就如上方代码,以“[数据类型] [变量名] = [值]”的形式即可,其中变量名需自起名,满足上面提到的标识符的几个条件。

  在字符类型中还有一种特殊的字符,以反斜线“\”开头,后跟一个或多个字符,具有特定的含义,叫做转义字符。

转义字符 含义
\ddd 1~3位八进制数据所表示的字符,如\456
\dxxxx 4位十六进制所表示的字符,如\0051
\' 单引号字符
\\ 反斜杠字符
\t 垂直制表符,将光标移到下一个制表符的位置
\r 回车
\n 换行
\b 退格
\f 换页

 

 

 

 

 

 

 

 

  

  转义字符一般多用于输出,比如“\n”回车换行,“\t”移到下一制表位,如果想要输出单引号、双引号、下划线等字符时,也需要用转义字符进行输出。

四、变量与常量

  刚刚我们提到了变量,接下来就说一下什么是变量和常量。在程序执行过程中,其值不能改变的称为常量,其值能改变的称为变量。变量与常量的声明都必须使用合法的标识符,所有变量与常量只有在声明之后才能使用。下面举一个声明变量的例子:

int age; // 声明int型变量 
char c = 'J' // 声明char型变量并赋值

  既然叫变量那肯定是能改变的,现在我们对变量进行一下改变试试:

 1 public class Variable {
 2 
 3     public static void main(String[] args) {
 4         int num = 10;                                // 定义一个变量num,并赋给初值10
 5         System.out.println("num的初值为:"+num);        // 输出当前变量num的值为10
 6         
 7         num = 100;                                    // 将100赋给num
 8         System.out.println("num现在的值为:"+num);        // 输出现在变量num的值为100
 9     }
10 
11 }

  上方是一段测试代码,我们首先定义一个变量,起名为num,然后对它赋一个初值10,再对这个变量赋值为100,看两次值的变化,运行结果如下所示:

  Java入门篇(二)——Java语言基础(上)

  由此可以看出变量是在运行过程中其值可以改变。

  而常量在整个程序中只能被赋值一次,需通过final关键字进行限定,如 final double PI = 3.1415926; ,为定义一个常量,名为PI(圆周率),我们如果单独定义一个变量是“double PI = 3.1415926;”,现在定义一个常量就是在double前加一个final关键字进行限定即可。

 

  看到这里,是不是对Java的声明及定义有一些了解了呢?也许在之前大家也都见到了有些变量前有static这个关键字,它有什么用呢?这里就要说的变量的有效范围了。

  变量的有效范围是指程序代码能够访问该变量的区域,若超出变量所在区域访问变量则编译时会出现错误。可分为“成员变量”和“局部变量”。

  在类体中定义的变量被称为成员变量,成员变量在整个类中都有效,分为静态变量和实例变量两种。

class var {
    int x = 45;                 // 定义实例变量
    static int y = 90;        // 定义静态变量
}

  其中x是实例变量,y是静态变量。如果成员变量的类型前面加上static,就被称为静态变量,静态变量的有效范围可以跨类,甚至可达到整个应用程序之内,也可用“类名.静态变量”的方式在其它类中使用(具体会在今后的篇幅中出现,想了解的可先行查阅资料)。

  而在类的方法体中定义的变量(即“{”与“}”之间的声明变量)称之为局部变量。只在当前代码块中有效,简单点来说就是只在其所定义的大括号中有效。下面举一个例子:

 1 public class Val {
 2 
 3     static int times = 3;                                    // 定义成员变量times
 4     public static void main(String[] args) {
 5         int times = 4;                                        // 定义局部变量times
 6         
 7         System.out.println("times的值为:" + times);            // 将times输出
 8         System.out.println("静态变量times的值为:" + Val.times);        // 输出静态变量
 9     }
10 
11 }

  输出结果为:

  Java入门篇(二)——Java语言基础(上)

  从这段代码可以看出,首先在main方法外定义了一个成员变量times,并且是一个静态变量,而在main方法内又定义了一个局部变量times。这里有人就会问了,变量名不是不能相同吗?注意,这里第一个times是成员变量,作用范围是针对于整个类而言,而第二个times是局部变量,只在main方法内有效,所以两个重名并不冲突。但如果我们直接输出times,如第一个输出,输出结果为4,是局部变量起了作用,因为当局部变量与成员变量名字相同时,此时成员变量将被隐藏,即这个成员变量在此方法中暂时失效。如果我们想调用成员变量,需要使用“类名.静态变量”调用,如第二个输出,类名为Val,静态变量名为times,用“Val.times”即可调用静态变量的值为3。

五、代码注释

  注释可以提高程序的可读性,注释包含的文字不会对程序产生任何影响,在Java中,代码注释主要有以下几种:

  1. 单行注释  

  “//”为单行注释标记,从“//”开始到换行为止的所有内容均被注释而被编译器忽略。

// 这是一条单行注释

  2. 多行注释

  “/* */”为多行注释标记,符号“/*”与“*/”之间的所有内容均为注释内容,可以换行。

/*
    注释内容1
    注释内容2
    ......
*/

  在多行注释中可以嵌套单行注释,比如下面的用法是正确的:

/*
    名称:博客园    // 时间:2018-1-20
*/

  但在多行注释中不能嵌套多行注释。

  3. 文档注释

  “/** */”为文档注释标记。符号“/**”与“*/”之间的内容均为文档注释内容。当文档注释出现在任何声明之前时,会被Javadoc文档工具读取作为Javadoc文档内容。格式与多行注释相同。

1 /**
2     * name: Hello World
3     * time: 2018-1-20
4     * author: Adam
5 **/

 

  下一篇将继续介绍Java语言基础中的运算符及类型转换。