JAVASE第十五天

Junit单元测试:    


java的jar包:
    代码的打的特定的压缩包


Object类:
    Object类是java中所有类父类
    java.lang.Object
    
    public final native Class<?> getClass();    // 获取类的字节码文件
    
    public native int hashCode();            // 获取对象的hashcode

    equals()                // 比较对象,默认使用== 比较内存地址

    
    

native关键字
    被它修饰的方法,叫做本地方法
    都是没有实现体。
    JVM在底层使用C/C++实现。
    

引用传递和对象拷贝:

    引用传递:将栈引用进行复制,堆中的对象始终是一个

    对象拷贝:堆对象会进行复制

    在java中,如果需要拷贝对象,一定要去该类实现Cloneable接口

对象的深浅拷贝:

浅拷贝:将对象的第一层完成拷贝,是的两个对象完成了基本的分离
    有可能还存在着藕断丝连

    优点:内存占有较少
    缺点:如果存在底对象,则子对象没有拷贝,还是指向同一个。

深拷贝:
    将两个对象完成分离,彼此之间将无任何关系。
    递归拷贝

java实现深拷贝有两种方法。
    1、所有相关对象都是实现浅拷贝
    2、通过序列化对象实现深拷贝
        对象 <==> 字节数据  
        对象 <==> 字符串数据(如JSON)  
        
    


    toString()            // 打印对象时调用
    notify()
    notifyAll()
    wait()                // 存在三个重载

    finalize()            // 该方法在GC触发前,会自动触发
                    // 在当前对象被GC前,会自动触发
                    // 适合于做一些垃圾回收前的各种工作

面试题,这三种的区别和联系:
    final
    finally
    finalize()    在jdk9之后过时了


String类:
    字符串类Java的底层实现的类,final修饰安全考虑
    字符串本质是一个常量。

    字符串缓冲池:字符串常量池

面试题:java中字符串常量池在什么地方?

    jdk7之前,字符串常量池在方法区
    jdk7之后,字符串常量池被设计到了堆内存中

    
    String s = "Jack";        // 这种方式创建字符串
    String ss = new String("Jack");    // 


字符串拼接问题:
    字符串拼接时,如何判断拼接后的结果是否相等(==)
        |-- 常量始终是常量
        |-- 编译时,如果结果确定,则会相等??

    
    因为字符串是常量,字符串在大量拼接,容易产生垃圾数据。

    字符串是一种常量,一旦产生一个字符,如果常量池中,不存在这个字符串
    ,则会将这个字符串保存常量池(永久性、系统退出)

    因此在开发过程中,一定注意,不要大量拼接字符串,以避免产生大量无用的字符串
    消耗内存


StringBuffer和StringBuilder
    这两个对象都是jdk底层提供用来拼接大量字符串从对象,
    不会产生大量无用常量,替代字符串的大量拼接,提高效率。
    StringBuffer:
        所有操作方法上加上了同步锁,所以是线程安全的
    StringBuilder:
        没有加同步锁,因此非线程安全的!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值