Skip to content

Latest commit

 

History

History
59 lines (41 loc) · 4.29 KB

复习笔记.md

File metadata and controls

59 lines (41 loc) · 4.29 KB

复习笔记

day 1

  • 说明String 和StringBuffer的区别

答:String是不可变对象,一旦创建就不能修改它的值,对于已经存在的String对象的修改都是重新创建了一个String对象,把新的值存入; String 是final类,不能被继承!(效率低下,浪费大量优先的内存空间) 而StringBuffer 是可以修改的对象,修改时并不会像创建String对象一样重新创建并复制,它只能通过构造函数创建, 在创建后会在内存中分配空间,初始化会保存一个null,向他赋值的时候可以通过它的append方法。每个StringBuffer对象都有一定的缓冲区容量, 当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。有利于线程安全! 另外:StringBuilder:速度快,但是线程不安全。

  • 关于Static关键字用法

如果没有static关键字,就必须首先创建对象,然后通过对象使用他! //静态不能直接访问非静态,因为内存中先有静态内容,后有非静态内容。(此时还未成为对象,没有成员变量,所以不能访问)
静态方法中不能用this对象,而this代表当前对象,通过谁调用的方法谁就是对象。所以不用this。
根据类名称访问静态成员变量的时候,全程和对象没关系,直接进入方法区中的静态区。

  • 重载和重写的区别

    重载overload:方法的名称一样,参数列表不一样
    重写override:方法的名称一样,参数列表也一样(用在继承关系中)

  • Int与Interger

    int 是基本数据类型,Integer 是int的一个包装类,他是类不是基本数据类型,他的内部其实包含一个int型的数据

对象封装有很多好处,可以把属性也就是数据跟处理这些数据的方法结合在一起,比如Integer就有parseInt()等方法来专门处理int型相关的数据,另一个非常重要的原因就是在Java中绝大部分方法或类都是用来处理类类型对象的,如ArrayList集合类就只能以类作为他的存储对象,而这时如果想把一个int型的数据存入list是不可能的,必须把它包装成类,也就是Integer才能被List所接受。所以Integer的存在是很必要的。

  • 集合和数组的区别:

    集合是java中提供的一种容器,可以用来存储多个数据。

    数组的长度是固定的,集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值,集合存储的都是对象!而对象的类型可以不一致,在开发中一般当对象多的时候,使用集合进行存储。

  • 解释一下为什么要用迭代器

    Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet...,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。

  因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式! 把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。

  • HashMap和HashSet区别:

1.HashMap实现了Map接口 | HashSet实现了Set接口
2.HashMap储存键值对 | HashSet仅仅存储对象
3.使用put()方法将元素放入map中 | 使用add()方法将元素放入set中
4.HashMap中使用键对象来计算hashcode值 | HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false
5.HashMap比较快,因为是使用唯一的键来获取对象 | HashSet较HashMap来说比较慢

  • 线程与进程区别:

进程:
是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程。
线程:
线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程至少有一个线程。如果该进程有多个线程,则该应用程序可称为多线程程序。