最近陆陆续续写了几篇小文章,练练手感,但自我觉得写得太粗糙了。我只能把原因归于平时学习紧张,不过我还是会尽量保证质量的!起码等到放假的时候我就把所有文章整理一次。重新弄起这个公众号的原因很简单,一方面是为了记录学校所教的知识,巩固自己的知识,另一方面也希望可以帮助到有需要的同学。

这周主要是Java的一个基础入门,我尽量不去写得太啰嗦,只会把重点给记录一下,在分享知识笔记之前我顺带说说几点我学习的心得:

  1. 拒绝零碎的知识获取。这点是因为我看很多人(包括我自己)喜欢直接Google拿题目的答案或是学习一个知识点,通常搜索引擎给出来的是CSDN的网页(这类行为我统称面向CSDN编程)。我觉得这不是一个好的习惯,我更加喜欢自己去翻阅书籍,对于一些api的用法直接去查手册,而不是过度依赖别人二次整理的知识(往往很多都参差不齐)同时我认为出版成册的书籍更凝聚着作者的思考,而单篇的文章是零碎的知识点,除非你很擅长将碎片拼凑,否则我还是认为看书是更好的。
  2. 最好能先自己独立思考再与他人交流,构建自己的思考模式,而不是照搬别人的答案。我认为这点很重要,因为出来工作的话,主要还是自己工作,其次是与同事协作。但若无法独立完成工作,与同事协作就无从说起。
  3. 掌握自学的能力。但这前提是得满足前两点,我所认为是自学绝对不单单是看网站上的博客或是B站上的教程,而更多的是理论+实践的结合。就拿学习Java来说,理论是学习Java的语法,实践是在IDE写一行又一行的代码,查看不同代码输出的结果,尝试诱发异常以及寻找它们的解决办法。自学说白了就是在老师没讲的情况下,自己也能学到知识。这是与他人拉开差距的重要的能力。
  4. 罗马不是一天建成的,掌握一项技能也不是短时间能速成的。我身边有同学很厉害,可以考前熬夜学会知识,考试也能过。但是,在我看来,学习知识需要脚踏实地,不单单是学会做题,背后的原理也应该弄清楚。这就好比很多人都会写代码,但是代码的质量好不好就是程序员内在的能力了,往往不是不会写代码,而是对操作系统(或者是其他)没有更深入的了解。我也希望我自己,能保持持续学习的好习惯,陆续坚持写作,加油!

事先声明:由于本人并不是编程专家,文章中难免会有错误,若发现哪处出了问题,欢迎在公众号后台留言指出,感谢。

下文正片开始:

(先吐槽一下,老师讲得太慢了)

以下是代码,创建一个名为 App.java 的文件,将下面的代码拷贝到 App.java。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class App {
public static void main(String[] args) {
Student student01 = new Student("XiaoMing", "XM001", 18);
String name = student01.getName();
System.out.println(name);
}
}

class Student
{
private String name;
private String id;
private int age;

public Student() {

}

public Student(String name, String id, int age) {
this.name = name;
this.id = id;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

运行这个Java程序有多种方法,最简单的莫过于在IDE内运行。但是我这里还原老师课堂上的办法:从命令行编译并运行Java程序。

首先需要打开一个终端窗口(不知道这是啥的,请自行Google),进入到存放App.java 的目录下。分别键入以下命令:

1
2
javac App.java
java App

第一条语句是编译源代码,输入完之后,目录下会出现 App.class 文件。之后第二条语句就是运行我们编译好的文件。

我们现在来一点点解读代码:

Java是一门面向对象的语言,所以用Java编写的所有代码都位于某个类的内部。类(class)可以比作构造对象的模版或蓝图。由类构造(construct)对象的过程称为创建类的实例(instance)。

在我们前面的代码中,整个文件只能有一个 public 开头的类,否则程序会出错。

1
2
3
4
5
6
7
8
9
public class App {
public static void main(String[] args) {
...
}
}
class Student
{
...
}

而普通的类以 class开头,虽然很多时候,会用不同的文件来存放每一个不同的类。(扩充阅读

注意看,在我们 App 类中,有一个名为 main 的方法,这将会是我们的程序入口,即程序会从这里开始执行。而这个main方法一般都定义如下:

1
2
3
public static void main(String[] args) {

}

一般IDE都会有快捷缩写可以直接打出来,倒不必死记硬背。(比如IDEA可以用psvm打出)

1
2
3
4
5
6
7
public class App {
public static void main(String[] args) {
Student student01 = new Student("XiaoMing", "XM001", 18);
String name = student01.getName();
System.out.println(name);
}
}

在main方法中,我们用下面这条语句创建了一个名为 student01 对象。

1
Student student01 = new Student("XiaoMing", "XM001", 18);

其实我们可以分开来写,在有些情况下会很有用,

1
2
Student student01;	// 声明一个对象,Student指明对象的类型,student01则是对象的名称
student01 = new Student("XiaoMing", "XM001", 18);

其中关键字 new 用来创建一个对象,我们将这叫做实例化。

注意,Student() 括号里带了参数,这实际上我们是在调用 Student 类的构造方法来初始化对象(稍后细说)

1
student01.getName()

这是我们调用了student01对象的成员方法 getName()

由于这个方法会返回一个String类型的值,所以我们要声明一个String类型名为name的变量来接收。

1
System.out.println(name);

上面这条语句将会把name变量输出,注意这跟Python中的不太一样。

在我们Student类中,定义了三个成员变量:

1
2
3
private String name;
private String id;
private int age;

private 称为访问控制修饰符,用来保护对类、变量、方法和构造方法的访问。Java有4种不同的访问权限:

  • default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  • public : 对所有类可见。使用对象:类、接口、变量、方法
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

(来源:https://www.runoob.com/java/java-modifier-types.html)

1
2
3
4
5
6
7
8
9
public Student() {

}

public Student(String name, String id, int age) {
this.name = name;
this.id = id;
this.age = age;
}

接下来,介绍Java中的构造方法(构造器),在上面的例子中,

1
2
3
public Student() {

}

这是一个无参构造器,我们也可以用无参构造器来创建对象,但是那样我们的成员变量会被设置为默认值。

1
Student student01 = new Student();

其中,数值型数据会被设置为 0、 布尔型数据设置 为 false、 所有对象变量将设置为 null。如果在编写一个类时没有编写构造器, 那么系统就会提供一个无参数构造器。 这个构造器将所有的实例域设置为默认值。 (引用自Java核心技术 卷1)

1
2
3
4
5
6
7
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

这两个函数的用途是为了获取成员变量,因为我们将name设置为private,所以我们在其他类是无法调用类对象的这个成员变量的,所以我们通过 getName() 方法来获取,setName() 方法来设置name的值。

基本的 Java 就介绍到这里,之后的文章会更加注重于一些 Java这门语言的细节。欢迎各位朋友关注。