总结了一下到目前为止的学习生活,说点我在JAVA学习上的感悟和发现吧. 第一,作为有一些C++基础来学习JAVA的我来说,感觉JAVA和C++最大的差别在于C++更偏向底层细节的一些实现,指针,内存等等各种都需要程序员自己去定义然后再去释放处理;而JAVA更加智能化一点,将底层的各种细节都隐藏了起来,交由JVM的垃圾回收机制来自己进行处理,而且JVM的垃圾回收机制越来越智能,程序员更多的要关心的只有怎么去实现功能,而不用去担心思考底层的细节. 第二,介绍下我目前总结到的JAVA关键字说明: 1,静态修饰关键字static,修饰方法:静态方法只能调用静态变量和方法,类中的静态方法可以直接类名.方法名调用,修饰变量:静态变量可以被非静态方法调用.类中的静态变量可以直接通过类名.变量名调用.在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用.静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响.特别注意,和其他语言(C++)区分,静态方法或变量修饰不会影响他们的访问权限,在JAVA中访问权限只由权限修饰符限制,如果静态成员被 private 修饰,就不可以直接在类外调用. 2,final关键字修饰,修饰变量说明该变量是一个常量,其值定义时就要初始化,且后续不能修改,修饰方法说明该方法在其子类不可修改重写;对类说明该类就是最终类,不可以产生子类. 3,native 关键字修饰说明:该方法的实现由非 java 语言实现,在定义一个 native方法时,并不提供实现体(我们常常可以通过CTRL+B查看源码看到许多这样的修饰方法),也说明了JAVA不需要我们将太多目光放在底层实现上. 4, transient关键字修饰,说明被修饰的变量不会被序列化和反序列化 5, volatile关键字修饰,这是我目前在努力理解的一个关键字,涉及到多线程和并发数据安全的问题,推荐一个博客详细介绍,大家可以去看看(https://www.cnblogs.com/dolphin0520/p/3920373.html) 第三,分享一个我收藏的一个打印数组的源码实现, public staticString toString(Object[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0; ; i++) { b.append(String.valueOf(a)); if (i == iMax) return b.append(']').toString(); b.append(", "); } } 以上暂时就是这么多了,另外推荐大家一个CSDN博主-->沉默王二,他的博客上面有很多JAVA的一些小的有用的介绍说明,大家有空可以看看放松一下.希望大家一起进步,一起加油,一起拿到理想的Offer.
|