初识java的main方法

main方法实例

       public class HelloWorld {
            public static void main(String[] args) {
                System.out.println("Hello,Java");
                System.out.println("My name is:" + args[0]);
            }
        }

注意:1:类名一定是大驼峰类型,即像TestDemo这样的命名。

           2:类名一定要跟文件名相同 ,前提是这个类一定是一个public

           3:main方法作为程序的入口,void为返回值,main为方法名称,括号内为形式参数,在这里思考一个问题:为什么main方法为static静态的?

思考:String[] args这个main函数参数中的数组存放的到底是什么?

当我们用for循环遍历输出这个数组的时候我们会发现此时没有输出

但当我们在命令行运行TestDemo.java文件的时候,此时我们传入两个参数,一个是hello,一个是world,此时我们发现程序会输出hello和world

所以args代表的是我们java运行时命令行参数,当我们在命令行运行.java文件并附带参数的时候,此时会直接对这几个参数进行输出,如下图所示:

运行java程序 

Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码 组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行,即如下图所示:

   

jvm中内存的划分

1:java虚拟机栈(jvm Stack):平时所说的栈,方法要开辟内存一定要在java虚拟机栈上开辟。

2:本地方法栈:运行的代码是jvm底层代码,java虚拟机(jvm)是由c/c++代码实现

3:堆:堆上存放的一般是对象。

4:程序计数器:存放的是指令,即下一条程序执行的指令

5:方法区:一般存储的是静态的数据,其中还包含了方法表,其中存储的是方法的地址,构成了一张表

  • jdk(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。
  • jre(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。
  • jvm(Java Virtual Machine):JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

三者的关系更像是包含关系:

下面来看一道面试题:我们常用的jdk命令都有哪些?

  • 编译:javac命令
  • 运行:java命令

例如对上述一个文件名为TestDemo的文件编译运行便如图所示:

再来看一道练习题目:

这道题目的答案为c,请问为什么?

答:因为java f是运行f这个类,a,b,c为三个元素,赋值给了我们的args数组,所以args[0]=1,args[1]=2,args[2]=3,但是这个程序在输出的时候其中有一个输出的是args[3],所以最终在编译时期并不会出错,但是在运行时期会报越界异常. 

思考:为什么一个.java文件对应一个.class文件?

答:原因是这样可以做到随用随取,即当程序中有多个.java文件的时候,此时我们可能只需要其中的几个.java文件,当用到哪个.java文件的时候,就去找对应的字节码文件(.class文件).扔给我们的jvm即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值