欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java编程思想 部分解读

程序员文章站 2024-03-25 10:10:04
...

Java编程思想

个人对于这本书的解读,首先说明这本书非常不错, 不过专有名词太多了,
内容来说不是很容易理解,不过很不错, 感兴趣的可以购买自行阅读
毕竟我也是一枚萌新,讲是不太会,不过还是多看/敲吧,里面大部分还是直接干代码,不定期更新,感兴趣一起讨论



前言


关于书里简单的常识,可能一笔带过,涉及的大部分都是比较有意思的,毕竟开始看书的,一般都是想夯实一下基本,理解细节,希望可以帮到阅读起来困难的’你’,一起加油吧。

一、对象导论

1.暂时不跟新

二、一切都是对象

1.暂时不跟新

三、操作符

1.暂时不跟新(小点)

2.赋值(没写)

3.自动自增和递减

对于前缀递增和前缀递减(++a/–a),会先执行运算,再生成值。
而对于后缀递增和后缀递减(a++/–a),会先生成值,在执行运算。 ---- java编程思想
直接上书上面的源代码:

		int i = 1;
        System.out.println("i :" + i);      //1
        System.out.println("++i :" + ++i);  //2
        System.out.println("i++ :" + i++);  //2
        System.out.println("i :" + i);      //3
        System.out.println("--i :" + --i);  //2
        System.out.println("i-- :" + i--);  //2
        System.out.println("i :" + i);      //1

这一段代码结合上面一段话的可能比较容易理解(但还是比较模糊),分解一下:
i++:源文件

		int i = 2;
        System.out.println(i++); //2
        System.out.println(i);   //3

i++:在下一次操作数值才会更变,关于它的值得变化:查看target下生成的class文件

i++:编译后的文件

		//.class里面编译后的文件
 		int i = 2;
        byte var10001 = i; 	//类似一个i++的过渡值
        int i = i + 1;		//重新声明一个变量i
        System.out.println(var10001);  	//var10001 = 2
        System.out.println(i);			//i = 2 + 1 ;

它会自己重新声明一个新的变量,并使用,覆盖刚开始的i值

++i:直接上代码

	    int i = 2;
        System.out.println(++i); //3
        System.out.println(i);   //3

++i:的class编译后的文件:

 		int i = 2;
        int i = i + 1;
        System.out.println(i);  //不需要使用一个类似过渡值的变量
        System.out.println(i);	//直接使用新创建变量

不需要使用一个类似i++的过渡值的变量,而是直接使用新创建变量

再来一段有趣的代码:
刚开始学的时候应该会听到 ++i == i+=1为什么?

		int i = 1;
        System.out.println(i += 1);         //2

查看一下编译后的.class文件:

		int i = 1;
        int i = i + 1;
        System.out.println(i);

有点意思,一模一样(除了我上面写的初始值是2),所以++i本身就是对i+=1的简化

再来看一下刚开始的那段代码的.class文件:

		int i = 1;                                    
        System.out.println("i :" + i);					//i =1
        PrintStream var10000 = System.out;
        StringBuilder var10001 = (new StringBuilder()).append("++i :");
        int i = i + 1;
        var10000.println(var10001.append(i).toString());//++i =2
        System.out.println("i++ :" + i++);              //i++ =2
        System.out.println("i :" + i);                  //i   =3

是不是有所悟了,之后i++进行上面的操作,自己可以动手实践一下,不然可能不过深刻,然后你可能发现有趣的事情
改变前java源文件:

	    int i = 2;					//下一步后的值
        System.out.println(i++);//2  --3
        System.out.println(i++);//3  --4

改变前.class编译后的文件

 		int i = 2; 
        int var2 = i + 1;
        System.out.println(i);
        System.out.println(var2++);

目前和上面一样,没有神奇的地方

改变后java源文件:

		int i = 2;
        System.out.println(i++);//2
        System.out.println(i++);//3
        System.out.println(++i);//5

改变后.class编译后的文件

		int i = 2;
        int i = i + 1;
        System.out.println(i);	//2  第一个i
        System.out.println(i++);//3	 第二个i
        ++i;
        System.out.println(i);	//5

变量名直接一样,有点难看出来i指向的值了,你可以这样理解

		int i = 2;
        System.out.println(i);		//2
        int i = i + 1;
        System.out.println(i++);	//3
        ++i;
        System.out.println(i);		//5

至于,再底层的东西选择当前class编译后的文件----右击----open in terminal 命令javap -c 当前编译后的.class文件名,自行阅读

到此,结束祝君:前程似锦