黑马程序员技术交流社区

标题: 新人技术贴 [打印本页]

作者: Never-Let-Go    时间: 2020-2-21 11:13
标题: 新人技术贴
         总结了一下到目前为止的学习生活,说点我在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.






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2