编写运行Java程序:Hello World

1.选择最简单的编辑器:记事本。将Java代码编写入扩展名为.java的文件(源文件)中。

Hello World:代表学习计算机语言的第一个入门小程序。现在泛指接触任何新事物的第一步。

Class:是java中的关键字,用于定义类,java语言的程序代码都需要定义在类中。

关键字:被java语言赋予了特殊含义的单词。

Demo:为了方便使用这个类,给类自定义的类名。

{}:定义该类中代码的范围。

注意:写代码,阅读性第一,功能性第二,一定要注意写代码的格式!源文件名和类名可以不一致,但当class前有修饰符public时,则必须一致.

2. 通过javac命令对该java文件进行编译。

①有了java源文件,将其编译成JVM可以识别的文件。

②在该源文件目录下,通过javac编译工具对Demo.java文件进行编译。

③如果程序没有错误,没有任何提示,就会在当前目录下出现一个Demo.class文件,该文件称为字节码文件,也就是可以执行的java的程序。

3. 通过java命令对生成的class文件进行运行。

①有了可执行的java程序(Demo.class字节码文件),通过运行工具java.exe对字节码文件进行执行。

出现提示:缺少一个名称为main的方法。

使用java命令运行class文件,没有必要加上.class文件后缀。

②因为一个程序的执行需要一个起始点或者入口,所以在Demo类中加入如下代码。

③对修改后的Demo.java源文件需要重新编译,生成新的class文件后,再执行。

发现编译成功,但也没有任何效果,因为程序并没有告诉JVM要帮我们做什么事情,也就是没有可以具体执行的语句。

④如果想要和JVM来个互动,只要在main方法中加入一句System.out.println('hellojava');。因为对程序进行了改动,所以需要再重新编译,然后运行即可。

1. main方法的作用在于保证一个类可以独立运行,因为它是程序的入口。

2. System.out.print();语句用于告诉系统输出打印数据,可以将括号中的内容打印在控制台上。通过该语句可以直接在控制台看到jvm运行java程序后的结果。

3.System.out.println();语句与System.out.print();语句的区别是,前者打印后并且换行。

4.javac命令的作用是对java程序进行语法性检查,一旦出错,就会打印出错误信息。

由于System.out.println('hello java')语句后面缺少分号,所以报错。根据报错的行数,找到错误的地方,进行修改。然后重编编译,运行。

注意:Java会出现连锁错误反应,也就是一个错误,会导致后面程序的多个错误。这时候只需要修改第一个错误,后面的错误都会解决掉。

5.java命令可以启动JVM,然后找到相应的class文件,再寻找程序入口,也就是main方法,然后调用该方法执行java程序。

常见错误原因:

1.文件名写错。

2.类文件不在当前路径下或者不在classpath(后面会将讲到)指定路径下。

3.后缀名问题。

“后缀名问题”查找及解决方案如下:

1. 点击“工具”-->“文件夹选项”。

2. 点击“查看”选项卡,并且勾选掉“隐藏已知文件类型的扩展名”。

3. 然后就可以看到文件真正的后缀名为txt,所以找不到Demo.java文件。只需将修改后缀名为java,再重新编译、运行即可。

配置classpath环境变量

由于可能频繁执行多个class文件,并且多个class文件可能存储在不同的目录下,那么每次都在命令提示符窗口中切换目录会相当的麻烦。

classpath环境变量的作用类似于path环境变量,但是它的作用在于告诉JVM去哪里找到class文件。

JVM查找类文件的顺序:

1. 如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。

2. 如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件.

示例:

1.在C盘根目录下新创建一个文件夹,命名为myclass,将D:\code\day01目录下的Demo.class文件剪切到此文件夹下。

2.将D:\code\day01文件夹中的源文件Demo.java修改为在控制台中打印“hello D盘”,重新编译,生成Demo.class。

3.如果想要执行C盘根目录下myclass文件夹中的Demo.class,又不想切换目录,由于JVM会先在classpath环境变量值的目录中查找要运行的类文件,可以通过设置环境变量classpath为“c:\myclass”实现。

4.classpath环境变量值的结尾处如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,也不会在当前目录下查找。即使当前目录下有,也不会运行。

示例:

1.删除C:\myclass目录下的Demo.class。

2.在D:\code\Day01目录下运行Demo.class文件,报错。

这是因为classpath环境变量已经被赋值,所以即使在D:\code\Day01目录下存在Demo.class文件,JVM也根本不会去查找。

3.classpath环境变量值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下再查找一次。

示例:为环境变量classpath赋值后加上一分号,然后在D:\code\day01目录下运行Demo.class文件,由下图可见,运行成功。

建议配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”(代表当前目录)表示,这样可读性更好一些。

java中hello类,Java入门篇-hello world相关推荐

  1. Java中的集合List - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的集合List - 入门篇>,希望对大家有帮助,谢谢 简介 说实话,Java中的集合有很多种,但是这里作为入门级别,先简单介绍第一种 ...

  2. Java中的映射Map - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的映射Map - 入门篇>,希望对大家有帮助,谢谢 简介 前面介绍了集合List,这里开始简单介绍下映射Map,相关类如下图所示 正 ...

  3. java math四舍五入类,Java中Math类的几个四舍五入方法的区别

    JAVA取整以及四舍五入 下面来介绍将小数值舍入为整数的几个方法:Math.ceil().Math.floor()和Math.round(). 这三个方法分别遵循下列舍入规则: Math.ceil() ...

  4. java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 返回绝对路径,但不会处理"."和".."的情况 ...

  5. java中的path类_详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理".&qu ...

  6. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  7. Java中的模块(Module)入门介绍

    Java中的模块(Module)入门介绍 在Java 9版本中Java 语言引入了一个非常重要的概念:模块(module).module引入了Java代码分组的另一个级别.每个module都包含许多子 ...

  8. Java 中 Pair 类的五种替代方案

    Pair 是一个容器,用于存储两个对象的元组.Java 并没有真正提供 Pair 类的任何实现.这篇文章将讨论 Java 中 Pair 类的各种替代方案. Pair 通常用于一起跟踪两个对象.它包含两 ...

  9. java中properties作用,java中Properties类的使用

    java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...

最新文章

  1. IIS出现server application error,请问怎么解决?
  2. JSON | JSON字符串和JSON对象的区别
  3. Calculation控制台
  4. Linux学习总结(68)——Linux 30年专访:Linus Torvalds谈Linux内核开发与Git
  5. java axis2 jar_Java axis2.jar包详解及缺少jar包错误分析
  6. [Bzoj2152]聪聪可可
  7. xkcd目录_12条展示AI真相的XKCD片段
  8. 基2FFT算法matlab程序编写,基2时抽8点FFT的matlab实现流程及FFT的内部机理
  9. Xshell上传文件到linux服务器
  10. Java字符和数字列对齐_字符串(包含中英文、数字、符号)的对齐
  11. 如何实现自定义倍速播放PC端浏览器中的视频
  12. Kindle Windows版本 中文字体修改工具
  13. satisfy_dependencies_for: Cannot satisfy the following dependencies
  14. [c++] insert和emplace的区别
  15. Qml SwipeView禁用滑动动画
  16. ethercat通讯移植
  17. 修改autor后面邮箱_最后冲刺!2020年国自然标书终极修改和形式审查要点!!!...
  18. find排除文件 linux_Linux find命令排除某个路径
  19. Mac灵活运用finder(访达)文件标签
  20. fcoe和fc的区别_IBM AIX FC和FCoE设备驱动程序堆栈的性能改进

热门文章

  1. SIP对话、事务详解
  2. 一个想法照进现实-《IT连》创业项目:万事开头难
  3. Silverlight的OOB特性
  4. cstring::replace不区分大小写_Excel VBA之函数篇-3.11订单号千奇百怪,如何按照结构区分来源...
  5. Python高并发应用场景下四种写入SQLite数据库的速度比较
  6. Python函数式编程小案例:文本加密
  7. pythonfor循环if中断怎么使用_如何在for循环中只运行一次if?
  8. python批量复制粘贴_用python批量复制特定图片
  9. python中or是什么意思-Python 中 (,|)和(and,or)之间的区别
  10. 超详细简单解决git的上传和下载