Java之区别总结

Java之区别总结

1.char和varchar

  • char:长度固定
  • varchar:长度可变

2.“==”和equals()

  • ==:比较值
  • equals():比较地址
  • 注意:自动装箱和自动拆箱

3.Comparable和Comparator接口

  • Comparable:Java提供了只包含compare To()方法的Comparable接口。这个方法可以对两个对象排序。输出结果0、负数、正数三种
  • Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个对象排序。

4.Collection和Collections

  • Collection:是集合类的上级接口,继承于他的接口主要是set和list
  • Collections:Collections类是针对于集合类的一个帮助类。他提供了一系列的静态方法堆各种集合的搜索、排序、线程安全化等操作

5.run()和start()

  • run():只是调用普通的run()方法
  • start():启动了线程,由jvm调用run方法

6.sleep()和wait()

  • sleep():是线程类Thread的方法,导致此线程暂停执行指定时间,把执行的机会让给其他线程,但是监控状态依然保持,到时候会自动恢复。调用sleep()不会释放对象锁。
  • wait():是Object类的方法,对此对象调用wait()方法导致本线程放弃对象锁,进入等待此对象的等待池。

7.同步方法和同步代码块

  • 同步方法默认用this或者当前类class对象作为锁
  • 同步代码块可以选择以什么来加锁,比同步方法更细颗粒度。

8.Array和ArrayList

  • Array:长度固定
    可以包含基本类型和对象类型
  • ArrayList:动态变化
    值可以包含对象类型
    ArrayList处理基本数据类型的时候,比较慢。

9.访问修饰符

在这里插入图片描述
10.抽象类和接口

  • 抽象类可以在不提供接口方法实现的时候实现接口
  • Java接口中声明的变量默认都是final的。抽象类可以包含非final变量
  • Java中接口成员函数默认为public。抽象类可以是private,protected,public
  • 接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化,但是,如果他包含main方法的话是可以被调用的

11.heap(堆)和stack(栈)的区别

  • 堆:java中的堆是一个运行时数据区,类的对象从堆中分配空间。比如说:new等指令建立,不需要代码显示堆释放,由垃圾回收来负责
  • 优点:可以动态分配内存大小,垃圾收集器会自动回收垃圾数据
  • 缺点:存入速度慢
  • 栈:其数据项的插入和删除操作只能在栈顶进行,后入先出。栈存放在一些基本类型的变量和对象。
  • 优点:读取速度比堆快,仅次于寄存器,栈数据可以共享。
  • 缺点:比堆缺乏灵活性,存在栈中的数据大小与生存期必须是确定的

12.接口和抽象类的区别

java提供和支持创建抽象类和接口。他们的实现有共同点,不同点在于:

  1. 接口中所有的方法隐含都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法;
  2. 类可以实现很多接口,但是只可以继承一个抽象类;
  3. 类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成抽象的;
  4. 抽象类可以在不提供接口方法实现的情况下实现接口;
  5. java接口中声明的变量默认都是final的,抽象类可以包含非final的变量;
  6. java接口中的成员函数默认是public的,抽象类的成员可以是private,protected或者public;
  7. 接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化。

13.值传递和引用传递

  • 值传递是对基本类型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量
  • 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身

14.多线程中调用run()可start()方法

  • 调用run方法来启动run方法,将会是串行运行
  • 调用start方法,来启动run方法,将会是并行运行(多线程运行)

15.Thread和Runnable

  1. 因为java的单根继承,Thread占据了父类的名额,不如Runnable方便
  2. Thread类实现了Runnable
  3. Runnable启动时需要Thread类的支持(Runnable缺点)
  4. Runnable更容易实现多线程中资源共享(Runnable优点)
  5. 结论:建议实现Runnable接口来完成多线程

16.多线程信息共享中的粗粒度和细粒度

  1. 粗粒度:子线程与子线程之间、和main线程之间缺乏交流
  2. 细粒度:线程之间有信息交流通讯:
    (1)通过共享变量达到信息交流通讯
    (2)JDK原生库不支持发送消息(类似Mpi并行库直接发送消息)
  3. 细粒度:
    等待 通知/唤醒 终止

17.多线程中的互斥和同步

  • 互斥:某一个线程运行一个代码块(关键区),其他线程不能同时运行这个代码块
  • 同步:多个线程的运行,必须按照某一种规定的先后顺序来运行
  • 互斥是同步的特例
  • 互斥的关键字是synchronized
    (1)synchronized代码块或者函数,只能一个线程进入
    (2)synchronized加大性能负担,但是使用方便

18.Collection和Collections的区别

  • Collection:集合类的上级接口,继承于他的接口主要有List和Set
  • Collections:是针对集合的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

19.链表和数组的区别

  • 创建数组时,必须明确说明数组的长度(即数组中元素的个数),以便在内存中留出一块空间存放所有的数组元素,数组中各数据元素在内存中是顺序存放的
  • 创建链表时,不需要给出链表中元素(称为节点)的个数,可以只创建一个链表的表头,其他元素在需要的时动态的创建并加入到链表,链表的数据元素在内存中不是连续存放的

本人才疏学浅,如有错误,烦请指出,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值