Comprender la esencia de cada línea de código java

Escribir código Java es en realidad algo muy simple. Incluso cuando el proyecto necesita usar una nueva tecnología, puede encontrar muchos ejemplos de código con solo Google, y luego simplemente aprender sobre la llamada a la API, y luego llamarla usted mismo o cópielo y péguelo., Realmente no es bueno. Finalmente, agregar un montón de declaraciones if-else siempre puede manejar la mayoría de las necesidades.

Aparte del trabajo aburrido y aburrido, a veces realmente no puedo ser perezoso. Por ejemplo, si alguien escribe eso, puedo copiarlo directamente para cumplir con los requisitos. Aunque puede manejarlo, ¿es esto realmente lo que queremos? ¿Debo tratar de pensar en lo mío tanto como sea posible, hay una mejor manera? Por supuesto, es comprensible copiar y pegar algunas cosas simples directamente.

Hoy vi un artículo que decía que lo más importante para aprender Java es comprender la esencia de cada línea de código. Creo que es muy correcto. Creo que este nivel de comprensión también es una sublimación de la capacidad de aprendizaje. Después de todo, nosotros sólo puedo escribir al principio. Suficiente, cuando realmente puede comprender el papel de esta línea de código y los pasos que realiza en la máquina virtual, entonces su base de Java se considera sólida.

Tengo mucho bb, principalmente porque yo, un novato, tenía un toquecito, y al mismo tiempo pensaba en mi carrera de pescado salado, oye, Caia. Aquí hay un código simple para ver el espacio de memoria de Java desde el nivel de código

    // 当调用该方法时,虚拟机会创建一个栈帧用来存放该方法所需的基本数据信息
    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("李四");
    }

Comprenda que los comentarios también están en cada línea de código para animarse.

Supongo que te gusta

Origin blog.csdn.net/m0_38001814/article/details/101311796
Recomendado
Clasificación