Java 简单入门与个人学习心得分享
最近陆陆续续写了几篇小文章,练练手感,但自我觉得写得太粗糙了。我只能把原因归于平时学习紧张,不过我还是会尽量保证质量的!起码等到放假的时候我就把所有文章整理一次。重新弄起这个公众号的原因很简单,一方面是为了记录学校所教的知识,巩固自己的知识,另一方面也希望可以帮助到有需要的同学。
这周主要是Java的一个基础入门,我尽量不去写得太啰嗦,只会把重点给记录一下,在分享知识笔记之前我顺带说说几点我学习的心得:
- 拒绝零碎的知识获取。这点是因为我看很多人(包括我自己)喜欢直接Google拿题目的答案或是学习一个知识点,通常搜索引擎给出来的是CSDN的网页(这类行为我统称面向CSDN编程)。我觉得这不是一个好的习惯,我更加喜欢自己去翻阅书籍,对于一些api的用法直接去查手册,而不是过度依赖别人二次整理的知识(往往很多都参差不齐)同时我认为出版成册的书籍更凝聚着作者的思考,而单篇的文章是零碎的知识点,除非你很擅长将碎片拼凑,否则我还是认为看书是更好的。
- 最好能先自己独立思考再与他人交流,构建自己的思考模式,而不是照搬别人的答案。我认为这点很重要,因为出来工作的话,主要还是自己工作,其次是与同事协作。但若无法独立完成工作,与同事协作就无从说起。
- 掌握自学的能力。但这前提是得满足前两点,我所认为是自学绝对不单单是看网站上的博客或是B站上的教程,而更多的是理论+实践的结合。就拿学习Java来说,理论是学习Java的语法,实践是在IDE写一行又一行的代码,查看不同代码输出的结果,尝试诱发异常以及寻找它们的解决办法。自学说白了就是在老师没讲的情况下,自己也能学到知识。这是与他人拉开差距的重要的能力。
- 罗马不是一天建成的,掌握一项技能也不是短时间能速成的。我身边有同学很厉害,可以考前熬夜学会知识,考试也能过。但是,在我看来,学习知识需要脚踏实地,不单单是学会做题,背后的原理也应该弄清楚。这就好比很多人都会写代码,但是代码的质量好不好就是程序员内在的能力了,往往不是不会写代码,而是对操作系统(或者是其他)没有更深入的了解。我也希望我自己,能保持持续学习的好习惯,陆续坚持写作,加油!
事先声明:由于本人并不是编程专家,文章中难免会有错误,若发现哪处出了问题,欢迎在公众号后台留言指出,感谢。
下文正片开始:
(先吐槽一下,老师讲得太慢了)
以下是代码,创建一个名为 App.java 的文件,将下面的代码拷贝到 App.java。
1 | public class App { |
运行这个Java程序有多种方法,最简单的莫过于在IDE内运行。但是我这里还原老师课堂上的办法:从命令行编译并运行Java程序。
首先需要打开一个终端窗口(不知道这是啥的,请自行Google),进入到存放App.java 的目录下。分别键入以下命令:
1 | javac App.java |
第一条语句是编译源代码,输入完之后,目录下会出现 App.class 文件。之后第二条语句就是运行我们编译好的文件。
我们现在来一点点解读代码:
Java是一门面向对象的语言,所以用Java编写的所有代码都位于某个类的内部。类(class)可以比作构造对象的模版或蓝图。由类构造(construct)对象的过程称为创建类的实例(instance)。
在我们前面的代码中,整个文件只能有一个 public 开头的类,否则程序会出错。
1 | public class App { |
而普通的类以 class开头,虽然很多时候,会用不同的文件来存放每一个不同的类。(扩充阅读)
注意看,在我们 App 类中,有一个名为 main 的方法,这将会是我们的程序入口,即程序会从这里开始执行。而这个main方法一般都定义如下:
1 | public static void main(String[] args) { |
一般IDE都会有快捷缩写可以直接打出来,倒不必死记硬背。(比如IDEA可以用psvm打出)
1 | public class App { |
在main方法中,我们用下面这条语句创建了一个名为 student01 对象。
1 | Student student01 = new Student("XiaoMing", "XM001", 18); |
其实我们可以分开来写,在有些情况下会很有用,
1 | Student student01; // 声明一个对象,Student指明对象的类型,student01则是对象的名称 |
其中关键字 new 用来创建一个对象,我们将这叫做实例化。
注意,Student() 括号里带了参数,这实际上我们是在调用 Student 类的构造方法来初始化对象(稍后细说)
1 | student01.getName() |
这是我们调用了student01对象的成员方法 getName()
由于这个方法会返回一个String类型的值,所以我们要声明一个String类型名为name的变量来接收。
1 | System.out.println(name); |
上面这条语句将会把name变量输出,注意这跟Python中的不太一样。
在我们Student类中,定义了三个成员变量:
1 | private String name; |
private 称为访问控制修饰符,用来保护对类、变量、方法和构造方法的访问。Java有4种不同的访问权限:
- default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- public : 对所有类可见。使用对象:类、接口、变量、方法
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
(来源:https://www.runoob.com/java/java-modifier-types.html)
1 | public Student() { |
接下来,介绍Java中的构造方法(构造器),在上面的例子中,
1 | public Student() { |
这是一个无参构造器,我们也可以用无参构造器来创建对象,但是那样我们的成员变量会被设置为默认值。
1 | Student student01 = new Student(); |
其中,数值型数据会被设置为 0、 布尔型数据设置 为 false、 所有对象变量将设置为 null。如果在编写一个类时没有编写构造器, 那么系统就会提供一个无参数构造器。 这个构造器将所有的实例域设置为默认值。 (引用自Java核心技术 卷1)
1 | public String getName() { |
这两个函数的用途是为了获取成员变量,因为我们将name设置为private,所以我们在其他类是无法调用类对象的这个成员变量的,所以我们通过 getName() 方法来获取,setName() 方法来设置name的值。
基本的 Java 就介绍到这里,之后的文章会更加注重于一些 Java这门语言的细节。欢迎各位朋友关注。