java 学习原理篇 |java 程序运行套路

本贴最后更新于 1530 天前,其中的信息可能已经时过境迁

我们生来平等

🐶 :寺水, 你说, 我们都是一样的吗?
🐱 :从正态分布来看的话,除去前面和后面的,大多数人,生来差别并不大,可以简单认为,在出生那一刻是平等的.
    人生忽然已过二十多载.从人生来看,再回到起跑线上,已是不太现实了,但是对于 Java 学习来说,我们都才学会了 HelloWorld,现在是在同一个位置开始,在这里,我们维护了一份
寺水的技能包
在这里可以,可以看到我们已经走过的路和掌握的知识点.生来平笔,而后又拉开了差距,其中很大一部分原因是归纳,总结,转化的欠缺.所以,有了这个技能包,我们可以时常返回来看一下.

人鬼情未了

🐶 :寺水,你说,人鬼能在一起吗?
🐱 :按道理讲,正常来说是不可以,但可能会在某个条件下得以再续前缘.比如某个月圆之时,比如某个地点. 一如我们写的代码,只有通过某个命令来触发,转换,才能让计算机执行.
image.png
相信上面这个图,大家估计都见过很多次了,这里拿出来,和大家聊一下抽象思维. 以前写过一篇:

当领导说要提升能力时,实际上想让你提升什么呢?

    这里的人鬼情未了,我们为人, 电脑为鬼,那我们需要一些特殊的转换器,来使我们和电脑能够沟通.在以后的两个不同的系统进行交互的时候, 我们也可以戏成为"人鬼情未了",如前端通过 http 调用后端接口, 两个不同的后端服务通过 dubbo 交互. 虚拟机中方法之间相互的调用.再如生活当中,两个独立的人,得通过语言/肢体动作沟通.很多很多, 我们都可以抽象成人鬼情未了.
    再来说到 java 上. 在抽象了之后,我们就要提炼各种元素, 然后用一个方法去转换一下,整个过程描述如下:
    先是从给人看的 Hello.java, 通过 javac 给转化成给 JVM 看的 Hello.class ,然后再转给电脑去运行.
    这里我们提炼出来的元素有:人,JVM, 电脑,Hello.java 源文件.提炼出的方法有: javac 转换, java 转换,
Hello.class = javac 转换(Hello.java)
java 转换(Hello.class)
    这是一个最基本的流程,在此之上的万变不会离其根本,比如用 idea 来执行 javac 和 java , 或者用命令行执行 javac 和 java,或者如我们上篇应用文中所演示,直接用 java 去执行 Hello.java, 其实这个是在内存中进行编译,然后进行执行的. 当我们把握了这些基本点的时候,就有了排查错误的思路.

磕磕绊绊终终成正果

🐱 : 唉,终究是人鬼殊途,要在一起太难了,就像最近看的 < 斗罗大陆 > 人想和魂兽在一起,中间要经 历的太多了.
🐶 :寺水呀, 其实没有哪条路是轻松的,就像我们和电脑,想让电脑做出我们想要输出/运行结果,就是面说的 javac/java 这几步,哪一步错了都不行.

    这里会引发一个哲学问题,要看清自己的位置. 这句话, 不仅仅是提醒我们要在人生中思考这个问题,在写代码,调程序的时候,要认清我们的位置,报错了不要慌. 觉着冷静,大胆假设,小心求证!

    还是以上篇输出 HelloWorld 为例(再复杂的逻辑,也是由这样简单的逻辑一点点拼起来的),而且,出问题,只会在方法中出问题,如 javac 中, 现在我们是单文件编译, 后面还会有多文件编译, 如 java 中, 现在是单文件运行, 后面会有带上 classpath 的运行, 所以,我们要明白是哪个过程出了问题, 然后再根据错误信息,去定义问题.以编译时错误为例:

public class Hello{

	public static void main(String[] args){
		System.out.println("你好,寺水")
	}
}

image.png
    以上图为例, 虽然说是没有达到预期的结果,但是也给了我们很丰富的提示. 这里我们需要注意上图标识出的三个地方,
1.javac Hello.java 这个是哪一阶段,对哪些元素操作出现的问题, 在这里是命令问题,放到代码里面可能就是某个类的某个方法出了问题. 这就是上面那个很关键的问题, 弄清楚我们的定位!

2.Hello.java:4 这个就是再详细的定位了, 直接定位到了是哪一行的代码出了问题, 是 Hello.java 这个文件的第 4 行出了问题
3. 需要";" System.out.xxxxxx: 这个是错误信息. 也叫错误上下文信息,给了一些参考意见.注意这里的措辞, 是参考意见,具体是不是这个错,还得我们实际看看代码才知道.

     这个例子,大家可以理解为, 是对前面模仿学习的一个阐述,在后面,我们也还会不断再提及这些, 让这个方法论更为清晰. 要坚信,任何错误,都是纸老虎,我们一定可以解决的!

大道至简,一生二,二生三

    再复杂的程序也是由一个一个的方法这样组装起来的.运行不起来的代码/出问题的代码,每次也只会在某一行抛出问题,所以, 我们就要依据错误信息,再复杂的应用,错误信息也就和上面类似,大家不要被吓住了, java 程序运行, 就这两个方法,javac, java, 错误信息,也就长这个样子, 就是内容长短不一, 所以,沉着冷静,就能做到动刀甚微,但问题已解!

本文思考

1.javac 如何编译多文件?
2.java 命令如何运行多个文件?

推荐阅读

java 学习应用篇 | 离不开的 HelloWorld

java 学习应用篇 | 环境变量的应用

java 学习原理篇 | 多用户及环境变量

java 学习应用篇 |windows 安装 JDK 及配置环境变量

和大家聊一聊学习(二)-如何去模仿学习

关于小刀

1。自封的初级 java 劝退师
2。自封的 java 交流群管理员
3。自封的 java 学习微信客服小哥
4。自封的微信号:best396975802

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8214 回帖
1 操作
xiaodaojava 在 2020-09-26 15:53:20 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...