corejava

heap 和 stack 有什么区别

栈是一种线性集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理
堆是栈的一个组成元素

JVM执行new语句创建一个对象时,内部的运行过程

  • 所有的类都是在第一次被使用时,动态加载到JVM中,首次创建对象时,java解释器查找classPath定位class文件
  • 载入class文件,生成一个Class类型对象,所有有关的静态初始化动作都会执行:如,静态代码块,静态成员属性,并且这种初始化动作只在Class对象首次加载时候进行一次
  • 当用new创建对象时,首先JVM在堆heap上为对象分配足够的存储空间
  • 存储空间清空,自动将Dog对象中的所有基本类型数据都设置成了默认值,对象引用被设置为null
  • 执行所有在字段定义处的一些初始化操作
  • 调用构造器方法(没有继承)

StringBuffer StringBuilder String 区别

  • String 字符串常量 不可变 使用字符串拼接时是不同的2个空间
  • StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加
  • StringBuilder 字符串变量 可变 非线程安全 字符串拼接直接在字符串后追加

    StringBuilder执行效率高于StringBuffer高于String
    String是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象, StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法,在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer 是线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于StringBuffer
    对于大数据量的字符串的拼接,采用StringBuffer,StringBuilder

Hashtable与HashMap的区别

HashMap不是线程安全的,HashTable是线程安全。HashMap允许空(null)的键和值(key),HashTable则不允许。HashMap性能优于Hashtable

  • Map是一个以键值对存储的接口,Map下有两个具体的实现,分别是HashMap和HashTable
  • HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable
  • HashMap允许键或值为空,而HashTable不允许键或值为空

XML和Json的特点

xml特点

  • 有且仅有一个根节点
  • 是独立与软件和硬件的信息传输工具
  • 所有的标签都需要自定义
  • 仅仅是纯文本文件

    Json(JavaScript Object Notation)特点

    json分为两种格式: json对象(就是在{}中存储键值对,键和值之间用冒号分隔, 键 值 对之间用逗号分隔),json数组(就是[]中存储多个json对象,json对象之间用逗号分隔)(两者间可以进行相互嵌套)数据传输的载体之一
    区别:
    xml的传输数据量比json的要大,流行的是基于json的数据传输。
    共同点:
    Xml和json都是传输数据的载体,并且具有跨平台跨语言的特性

Ajax

AJAX 全称: 异步JavaScript及 XML(Asynchronous JavaScript And XML)
Ajax的核心是JavaScript对象XmlHttpRequest(XHR)。

Ajax的优点:
    提高用户体验度(UE)
    提高应用程序的性能
    进行局部刷新
    

  • AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。
  • 通过 AJAX,我们的 JavaScript 可使用JavaScript的XMLHttpRequest对象来直接与服务器进行通信。通过这个对象,我们的 JavaScript 可在不重载页面的情况与Web服务器交换数据,即可局部刷新。
  • AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面,减轻服务器的负担,提升站点的性能。
  • Ajax是基于标准化并被广泛支持的技术,并且不需要插件和下载小程序
  • AJAX 可使因特网应用程序更小、更快,更友好,用户体验(UE)好。

List,Set,Collection,Collections

  • 1.List和Set都是接口,他们都继承于接口Collection,List是一个有序的可重复的集合,而Set的无序的不可重复的集合。Collection是集合的顶层接口,Collections是一个封装了众多关于集合操作的静态方法的工具类,因为构造方法是私有的,所以不能实例化
  • List接口实现类有ArrayList,LinkedList,Vector。ArrayList和Vector是基于数组实现的,所以查询的时候速度快,而在进行增加和删除的时候速度较慢LinkedList是基于链式存储结构,所以在进行查询的时候速度较慢但在进行增加和删除的时候速度较快。又因为Vector是线程安全的,所以他和ArrayList相比而言,查询效率要低

猜你喜欢

转载自blog.csdn.net/dearshajing/article/details/78575819