java基础

1.Object再带的方法有哪些?

      1.equals
      2.hashcode
      3.clone
      4.getClass
      5.notify
      6.notifyAll
      7.wait
      8.finalize
      9.toString

2.读写一个完整限定名的java方法,可自创,可被写java类中的方法。

3.写一个比较完整的Collection接口的类图,并分别说一下区别
在这里插入图片描述

简答一点的话就是这样子

在这里插入图片描述

4.写一个比较完整的Map接口类图,并分析一下之间的区别
在这里插入图片描述
简单一点就是这样
在这里插入图片描述
5.java内存模型有几部分构成,并写出内存名称以及存储class文件中的数据类型

在这里插入图片描述
这里只贴了一张图片,只做简单了解,想深入了解的话,推荐这个博客
https://www.jianshu.com/p/a60d6ef0771b

6.分析代码,写出答案

String A = “a”;
A.replace("a","b");
system.out.println(A);

A对应的a的值存在了哪块内存?
方法区

代码执行完A的数数值为什么?请说出理由?
a 原因:replace方法并没有改变A的地址。


String B = new String(“a”);
system.out.println(A == B);

执行完毕后,输出true还是false,说出理由?
 false  A指向方法区,B指向堆。


A.intern()方法执行流程是怎样的?


6.1解析intern方法。
先看一下如下的代码

      String str1 = new StringBuilder("计算机").append("软件").toString();
        System.out.println(str1.intern() == str1);
		// jdk1.6   false
		//jdk1.7 true

        String str2 = new StringBuilder("ja").append("va").toString();
        System.out.println(str2.intern() == str2);
		// jdk1.6  false
		//jdk1.7 false
        

说明:在jdk1.6中,intern()方法会把首次遇到的字符串实例复制到永久代中,返回的也是永久代中这个字符串实例的引用,而StringBuffer创建的字符串实例在java堆中,所以必然不是同一个引用,返回false。
而jdk1.7的intern()的实现不再是赋值实例,只是在常量池(方法区的一部分)中记录首次出现的实例引用,因此intern()返回的引用和由StringBuilder.创建的那个字符串时同一个。
对于str2比较返回false,因为“java”这个字符串在执行StringBuilder.toString()之前就已经出现过了,字符串常量池中已经有它的引用,不符合“首次出现”这个原则,而“计算机软件”这个字符串首次出现,因此返回true。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值