Java基础知识(面试笔试工作必备)

  接下来我们从【Java定义】、【编程环境】、【编程工具】、【常见面试题】这四方面来入手,开启Java基础学习之路。

 

  …

 

  【Java定义】

 

  主要从以下方面开始讲解:

 

   1、Java概念

 

   2、Java语言特点

 

   3、Java编程范围

 

   4、Java运行原理

 

   5、Java基本包java.lang

 

   6、Java的类与接口

 

   7、Java的IO流

 

  …

 

  一、Java概念

 

   Java是一门功能强大、简单易用,且半编译半解释的面向对象OPP这类的高级编程语言。

 

   Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

 

   Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

 

  …

 

  二、Java语言特点

 

  功能强大,简单易用。

 

  简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性……

 

  三、Java编程范围

 

   1、Web应用程序(JavaEE)

 

   2、移动端应用程序(JavaME,即分布式系统和嵌入式系统应用程序)

 

   3、桌面应用程序(JavaSE)

 

  ……

 

  …

 

  四、Java运行原理

 

   Java源文件.java——执行javac.exe编译器的javac命令——>将.java源文件编译为方便机器读取的.class字节码文件——执行JVM中java.exe解释器的java命令——>将.class字节码文件加载到Java虚拟机JVM中便可识别读取正常运行了。

 

   Java源程序(.java文件),执行编译器javac命令(javac.exe)…

 

  将.java源文件,编译为.class字节码文件。

 

  然后Java字节码文件(.class文件),再由Java解释执行器(java.exe)…

 

  将字节码文件.class,加载到Java虚拟机(JVM)之中。

 

  最后,字节码文件.class,就会在Java虚拟机JVM之中执行了。

 

  …

 

  五、Java基本包java.lang

 

  包中有接口和类。

 

  接口:

 

   Comparable、Cloneable、Runable等

 

  类:

 

  包含八个基本数据类型的封装类…

 

  分别是Byte、Short、Integer、Long、Boolean、Character、Float、Double。

 

  以及其它类。

 

  ……

 

  六、Java的类与接口

 

  在Java中,是“单继承多实现”的。

 

  也就是说,一个人类只能继承一个父类,而它却可以实现多个接口。

 

  其中…

 

  接口可以继承接口。

 

  抽象类可以实现(implements)接口。

 

  抽象类可以继承实体类,但前提是,实体类必须有明确的构造函数。

 

  匿名内部类(Anonymous Inner Class )既可以继承(extends)其它类,也可以实现(implements)接口(Interface),在Swing编程中常用此方式。

 

   1、Dictionary类

 

  主要用于将关键字转换成值,该类接收一个关键字并返回一个值。

 

   Dictionary是一个抽象类,它是Hashtable的超类。

 

  2、Properties类

 

  它扩展了Hashtable类。

 

  但Properties对象的关键字和值必须是String类型。

 

  并能将对象写入一个输出流,并保存在一个文件中,然后可以把它读回一个输入流。

 

  七、Java的IO流

 

  字节流:

 

  数据在存储时与传输时都是以字节为单位进行的。

 

  通常用于读写二进制数据,如图像和声音文件。

 

  字符流:

 

  数据在存储与传输时,都是以字符为单位进行的。

 

  流:

 

  对数据源的一种抽象,其目的是想用统一的方式访问各种不同的数据源(文件、网络、内存的缓冲区)。

 

  文件读写的基本类:

 

   File类提供定位本地文件系统,描述文件和目录的功能。

 

  管道流用于在线程之间通信:

 

   PipedInputStream、PipedOutputStream、PipedReader、PipedWriter。

 

  【编程环境】

 

  JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。

 

   JDK是整个Java的核心。

 

  它包括了Java运行环境JRE(Java Runtime Environment),以及一些Java工具,还有Java的核心类库(Java API)。

 

  所以说,不论是什么Java应用服务器,实质上都是内置了某个版本的JDK。

 

  主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK。

 

  例如,IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK。

 

  另外,可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment)。

 

   JRE是支持Java程序运行的标准环境。

 

  JRE是个运行环境,JDK是个开发环境。

 

  因此,写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。

 

  而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。

 

  但,由于JDK包含了许多与运行无关的内容,占用的空间较大。

 

  因此,运行普通的Java程序无须安装JDK,而只需要安装JRE即可。

 

  【编程工具】

 

  1、Eclipse:

 

  它是免费的,所以颇受开发公司青睐。

 

  一个开放源代码的、基于Java的可扩展开发平台。

 

  2、NetBeans:

 

  开放源码的Java集成开发环境,适用于各种客户机和Web应用。

 

  3、IntelliJ IDEA:

 

  在代码自动提示、代码分析等方面的具有很好的功能。

 

  4、MyEclipse:

 

  它是收费的,其功能很强大且实用。

 

  它是由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境。

 

  5、EditPlus:

 

  如果正确配置Java的编译器“Javac”(javac.exe)以及解释器“Java”(java.exe)后,便可直接使用EditPlus,进行编译执行Java程序了。

 

  【常见面试题】

 

  一、ArrayList和Vector的区别?

 

  答…

 

  两者主要有以下两点区别:

 

  1、同步性不同

 

   Vector是线程安全的,也就是说是同步的。

 

  而ArrayList,不是同步的,它是线程序不安全的,是异步的。

 

  2、数据增长不同

 

  当需要增长时…

 

   Vector默认增长为原来的一培。

 

  而ArrayList,却是原来的一半。

 

  …

 

  二、ArrayList,Vector, LinkedList的存储性能和特性?

 

  ArrayList和Vector都是使用数组方式存储数据。

 

  此数组元素数大于实际存储的数据,以便增加和插入元素。

 

  它们都允许直接按序号索引元素。

 

  但是插入元素要涉及数组元素移动等内存操作,所以,索引数据快而插入数据慢。

 

  而Vector…

 

  由于使用了synchronized方法(线程安全)。

 

  通常,性能上较ArrayList差。

 

  而LinkedList…

 

  使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历。

 

  但其插入数据时,只需要记录本项的前后项即可,所以插入速度较快。

 

  以上,就是三者的存储性能和特性了。

 

  …

 

  三、HashMap和Hashtable的区别?

 

  答…

 

  主要有以下三个方面的区别:

 

   1、历史原因

 

   Hashtable是基于陈旧的Dictionary类的。

 

  而HashMap则是Java 1.2引进的Map接口的实现。

 

   2、同步性

 

   Hashtable是线程安全的,也就是说是同步的。

 

  而HashMap则是线程序不安全的,它是异步的。

 

   3、值

 

   Hashtable是HashMap的同步版本。

 

  只有HashMap,允许在一个集合中有一个null键,以及多个null值。

 

   HashMap允许有null值和一个null键,但是,Hashtable不允许有任何内容为null。

 

   Hashtable类的对象必须覆盖Object类的hashCode()和equals()方法。

 

  …

 

  四、java.lang包中,还有哪些集合类型?

 

   1、

 

   ArrayList提供快速遍历和快速访问。

 

  现在设计了新的 RandomAccess接口,它指出这种列表支持快速随机访问。

 

   Vector也实现了RandomAccess接口。

 

   2、

 

  遍历HashSet与HashMap时,其顺序是未知的(但添加删除快)。

 

   LinkedHashSet和LinkedHashSet是按照元素的插入的顺序遍历的(遍历快)。

 

   3、

 

   TreeSet和TreeMap将保证元素按照元素的自然顺序进行排列。

 

  也可以使用一个用户自己实现的比较规则。

 

   4、

 

   HashSet有一个散列表支持它。

 

  它为基本操作提供固定时间性能。

 

   TreeSet它确保了排序集将按元素升序,根据自然顺序排序。

 

  (本章完)

 

5a02cd2234ac481f8f1e1af315045fe7.jpg

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值