积少成多,欢迎大家关注我的微信公众号,共同探讨Java相关技术

今天的重点是:编写源代码、编译、运行、查看成果。除此之外,还需要搭建起与前面学习的知识的联系。

写本文时依据的系统环境是Windows10哦!请悉知!

步步为营

  • 源代码
  • 关于代码的解释
  • 编译
  • 运行
  • 总结

源代码

今天我们编写自己的第一个Java程序。它主要的功能是向控制台输出一个”Hello World!”和一个随机数以及传入的参数args数组的长度。嗯,所有demo的开端,”Hello World!”。代码如下:

import java.util.Random;

public class MyFirstDemo {
public static void main(String [] args) {
System.out.println("Hello World!");
System.out.println(new Random().nextInt());
System.out.println(args.length);
}
}

注意:请不要用Windows自带的记事本编辑,由于Windows的原因会导致程序无法运行

建议下载名叫notepad++的编辑器。把上述代码键入后,保存,并把扩展名改为.java。在Windows中默认不会显示文件的扩展名,具体怎么设置显示扩展名,请参考:https://www.cnblogs.com/lurker-yaojiang/p/10376571.html

注意:保存的文件名,一定要和类名一致。比如类名是MyFirstDemo,那么对应的文件名应该是MyFirstDemo.java,否则可是会报错的哟!

关于代码的解释

首先通过import引入了java.util包中的Random类,该类主要用于生成随机数。在Java中,默认java.lang包是自动导入的,因此包中的类我们可以直接使用。但是如果你要使用当前包以外的其他包中的类,比如你当前在com.baidu.service包中,想要用到com.baidu.dao包中的类,那你就要用import导入了。

接下来用class关键字声明了一个名为MyFirstDemo(或者称作数据类型),并用public修饰符修饰,表示这个类在任何地方都可以被访问

然后定义了一个名为main的方法,其被static修饰,返回类型为void,参数为一个String数组。我们前面讲到过static修饰的方法不依赖具体对象,可以直接通过类名调用。如果你希望你的程序能够独立运行,一个main方法是必须的,它作为整个程序的入口。且其名称只能为main,这是强制规定。

这样就比较好理解了。在进入程序后,对象才会进行创建;所以作为程序入口的main方法,必然是不依赖于具体对象的,也就是说,用static进行修饰是必然的

关于其字符串数组类型的参数,主要是用于接收从控制台输入的值的,稍后的演示中请关注第三个输出值的变化

最后在方法体中输出了三个值,”Hello World!”,一个随机数,字符串数组参数args的长度。

编译

Java是编译型的语言,意味着Java源代码需要进行编译后才可以运行。通过编译器,Java源代码编译成JVM能够认识的字节码文件,这样JVM就能运行我们编写的代码了。这也是Java跨平台的原因,一切依靠JVM,所有的源码都要转成JVM能识别的字节码。所以在接下来你会看见,在我们运行编译之后,会生成一个.class文件。

JVM(Java Virtual Machine),包含于JRE中的Java虚拟机,Java程序运行在这里

闲话少说,我们开始动手吧!请进入你编写的源码文件所在的目录,按下shift键的同时,按下鼠标右键,选择在此处打开Shell窗口(也可能是打开PowerShell窗口)。如下:

输入编译指令javac MyFirstDemo.java。有两个注意点,第一,用的指令是javac,意为java compile;第二,需要跟的是包含扩展名的文件名称,因为要指定要编译的具体文件。按下回车,开始编译,一般请开给你下,按下回车后不会抛出任何错误,如下:

我们打开源文件所在目录,看看是否多了一个.class结尾的文件呢?没错,这就是字节码文件。

可能出现的异常

如果因为你的粗心,可能会造成编译过程出错,可能出现的错误如下:

  • 输入编译指令时,文件名称没有带扩展名,报的错误如下:

  • 文件名称和类名不等时,报的错误如下:

运行

编译完成后,我们离成功就剩最后一步了。接下来,我们继续在Shell(或PowerShell或CMD命令行)中按需键入指令。

不带参数的运行

键入指令java MyFirstDemo,结果如下:

带参数的运行

键入指令java MyFirstDemo -client,结果如下:

注意看第三个输出的值哦!由于我们使用了一个参数,它变成1了哦

需要注意的是,这个命令跟编译的命令也有不同点哦!可能刚开始会混淆,各位老铁一定要细心啊!这个指令,用的是java而不是javac,是运行的意思;另一方面,后面接的是类名,而不是带扩展名的文件名称哦!

总结

本文我们编写了一个能独立运行的简单的Java程序,也是我们的第一个Java程序。依靠最原始的方式,从编写源代码,然后编译,再运行!这一步你一定要亲手做,这样才能更深入的了解Java程序的运行。

在实际的开发中,并不需要这么复杂!

下一节,给大家介绍一款好用的开发集成工具。有了它,你的编程效率能够得到极大的提升。

《Java编程思想》读书笔记-第一个Java程序的更多相关文章

  1. JAVA编程思想读书笔记(五)--多线程

    接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...

  2. JAVA编程思想读书笔记(四)--对象的克隆

    接上篇JAVA编程思想读书笔记(三)--RTTI No1: 类的克隆 public class MyObject implements Cloneable { int i; public MyObje ...

  3. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

  4. JAVA编程思想读书笔记(二)--容器

    接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...

  5. Java编程思想读书笔记之内部类

    现在是够懒得了,放假的时候就想把这篇笔记写出来,一直拖到现在,最近在读<Java编程思想>,我想会做不止这一篇笔记,因为之前面试的时候总会问道一些内部类的问题,那这本书的笔记就从内部类开始 ...

  6. Java编程思想读书笔记(一)【对象导论】

    2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...

  7. <Java编程思想>读书笔记(1)-对象导论、一切都是对象

    1.面向对象编程:OOP (Object-oriented Programming) 2.Alan Kay 总结的面向对象语言5个基本特性: 1) 万物皆为对象 2) 程序是对象的集合,他们通过发送消 ...

  8. Java编程思想读书笔记

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. Java编程思想读书笔记(二)【一切都是对象】

    begin 2018年1月9日17:06:47 第二章 一切都是对象 Java语言假设我们只进行面向对象的程序设计. 2.1 用引用操纵对象 每种编程语言都有自己的操纵内存元素的方式 操纵内存元素的方 ...

  10. Java编程思想—读书笔记(更新中)

    第1章 对象导论 1.4 被隐藏的具体实现 访问控制的原因: 让客户端程序员无法触及他们不应该触及的部分(不是用户解决特定问题所需的接口的一部分) 允许库设计者可以改变类内容的工作方式而不用担心会影响 ...

随机推荐

  1. iOS 底层解析weak的实现原理(包含weak对象的初始化,引用,释放的分析)

    原文 很少有人知道weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组.更多人的人只是知道weak是弱引用,所引用对象的计数器不会加一,并在引用对象被释放 ...

  2. lr12关联,响应乱码

    1.前程贷登录.投标脚本 Action() { //    web_url("登录页", //        "URL=http://120.78.128.25:8765 ...

  3. this应用详解-js原生

    学习记录,以防遗忘,适合新手解惑.老鸟避让! 在微信H5的开发中,很多页面都是简单的一个模型item在加上很多很多数据组成起来的.例如微信朋友圈,仔细观察,他的一个基本模型就是 “头像图片 + 用户昵 ...

  4. 笨办法33while循环

    改了之前的代码,加入while: #coding: utf-8 print("王小狗丑不丑?丑→1:不丑→2") answer = input(">") ...

  5. Mongodb Mysql NoSQL的区别和联系

    MongoDB 什么是MongoDB? MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,皆在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB是一个介于关系数据库和非关系 ...

  6. j2ee期末项目 新闻发布系统需求文档

    1 绪论 1.1 开发背景 现如今社会是信息化的社会,掌握的信息越多越全面越快速的人,就会在各方面的竞争当中,占据优势,正所谓知己知彼百战不殆,信息的不对称性将会是失败的主要诱因之一.信息的时效性越来 ...

  7. egret 添加帧动画

    private showEffect(): void { //加载本地的帧动画资源 RES.getResByUrlNoCache("resource/assets/shenqi_eff.js ...

  8. MySql主从搭建详细步骤

    环境: linux64位,一台机器两个实例,主库3306端口,从库3307端口 步骤: 一.下载安装 先下载安装mysql,这里使用了5.7.21版本,具体过程不做详细说明,可自行查资料如何下载 二. ...

  9. tomcat中配置ssl的http协议

    问题: IDEA配置tomcat后运行时报如下错误: Error running wis-client-web: SSL HTTP Connector node not found: set up o ...

  10. 泛型--增强for循环--数组和集合转换

    1:List的子类(掌握) (1)List的子类特点 ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低 ...