下面就一些java的一些基本问题进行解释。其中蓝色部分为handsomecui的主观看法

一.synchronized(obj)里面的参数怎么解释?

synchronized的参数代表的是“对象锁”代表的是不同的线程在synchronized块里,
同时只有一个线程能执行该代码块,而类的不同实例之间是互不影响的。
比如Person A = new Person(),Person B = new Person().A和B之间是不受synchronized制约的。

二.创建线程有哪几种方法?

  有三种方式可以用来创建线程:

   1.继承Thread类

   2.实现Runnable接口

   3.应用程序可以使用Executor框架来创建线程池

三. ”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

  “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

  Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。

  static方法跟类的任何实例都不相关,所以概念上不适用。

四.是否可以在static环境中访问非static变量?

  static变量在Java中是属于类的,它在所有的实例中的值是一样的。

  当类被Java虚拟机载入的时候,会对static变量进行初始化。

  如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

  (注意,非static变量是实例化后才被创建,而static变量是类创建时就被创建)

五.int与Integer的区别:

  int 是基本数据类型
  Integer是其包装类,注意是一个类。
  为什么要提供包装类呢???
  1.为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化。例如int x = Integer.valueOf("66");

  2.泛型 List<Integer> nums;
    这里<>需要类,要用Integer

六.Java中intValue,parseInt,Valueof 这三个关键字的区别?

   int a = Integer.parseInt("123");(相当于把“123”转化为基本数据)
     Integer b = Integer.valueOf("123");(相当于把“123”转化为一个Integer对象)
     int c = b.intValue();(将123的对象表示形式转化为基本数据123)

  也就是 Integer.valueOf("123").intValue() 等价于 Integer.parseInt("123")

七.java不支持多继承,但可以实现多个接口。

八.synchronized用在方法上级别是粗粒度锁,用在代码块上是细粒度锁。

九.Java集合类框架的基本接口有哪些?

  • Collection:代表一组对象,每一个对象都是它的子元素。
  • Set:不包含重复元素的Collection。
  • List:有顺序的collection,并且可以包含重复元素。
  • Map:可以把键(key)映射到值(value)的对象,键不能重复。

  ArrayList和 LinkedList 实现了List接口,HashSet实现了Set接口,这几个都比较常用;

  HashMap 和HashTable实现了Map接口,并且HashTable是线程安全的,但是HashMap性能更好

  

  java.util.Collection [I]

  |—java.util.List [I]|—java.util.ArrayList [C]|—java.util.LinkedList [C]|—java.util.Vector [C]|—java.util.Stack [C]|—java.util.Set [I]|—java.util.HashSet [C]|—java.util.SortedSet [I]|—java.util.TreeSet [C]

  java.util.Map [I]

  |—java.util.SortedMap [I]|—java.util.TreeMap [C]|—java.util.Hashtable [C]|—java.util.HashMap [C]|—java.util.LinkedHashMap [C]|—java.util.WeakHashMap [C] 

十.接口和抽象类的区别是什么?

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

  • 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
  • 类可以实现很多个接口,但是只能继承一个抽象类
  • 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
  • 抽象类可以在不提供接口方法实现的情况下实现接口。
  • Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
  • Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
  • 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

java遇见的问题分析相关推荐

  1. Java异常的性能分析

    Java异常的性能分析 参考文章: (1)Java异常的性能分析 (2)https://www.cnblogs.com/grefr/p/6089116.html 备忘一下.

  2. java.lang.ArrayIndexOutOfBoundsException异常分析及解决

    2019独角兽企业重金招聘Python工程师标准>>> java.lang.ArrayIndexOutOfBoundsException异常分析及解决 这是一个非常常见的异常,从名字 ...

  3. java超线程_超线程多核心下Java多线程编程技术分析

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述超线程多核心下Java多线程编程技术分析,更多Java专业知识,广州疯狂 ...

  4. 深入理解Java虚拟机-Java内存区域透彻分析

    Java虚拟机深入理解系列全部文章更新中- 深入理解Java虚拟机-Java内存区域透彻分析 深入理解Java虚拟机-常用vm参数分析 深入理解Java虚拟机-JVM内存分配与回收策略原理,从此告别J ...

  5. 深入理解Java中的逃逸分析

    转载自  深入理解Java中的逃逸分析 在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件.第二段编译 ...

  6. jmap, jhat, jvisualvm:java堆内存对象分析利器

    转载自 jmap, jhat, jvisualvm:java堆内存对象分析利器 jmap -help查看命令用法. jmap -heap <pid> 查看堆使用情况. jmap -dump ...

  7. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

    JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. int[] value={60,70,80}; for(int i:value){ out.pri ...

  8. 一个html页面上显示dopost,Java遇见HTML-servlet(一)

    Java遇见HTML的6篇文章技术较老只是在熟悉java基础知识和了解mvc模型思想 servlet的应用 servlet可以理解为就是一个jsp,实现servlet有三步: 1.在web.xml中注 ...

  9. Java类加载过程内存分析

    Java类加载过程内存分析 Java类加载过程 编译 类的加载 类加载器 运行时数据区 执行引擎 Java类加载过程 具体过程如下: 编译 首先Java源代码会被编译器编译成class文件以供计算机执 ...

最新文章

  1. Tomcat通过Redis实现session共享的完整部署记录
  2. 一步一步搞定InfoPath(02)--配置VSTA
  3. atlsoap.h”: No such file or directory
  4. debian架设php,Debian 下搭建php-fastcgi方式,nginx
  5. 不会出现这样的情况吧
  6. 新华字典java_新华字典查询示例代码
  7. mysql cleaned up_MySQL数据库无法启动的简单排错
  8. docker安装nextcloud(附nextcloud win7客户端下载教程)
  9. docker学习-docker解决了什么问题
  10. 4.添加监听,使地图随鼠标,键盘移动并改变大小
  11. while (n-- > 0) 的用法
  12. 一起来梳理JVM知识点
  13. THREEJS - mousedown/mouseup等鼠标相关事件失效
  14. 2014青岛初中组第2题 洪水 详解(C++)
  15. A bit of fun: fun with bits[翻译]
  16. 互联网搜索 解决问题的心法 找什么 哪里找 怎么找
  17. 【推荐】智慧应急指挥调度中心信息化软件平台管理系统建设解决方案合集(共46份,790M)
  18. node.js历史版本下载安装
  19. 阿里巴巴面试算法题目:25匹赛马,5个跑道,也就是说每次有5匹马可以同时比赛。问最少比赛多少次可以知道跑得最快的5匹马
  20. 史上最全最基础的Oracle数据库教程(入门一)介绍Oracle默认用户

热门文章

  1. 学习 lodash 源码整体架构,打造属于自己的函数式编程类库
  2. JavaScript中的一些特殊用法(一)
  3. 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格...
  4. oracle job 定时执行参数
  5. B2B行业网站电话销售应具备的精神
  6. 英文版opensuse 12.2安装中文输入法ibus
  7. IT学习--学习不一定要用在现实工作中
  8. Mysql不同存储引擎的表转换方法
  9. highgui java opencv_java – OpenCV 3.0.0 JAR缺少HighGUI
  10. 洛谷 P1736 创意吃鱼法(多维DP)