java基础

本文介绍了Java程序从源代码到可执行程序的全过程,包括编译与运行两个关键阶段。详细讲解了如何使用JDK进行编译及字节码文件的生成,以及Java程序在不同操作系统上的运行方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Java的加载与执行:一个完整的java程序
    
    * Java开发的整个生命周期,包括两个重要的阶段,分别是:编译阶段和运行阶段

    * 编译生成的程序被称为:字节码程序。编译生成的文件是:xxx.class文件

    * 编译和运行可以在不同的操作系统中完成。

    * 程序员在xxx.java文件中编写源代码,源代码必须符合java的语法,这些源代码就是高级语言。
    存放源代码的文件被称为源文件。

    * 过程:

        编译期:【在windows环境中完成】
            - 安装JDK,配置环境
            - 在硬盘的某个位置创建一个xxx.java源文件
            - 打开源文件,在该文件当中编写符合java语法的源程序,然后保存。
            - 使用JDK中自带的javac.exe命令对以上的java源程序进行编译。
                * 编译通过:说明语法没有问题
                    - 在硬盘上生成一个或者多个字节码文件【xxx.class】
                * 编译失败:说明源程序某个位置不符合java语法格式。
                * 编译的语法格式:打开DOS命令窗口,输入:javac 源文件路径

                注意:
                    - 源文件路径可以是绝对路径,也可以是相对路径。
                    - 编译之后,其实java源文件删除不会影响程序的执行。
                    - 最好不要将java源文件删除,因为程序最终运行效果不是预期效果的时候,需要
                    重新修改java源代码,然后进行重新编译生成全新的class字节码文件,再重新运行
                    字节码程序。

        ---------------------------------------------------------------------------

        运行期:【可以不在windows中完成,可以换一个操作系统,但前提是该操作系统中已经安装java的运行时环境】

            - 打开命令窗口,在命令窗口中使用java.exe命令运行java程序,语法格式:
                java 类名

                注意:java这个命令使用的时候,java命令后面不是文件的路径。必须是一个“类名”。
                例如:
                    java Hello  
                    java Student
                    java User
                    java Product

            - 以上程序的执行原理:
                * java.exe命令执行会启动:JVM
                * JVM启动之后,马上启动“类加载器-Class Loader”
                * ClassLoader负责去硬盘的“某个位置”上搜索“类名.class”字节码文件。
                * 找不到这个.class文件,一定会出现程序异常现象。
                * 找到了这个.class文件之后将.class文件转换成"二进制",操作系统可以直接识别二进制,
                操作系统执行二进制码和底层的硬件平台进行交互。

2.什么是类名?
    * 假设硬盘上有一个文件,叫做Hello.class,那么类名就叫做:Hello
    * 假设硬盘上有一个文件,叫做Student.class,那么类名就叫做:Student
    * 假设硬盘上有一个文件,叫做User.class,那么类名就叫做:User
    * 假设硬盘上有一个文件,叫做Product.class,那么类名就叫做:Product
    .....

3.关于java源程序当中的注释:
    
    * 什么是注释?注释的作用是什么?
        - 出现在java的源程序当中,对java源代码的解释说明
        - 注释不会被编译到.class字节码文件当中
        - 一个好的开发习惯应该是多编写注释,这样程序的可读性比较强。
    
    * java中的注释怎么写呢?
        - 单行注释
            //单行注释,只注释当前行

        - 多行注释
            /*
                多行注释
                多行注释
                多行注释
                多行注释
                多行注释
                .....
            */

        - javadoc注释
            /**
            *    javadoc注释
            *    javadoc注释
            *    javadoc注释
            *    javadoc注释
            *    javadoc注释
            *    javadoc注释
            */
            注意:这种注释是比较专业的注释,该注释信息会被javadoc.exe工具解析提取并生成帮助文档。
4.public class 和 class的区别:
    
    * 一个java源文件当中可以定义多个class

    * 一个java源文件当中public的class不是必须的

    * 一个class会定义生成一个xxx.class字节码文件

    * 一个java源文件当中定义公开的类的话,只能有一个,并且该类名称必须和java源文件名称一致。

    * 每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:java B,
    想执行X.class当中的main方法:java X

    * 注意:当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法。没有主方法会出现运行
    阶段的错误:
        D:\course\JavaProjects\02-JavaSE\day02>java Hello
        错误: 在类 B 中找不到主方法, 请将主方法定义为:
            public static void main(String[] args)

5、对象和引用:
    
    5.1、对象和引用的概念?
        * 对象:目前在使用new运算符在堆内存中开辟的内存空间称为对象。
        * 引用:是一个变量,不一定是局部变量,还可能是成员变量。引用保存了内存地址,指向了堆内存当中的对象。
        * 所有访问实例相关的数据,都需要通过“引用.”的方式访问,因为只有通过引用才能找到对象。
        * 只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。

        class Student{

            Computer com; //com是一个引用【实例变量】

            public static void doSome(){
                Computer cc; //cc是一个引用【局部变量】
            }
        }

    5.2、参数的传递?
        主要研究和学习的是方法在调用的时候,涉及到参数传递的问题,到底是怎么传递数据的呢?
            值传递。
            int i = 10;
            int j = i; //i传递给j,实际上只是将i变量中保存的10传递给j了,j实际上是一块全新的内存空间。

            User u = 0x1234;
            User u2 = u; //u传递给u2,实际上是将0x1234这个值赋值给u2了,u和u2实际上是两个不同的局部变量,
                             //但是它们这两个变量指向堆内存中同一个java对象。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值