下面就一些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 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...

  2. Java 动态代理机制分析及扩展

    Java 动态代理机制分析及扩展,第 1 部分 王 忠平, 软件工程师, IBM 何 平, 软件工程师, IBM 简介: 本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟 ...

  3. JAVA 从GC日志分析堆内存 第七节

    JAVA 从GC日志分析堆内存 第七节   在上一章中,我们只设置了整个堆的内存大小.但是我们知道,堆又分为了新生代,年老代.他们之间的内存怎么分配呢?新生代又分为Eden和Survivor,他们的比 ...

  4. Java Reference 源码分析

    @(Java)[Reference] Java Reference 源码分析 Reference对象封装了其它对象的引用,可以和普通的对象一样操作,在一定的限制条件下,支持和垃圾收集器的交互.即可以使 ...

  5. Java 线程池原理分析

    1.简介 线程池可以简单看做是一组线程的集合,通过使用线程池,我们可以方便的复用线程,避免了频繁创建和销毁线程所带来的开销.在应用上,线程池可应用在后端相关服务中.比如 Web 服务器,数据库服务器等 ...

  6. Java应用常用性能分析工具

    Java应用常用性能分析工具 好的工具有能有效改善和提高工作效率或加速分析问题的进度,笔者将从事Java工作中常用的性能工具和大家分享下,如果感觉有用记得投一票哦,如果你有好的工具也可以分享给我 工具 ...

  7. 三个实例演示 Java Thread Dump 日志分析

    原文地址: http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html jstack Dump 日志文件中的线程 ...

  8. JAVA CAS原理深度分析 volatile,偏向锁,轻量级锁

    JAVA CAS原理深度分析 http://blog.csdn.net/hsuxu/article/details/9467651 偏向锁,轻量级锁 https://blog.csdn.net/zqz ...

  9. Java NIO原理 图文分析及代码实现

    Java NIO原理图文分析及代码实现 前言:  最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请 ...

随机推荐

  1. memcache bug

    用memcached有时会报错  the lowest two bytes of the flags array is reserved for pecl/memcache 将以前的 $mc-> ...

  2. linux tail命令的使用方法详解

    本文介绍Linux下tail命令的使用方法. linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更 ...

  3. arcgis pro行列转换

    行转列 列转行

  4. WPF 实现阴影效果

    一.WPF最常见的一个阴影效果的类是DropShadowEffect.它有几种比较有用的属性比如:Color设置颜色Direction设置投影的方向ShadowDepth设置投影距纹理下方的距离Opa ...

  5. C# Callback思维

    方式一.用委托作为形参,把结果传回实参方式二.通过接口实现方式三.通过事件关联,适用桌面应用程序方式四.子窗体调用父窗体的函数(委托) 方式一.用委托作为形参,把结果传回实参 public parti ...

  6. Linux中使用sendmail发送邮件,指定任意邮件发送人

    一.使用任意发件人发送邮件 echo .com -s .com 其中s表示主题.

  7. llvm pass

    https://polly.llvm.org/docs/Architecture.html#polly-in-the-llvm-pass-pipeline

  8. hdu2255 奔小康赚大钱,最大权匹配,KM算法

    点击打开链接 最大权匹配 KM算法 算法步骤: 设顶点Xi的顶标为a[i],顶点Yi的顶标为b[i] ⅰ.初始时.a[i]为与Xi相关联的边的最大权值.b[j]=0.保证a[i]+b[j]>=w ...

  9. SQL SERVER 行列转换(动态)

    行转列测试数据: --测试数据 if not object_id(N'Tempdb..#T') is null drop table #T Go Create table #T([Name] nvar ...

  10. mysql乱码问题解决办法

    最近开发一下小项目,遇到了最常见的乱码问题. 1.数据库使用utf-8  utf-8_generic_ci编码,使用csv上传并导入数据,插入数据的时候出现了问题,有很大部分数据没有被导入,所以使用m ...