Java的基本程序设计结构
该文借鉴Java核心技术卷I 和Java核心技术卷II,并且结合自己的想法和理解一起编写。但是希望在学习这篇文章之前,有过Java基础部分的了解或有学习过其他的编程语言。会更容易理解。这里并不会讲Java发展史这些东西。我们直接从Java上手开始描述。
1. 下载JDK(编写代码的基础环境)
这里并不做过多的叙述。我们如果想编写对应的Java代码,就需要有Oracle提供的一套Java开发环境。也就是JDK。JDK是 Java Development Kit的缩写。这里并不做过多的描述。
不同环境下载不同的JDK。
- 在不同系统上下载JDK
- JDK17 下载环境
在该页面里。我们选择不同系统的不同JDK进行下载。
配置JDK环境请点击 JDK环境配置 这里要比我所描述的清楚简洁,我的本意是做代码的教程。截一大堆图片反而影响代码的观看。
下载Java开发使用到的工具。IDEA。
IntelliJ IDEA下载地址
来到这个页面后,点击中间的按钮,Download
然后我们下载右边的对应的社区版本。也就是免费版本。 当然,如果选择专业版。可以选择破解。也可以选择30天免费试用,也可以选择购买,看个人情况。 社区版也可以满足开发需求。
2. Java的基本程序设计结构
2.1 第一个简单的Java应用程序(Hello World)
public class Test {
public static void main(String[] args) {
System.out.println("We will not use 'Hello, World'");
}
}
这个程序非常简单,他实现了一个功能,向控制台输出一句话 We will not use ‘Hello, World’。
虽然这个程序非常简单,但是所有的Java应用程序,都具有这种结构。因此我们还是值得花费一些时间来研究这个代码本身的内容的。
首先,Java严格区分大小写! 如果你没有遵守这个约束,比如将 main,拼写成了 Main。呢么这个程序将无法正常运行。
下面我们按照书上描述,逐行来看待这个代码。首先我们看见第一个单词,public ,我们需要明确的是,他是一个关键字, 被称为访问修饰符(access modifier), 这些修饰符用于控制程序的其他部分对这段代码的访问级别。这个我们以后会详细的描述。
关键字 class 后面 紧跟类名。Java中定义类名的规范很宽松,名字必须以字母开头,后面可以跟字母和数字任意组合,长度基本没有限制。但是不能使用Java的保留字(如 public class)作为类名。
这里要牵扯到一个标准的命名规范,我们需要养成一个好习惯。 类名是以大写字母开头的名词,如果名字由多个单词组成,则每一个单词的第一个字母都应该为大写。我们称为 驼峰命名法。
举例说明:
hello world ----> HelloWorld
如果我们可以确保源代码没有任何错误,在编译这个源代码之后,会得到一个包含这个类字节码的文件,Java编译器将字节码文件自动的命名为
源文件名称 + .class 即 Test.class ,并且存储在源文件的同一目录下,最后使用 java Test 来运行这个程序。
如何进行文件的编译,在我们目前已知 已有一个文件 名称为 Test.java,
并且确保内的源代码都为正确。以Windows为例,我们cd到该文件所在的目录下,然后使用 javac 来编译这个文件。 比如
javac Test.java
编译完成后,会在同级目录下,存在一个 Test.class 文件。我们使用 java命令来运行他。
java Test
特别强调!!!! 请记住,在运行的时候,一定不要添加扩展名 .class
在运行已编译的程序时,Java虚拟机总是从指定类中的 main 方法的代码开始执行(这里的方法就是Java中的函数)。
- 根据Java语言规范,main方法必须声明为 public
- 在Java中,任何方法代码都用 ‘{’ 为开始,’ } '为结束。
3.我们暂且不去看 static void。在后面会去说。- 现在需要记住的是,每一个Java程序都必须有一个main方法。
下面需要看的是 这样的串代码。
{
System.out.println("We will not use 'hello world'");
}
一对大括号标识方法体的开始与结束。我们上面的方法体里,只书写了一条语句。每一个语句结束后,都需要使用 ‘;’ 来结束。
在这个main方法里,他的功能是将一个文本行输出到控制台上。在这里我们使用了 System.out 对象,并且调用了它的 println方法。 注意, 点号(.) 用于调用方法。 Java使用的通用语法是。
Object.method(parameters)
在这个实例中,调用了println方法,并且传递给他一个字符串参数。这个方法将传递给他的字符串参数显示在控制台上。采用双引号界定字符串。 Java的方法也可以没有参数,也可以有一个或者多个参数。即使一个方法没有参数,也需要使用空括号来表示。例如不带参数的println方法只打印一个空行。
System.out.println();
博客作者小语
其实针对于这里,我感觉并不需要记住太多的专业名词,比如什么System.out对象啊,什么双引号界定字符串啊。 我们只需要死记住一点,凡是你想输出一句话到控制台上,就用
System.out.println();
就对了。呢么输出字符串,也就是一句话,我们需要用双引号括起来。呢么数字并不是字符串类型吧。我们就直接打印数字即可。直接举例说明,很好举一反三的。
{
System.out.println("我是一句话,我是字符串");
System.out.println(11223344);
System.out.println(true);
System.out.println(3.1415926);
}
2.2 Java的注释
注释就不需要作过多的解释了。我们只需要记住一点。凡是被注释表示的内容。都不会被当成源代码编译。也就是说。只是提供给你看的。代码并不会去理会它。
单行注释
// 我是Java里的一个单行注释
单行注释采用 // 两个斜杠来表示,可以注释掉一行的内容。注意,是英文输入法下的状态。
多行注释
/*
我是一个多行注释。
我可以注释很多行。在我内部的东西全部注释。
*/
多行注释采用 /* */ 的方式来注释,我们要写的内容就存在于两个 * 的之间。可以进行换行,所被多行注释包含的所有内容,都将被注释掉。
文档注释
/**
* 我是一个文档注释,通常用在方法或者类上。
*/
记住即可。
2.3 Java的数据类型
首先我们必须要知道的是,Java是一种强类型的语言, 这就意味着,每一个变量必须声明一个数据类型。
在Java中,共有8种基本数据类型。 其中,有 4种整型, 2种浮点型, 1种字符类型,和一种表示真假的数据类型。
2.3.1整数数据类型
整数用于表示没有小数部分的数值。并且允许是负数。 上面有描述道, Java共提供了四种整数数据类型。内容具体如下
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4 字节 | -2 147 483 648 ~ 2 147 483 647 (刚刚超过20亿) |
short | 2 字节 | -32 768 ~ 32 767 |
long | 8 字节 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
byte | 1 字节 | -128 ~ 127 |
在通常情况下,int类型就已经完全可以满足我们平时的需求了,(我实际开发中也是如此。)但是如果想表示更大的数据,比如整个地球的居住人口,就需要使用long类型了。 byte类型和 short类型主要用于特定的应用场合,例如,底层文件处理或者存储空间很宝贵时的大数组。
长整型数值有一个后缀 L 或者 l, 如(10000L)。说白了就是我们的long类型。
2.3.2 浮点数类型
浮点数类型也就是我们平时所说的小数类型。上面也有说到,在Java的基本数据类型中,浮点数类型分为了两种。
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4 字节 | 大约 ± 3.402 823 47E + 38F (有效位数为 6~7位) |
double | 8 字节 | 大约 ± 1.797 693 134 862 315 70E + 308 (有效位数15位) |
double表示这种类型的数值精度是 float类型的大约两倍。有人称之为双精度数值。 其实在很多情况下,我们都使用double 来作为我们浮点数的基本数据类型。很少的情况下去使用 float数据类型。
float数据类型在数字结尾有一个 F,或者 f。如果不加的情况下,默认总是为 double 数据类型的。
2.3.3 char 数据类型
暂做跳过
2.3.4 boolean 类型
什么是boolean类型,其实通俗来说也就是我们说的真假。也就是(true, false)。
它通常用来判断逻辑条件。需要注意的是,整型值和布尔值之间不能进行相互转换。
2.3 变量与常量
基本上与所有的程序设计语言一样,Java也会使用变量来存储值。常量就是值不变的变量。
2.3.1 声明变量
在Java中,每一个变量都有一个类型。这也是我们之前说过的(Java是一种强类型语言) 先制定变量的类型,然后是变量名称。这里我们和书上一样,列举一些变量声明的示例.
double salary; // 声明一个浮点数类型的变量。变量名称为 salary
int number; // 声明一个整数类型的变量,变量名称是 number
boolean done; // 声明一个布尔类型的变量,变量名称为 done
我们可以看到的是,每一个声明都以 分号结尾(;),因为声明是一条完整的Java语句。而所有的Java语句结尾都必须以分号结束。所以这里分号是必需品。
变量名的命名规范。
- 变量名称必须是以字母开头,并且由字母或数字构成的序列。需要注意的是,与大多数程序设计语言相比,Java中 字母 和 数字 的范围更大。字母包括 A - Z, a - z , _ , $, 等很多内容。
- 但是空格不能出现在变量名称里。
- Java不允许使用保留字作为变量名。
- Java严格区分大小写。
我们可以在一行内,声明多个同类型的Java变量。
int a, b, c, d, e;
他们之间使用小写的 ’ , ’ 隔开。不过并不提倡这种风格。逐一的声明每一个变量可以提高程序代码的可读性。
2.3.2 变量的初始化
在对一个变量进行声明后,必须采用赋值语句对变量进行显式初始化。千万不要去使用未初始化的变量的值。 比如。
{
int number;
System.out.println(number); // java: 可能尚未初始化变量 number
}
会产生上述代码注释后的错误。Java编译器并不会允许这样的内容出现。
要想对一个已经声明过的变量进行赋值,就需要将变量名放在等号左侧,在把一个适合取值的Java表达式放在等号的右侧。如下
int number;
number = 20;
// 又或者在声明变量的时候直接进行赋值。
int num = 20;
特别注意的是,从Java10开始,对于局部变量,如果可以从变量的初始值推断出它的类型,就不需要声明类型。只需要使用关键字 var ,而无需指定类型。
也就是说, var a = “我是一个字符串”; 即可。
2.3.3 常量
在Java中,使用关键字 final 来表示常量。比如
public class Test {
public static void main(String[] args) {
final double PI = 3.1415926535;
double radius = 5;
System.out.println((PI * (radius * radius))); // 打印圆的面积
}
}
关键字 final 表示这个变量只能被赋值一次, 一旦被赋值后, 就不能够在更改这个常量值了。在习惯上,常量名使用全大写来表示,如果有空格的情况下,我们使用下划线来代替(_)。
在Java中, 经常希望某个常量可以在一个类的多个方法中使用,通常将这些常量称为类常量
可以使用关键字,static final 设置一个类常量。示例说明。
public class Test {
static final double PI = 3.1415926535;
public static void main(String[] args) {
double radius = 5;
System.out.println((PI * (radius * radius))); // 打印圆的面积
}
}
可以看到,我们把类常量,声明到了main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且一个常量一旦被声明为public 呢么其他类的方法也可以使用这个常量。
2.3.4 枚举类型。
有时候,变量的取值只在一个有限的集合内。例如,销售服装或者披萨只有 小,中,大和超大这四种尺寸。当然,可以将这些尺寸分别编码为 1, 2, 3, 4 或者 S, M, L, X。但这种设置很容易出错。很可能在变量中保存的是一个错误值。如(0或者m)。
针对于这种情况。可以自定义枚举类型。枚举类型包括有限个命名的值。例如。
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
// 现在可以声明这种类型的变量
Size size = Size.MEDIUM;
Size类型的变量只能存储这个类型声明中给定的某个枚举值。或者特殊值 null, null 表示这个变量类型没有设置任何的值。
有关于枚举类型的详细内容以后在说,现在大致了解即可。
2.4 运算符
运算符用于连接值, 在后面可以看到。Java提供了一组丰富的算数和逻辑运算符以及数学函数等内容。