持续积累中...

1.Java支持的数据类型有哪些?什么是自动拆装箱?

数据类型分为两大种,基本类型和引用类型。

基本类型有8种:byte short int long char float double boolean

Java 1.5中引入了自动装箱和拆箱机制:

(1)自动装箱:把基本类型用它们对应的引用类型包装起来,使它们具有对象的特质,可以调用toString()、hashCode()、getClass()、equals()等方法。

如下:

Integer a=3;//这是自动装箱

其实编译器调用的是static Integer valueOf(int i)这个方法,valueOf(int i)返回一个表示指定int值的Integer对象,那么就变成这样:

Integer a=3;   =>    Integer a=Integer.valueOf(3);

(2)拆箱:跟自动装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为基本类型的数据。

如下:

int i = new Integer(2);//这是拆箱

编译器内部会调用int intValue()返回该Integer对象的int值

注意:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。

2.JDK和JRE的区别是什么?

JRE:Java Runtime Environment
JDK:Java Development Kit
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。

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

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

因为static方法是类方法,实现时是静态绑定的。“private、static、final”修饰的方法是静态绑定的,所以他们修饰的方法不能实现多态,当然不需要被子类覆盖了(子类覆盖父类方法是为了实现多态)。而其他的方法在运行时动态绑定。 同时,所有的变量也都是静态绑定的。

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

不能。

static变量在java中是属于类的,在类的所有实例中,它的值都是一样的。在类被JVM载入时,静态变量的值就确定了。

而非静态变量是属于实例的,要在new一个实例之后,值才会存在。

在static环境中,调用非static变量,可能这个变量都还不存在,当然会出错。

5.java支持多继承吗?

不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

6.接口和抽象类的区别?

· 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

· 类可以实现很多个接口,但是只能继承一个抽象类

· 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

· 抽象类可以在不提供接口方法实现的情况下实现接口。

· Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。

· Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。

· 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

7.int和Integer有什么区别?

Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。 
Java 为每个原始类型提供了包装类型: 
– 原始类型: boolean,char,byte,short,int,long,float,double 
– 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

8.同步和异步的区别

在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
而我们平时经常讨论的同步问题多发生在多线程环境中的数据共享问题。即当多个线程需要访问同一个资源时,它们需要以某种顺序来确保该资源在某一特定时刻只能被一个线程所访问,如果使用异步,程序的运行结果将不可预料。因此,在这种情况下,就必须对数据进行同步,即限制只能有一个进程访问资源,其他线程必须等待。
哪些情况建议使用同步交互呢?比如银行的转账系统,对数据库的保存操作等等
例如生活中:打电话(同步) 发消息(异步)

9.ipv4和ipv6的区别

目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。在windows7以上的系统中能够在设置本地IP地址的时候可以看到IPV4协议项和IPV6项。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上。由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,并由此导致了IPv6 的开发 。

IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题,主要有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。

10.域名解析

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。

解析过程,比如,一个域名为:abc.com,是想看到这个现HTTP服务,如果要访问网站,就要进行解析,首先在域名注册商如阳光互联等那里通过专门的DNS服务器解析到一个WEB服务器的一个固定IP上:211.214.1.XXX,然后,通过WEB服务器来接收这个域名,把abc.com这个域名映射到这台服务器上。那么,输入abc.com这个域名就可以实现访问网站内容了.即实现了域名解析的全过程。

当应用过程需要将一个主机域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。同时域名服务器还必须具有连向其他服务器的信息以支持不能解析时的转发。若域名服务器不能回答该请求,则此域名服务器就暂成为DNS中的另一个客户,向根域名服务器发出请求解析,根域名服务器一定能找到下面的所有二级域名的域名服务器,这样以此类推,一直向下解析,直到查询到所请求的域名。

 11.网络协议体系结构

OSI的七层协议体系结构的概念清楚,理论也比较完整,但它既复杂又不实用,ICP/IP体系结构则不同,它现在已经得到了非常广泛的应用,TCP/IP是一个四层的体系结构,它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题  ),不过从实质来讲,TCP/IP只有最上面的三层,因为最下面的网络接口层基本上和一般的通信链路的功能上没有多大差别,对于计算机网络来说,这一层并没有什么特别新的具体的内容,因此在学习计算机网络原理是往往采用折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。

 12.什么是死锁(deadlock)

所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 

13.Java中垃圾回收有什么目的?什么时候进行垃圾回收?

目的:回收堆内存中不再使用的对象(失去引用)的所占的内存,释放资源。

回收时间:

(1)当应用程序空闲时,即没有应用线程在运行时,GC会被调用。

(2)Java堆内存不足时,GC会被调用。

(3)调用System.gc()

java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写,两者的行为没有任何不同。 唯一的区别就是System.gc()写起来比Runtime.getRuntime().gc()简单点. 其实基本没什么机会用得到这个命令, 因为这个命令只是建议JVM安排GC运行, 还有可能完全被拒绝。 GC本身是会周期性的自动运行的,由JVM决定运行的时机,而且现在的版本有多种更智能的模式可以选择,还会根据运行的机器自动去做选择,就算真的有性能上的需求,也应该去对GC的运行机制进行微调,而不是通过使用这个命令来实现性能的优化。

14.DDL和DML的概念

DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter上。

DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。

最新文章

  1. SharePoint 2013 图文开发系列之创建内容类型
  2. mysql取前几行数据limit用法
  3. OpenStack 二次开发环境和开发工具的选择
  4. POJ 1961 Period(KMP)
  5. [King.yue]EXT.NET TextFieldFor添加正则表达式
  6. ALV 行列 颜色
  7. bzoj 2437 [Noi2011]兔子和鸡蛋 [二分图匹配]
  8. phper談談最近重構代碼的感受(2)
  9. Openjudge-NOI题库-出书最多
  10. [QML] Connections元素介绍
  11. NN-Neural Network
  12. 【Alpha】阶段 第七次 Scrum Meeting
  13. [Qt Quick] No rule to make target问题解决办法
  14. Kafka启动报错 : ERROR Processor got uncaught exception
  15. mysql批量更新数据
  16. 电路板上的元件R,T,D,C,U
  17. error: navicat 连接debian系列系统mysql 10038问题解决方案
  18. poj 2284 That Nice Euler Circuit 解题报告
  19. solr特点二:Facet
  20. SQL入门之多表查询

热门文章

  1. 蛋疼的_after_insert
  2. valgrind安装与使用
  3. [Python Study Notes] Basic I\O + File 操作
  4. configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
  5. cocos2d-x中处理touch事件
  6. entity framework core在独立类库下执行迁移操作
  7. HttpClient读取数据乱码的解决方案
  8. Flask從入門到入土(三)——模板
  9. scrapy 中日志的使用
  10. APP性能测试(CPU)