理解每一行java代码的本质

光写java代码其实是一件很简单的事情,就算项目需要使用一门新技术时,随便google一下都能找到一大堆代码例子,然后简单学习一下api调用,接着要么自己调用、要么复制粘贴,实在不行最后再加上一堆if-else语句总能搞定大部分需求。

在枯燥且无味的工作之余,有时候真的不能偷懒,比如别人这么写我也直接拷贝过来满足要求就得了,虽然能应付但是这真的是我们想要的吗?应该还是尽可能的通过自己的思考,有没有更好的方式?当然一些简单的东西直接复制粘贴也无可厚非。

今天看到一篇文章说是学习java最重要的就是理解每一行代码的本质,我觉得说的非常对,这个理解层面我觉得也是一种学习能力的升华,毕竟最开始我们都只是会写就足够,当能真正理解这行代码的作用以及其在虚拟机中所执行的步骤时,此时你的java基础才算牢固。

bb了好多,主要也是因为我这个菜鸟有了一点感触,同时回想了下自己的咸鱼生涯,哎,菜阿。下面给一段简单的代码,从代码层面看java的内存空间

    // 当调用该方法时,虚拟机会创建一个栈帧用来存放该方法所需的基本数据信息
    public static void main(String[] args) {
        int a = 1; // 新建一个局部变量a,同时在当前虚拟机栈中为其分配内存,值为1
        User user = new User(); // 在当前堆空间中新建一个User对象实例,同时在栈中新建一个user对象的引用,用于指向user对象
        user.setName("张三"); // 对所引用的对象进行设值
        System.out.println(a + "," + user.getName());
        change(a, user); // java中只有值传递,只是针对基本类型来说其值就是其本身,针对对象来说,其值便是引用地址
        System.out.println(a + "," + user.getName()); // 根据值传递,a和user引用本身都未改变,虽然user引用本身未改变,但是其指向的user对象却被改变了,因此最终展现的值也与之前不同
    } // 方法调用结束,开始出栈,即变量a和引用user从栈中弹出,释放内存,但是user所指向的对象仍然存在,等待垃圾回收机制对其进行回收。每一个方法从开始调用到结束调用,都对应着栈帧从入栈到出栈的过程

    public static void change(int a, User user) {
        a = 2;
        user.setName("李四");
    }

理解注释也都在每一行代码里头,以此勉励自己。

猜你喜欢

转载自blog.csdn.net/m0_38001814/article/details/101311796