前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习原理篇|java程序运行套路

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

作者头像
微笑的小小刀
发布2020-09-29 11:09:23
4560
发布2020-09-29 11:09:23
举报
文章被收录于专栏:java技术大本营java技术大本营

我们生来平等

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

人鬼情未了

? :寺水,你说,人鬼能在一起吗? ? :按道理讲,正常来说是不可以,但可能会在某个条件下得以再续前缘.比如某个月圆之时,比如某个地点. 一如我们写的代码,只有通过某个命令来触发,转换,才能让计算机执行.

相信上面这个图,大家估计都见过很多次了,这里拿出来,和大家聊一下抽象思维. 以前写过一篇:

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

这里的人鬼情未了,我们为人, 电脑为鬼,那我们需要一些特殊的转换器,来使我们和电脑能够沟通.在以后的两个不同的系统进行交互的时候, 我们也可以戏成为"人鬼情未了",如前端通过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的运行, 所以,我们要明白是哪个过程出了问题, 然后再根据错误信息,去定义问题.以编译时错误为例:

代码语言:javascript
复制
public class Hello{

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

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

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

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

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

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

本文思考

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 人鬼情未了
  • 磕磕绊绊终终成正果
  • 大道至简,一生二,二生三
  • 本文思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档