当前位置:网站首页 > Java基础 > 正文

java基础的简答题



第一章

(1) 请简述什么是Java语言?

        Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 

(2) 请简述什么是JRE和JDK?

        JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。

        JRE(Java Runtime Environment)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

        所以JDK和JRE的区别就是一个用于开发,一个用于运行,它们都是java开发者所必备的。

(3) 请简述对JVM的理解?

       JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。Java通过JVM实现跨平台,一次编译,到处运行。

(4) 请简述Java有什么特点?

       Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

第二章

(1) 请简述Java的8种基本类型及所占内存大小?

       char 2,byte 1,short 2,int 4,long 8, float 4, double 8,boolean 1

(2) 请简述类型转换的原理?

       类型转换分为自动类型转换和强制类型转换两种。

       自动类型转换:源类型取值范围小于目标类型

       强制类型转换:源类型取值范围不小于目标类型,会发生溢出、数据丢失

       boolean不能与其它任何基本类型转换。

(3) 请简述&和&&的区别?

       &和&&都是逻辑与运算符,两个操作数结果都为真,表达式最终才为真,否则为假。

       &:总是会执行左右两个操作数

       &&:当左操作数为假时,不论右操作数为何值,表达式最终结果都为假,右操作数将不会被执行。

(4) 请简述break和continue语句的区别?

       break和continue都是流程控制语句。

       break:结束当前循环

       continue:结束本次循环,执行下一次循环。

第三章

(1) 请简述什么时候为数组分配内存?

       数组在初始化时分配内存

(2) 请简述数组一旦被创建,大小能不能改变?

       数组一旦被创建,它的大小就不能改变,可以使用array.length的得到数组的大小。

       int[] list;

       list = new int[10];//初始化数组

       list = new int[20];//重新给数组变量赋值,而不是改变原数组的大小

(3) 请简述实参是如何传递给方法的?

       调用方法时,程序给形参分配存储空间,将实参的值赋给形参。

(4) 请简述什么是方法的重载?

       方法重载:方法名相同,参数列表(参数类型、参数顺序和参数数量)不同

第四章

(1)请简述什么是面向对象?

       面向对象是用对象来模拟现实实际的事物,用对象之间的关系描述事物之间的联系。

(2)请简述构造方法与普通成员方法的区别?

       格式区别:

              构造方法和类名相同,并且没有返回类型,也没有返回值。

              普通成员方法可以任意起名,必须有返回类型,可以没有返回值。

       作用区别:

              构造方法用于创建对象,并进行初始化值。

              普通成员方法是用于完成特定功能的。

       调用区别:

              构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数

              普通成员方法是由创建好的对象调用,可以调用多次

(3)请简述什么是垃圾回收机制?

       Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间,回收之前会自动调用finalize()方法,用于清理资源。

(4)请简述类与对象之间的关系?

       类是对象的模板,对象是类的实例,类只能通过对象才能使用。

第五章

(1)请简述什么是继承?

       继承:是从原有的类中派生出新的类,新的类能继承原有类的属性与行为,并扩展新的功能。

(2)请简述什么是多态?什么是动态绑定?

       多态:父类变量可以引用子类对象,根据被引用的子类对象的不同,得多不同的结果的现象就是多态。

       动态绑定:当调用实例方法时,由Java虚拟机动态地决定所调用的方法。

(3)请简述方法的重载与重写的区别?

       方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

(4)请简述抽象类和接口的区别?

       ①抽象类里可以有构造方法,而接口内不能有构造方法。

       ②抽象类中可以有普通成员变量,而接口中不能有普通成员变量。

       ③抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。

       ④抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,且默认即为public abstract类型。

       ⑤抽象类中可以包含静态方法,接口内不能包含静态方法。

       ⑥抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static类型,并且默认为public static类型。

       ⑦一个类可以实现多个接口,但只能继承一个抽象类。

       ⑧接口更多的是在系统框架设计方法发挥作用,主要定义模块之间的通信,而抽象类在代码实现方面发挥作用,可以实现代码的重用。

第六章

(1)请简述什么是异常?

       异常是在程序执行期间中断指令的正常流程的事件。

(2)请简述什么是必检异常?什么是免检异常?

       必检异常:Java语言会强制要求编码者检查处理的异常,Exception及其子类都是必检异常。

       免检异常:Java语言不强制要求编写代码捕获或声明的异常,Error和RuntimeException以及它们的子类都是免检异常。

(3)请简述Error和Exception有什么区别?

       Error:错误类,是由程序和外部环境引起的错误,该类错误如果发生,程序立即崩溃,Java不要求处理该类异常。

       Exception:异常类,是有程序和外部环境所引起的错误,Java强制要求必须处理该类异常。

(4)请简述关键字throw的作用是?

       throw:用于抛出异常类的实例

第七章

(1)请简述int和Integer有什么区别?

       int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。

(2)请简述Math.round(11.5)等于多少?

       Math.round(11.5)等于12,因为round方法表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整。

(3)请简述如何格式化日期?

       可以用SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

(4)请简述String类、StringBuffer类的区别?

       String类是不可变的字符序列,StringBuffer类是可变的字符序列,String类占用内存小,但操作效率低,后两者占用内存比String类多,但操作效率高,StringBuffer类还兼顾了线程安全。

第八章

(1)请简述Set和List有哪些区别?

       List是有序的可重复的Collection,使用此接口能够精确的控制每个元素插入的位置。能够使用索引高效地访问List中的元素,这类似于Java的数组。Set是一种无序的不包含重复元素的Collection,相比List,它可以更高效地处理增添和删除元素。

(2)请简述Collection与Collections有什么区别?

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

(3)请简述Iterator和ListIterator的区别是什么?

       Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引等。

(4)请简述Enumeration接口和Iterator接口的区别有哪些?

       Enumeration速度是Iterator的2倍,同时占用更少的内存。但是,Iterator远远比Enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象。同时,Iterator允许调用者删除底层集合里面的元素,这对Enumeration来说是不可能的。

(5)请简述使用泛型的好处是什么?

       它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCastException。程序的可读性和健壮性更高。

第九章

(1)请简述java中有几种类型的流?

       字节流和字符流;其中字节流继承于InputStream OutputStream,字符流继承于Reader Writer。

(2)请简述什么是java序列化?

       序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

(3)请简述如何实现java序列化?

       将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

(4)请简述什么是标准的I/O流?

       在java语言中,用stdin表示键盘,用stdout表示监视器。他们均被封装在System类的类变量in和out中,对应于系统调用System.in和System.out。这样的两个流加上System.err统称为标准流,它们是在System类中声明的3个类变量:public static InputStream in、publicstaticPrintStream out和public static PrintStream err

(5)请简述3个常见的字符集,实际开发中最常用的是哪种?

       ASCII、ISO-8859-1、GB2312、GBK、Unicode、UTF-8(写出3种即可),其中开发中最常用的是UTF-8。

第十章

(1)请简述AWT和Swing的区别?

       AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。对于一个嵌入式应用来说,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT 当然成了嵌入式Java的第一选择。而在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素,所以在标准版的Java中则提倡使用Swing,也就是通过牺牲速度来实现应用程序的功能。

(2)请简述java.awt包中提供了哪些布局管理器?

       在java.awt包中提供了五种布局管理器,分别是FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout(网格包布局管理器)和CardLayout(卡片布局管理器)。

(3)请简述在事件处理机制中所涉及的概念?

       事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。在AWT事件处理机制中有几个重要的概念:

       ①事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次操作)。

       ②事件源(组件):事件发生的场所,通常就是产生事件的组件。

       ③监听器(Listener):负责监听事件源上发生的事件,并对各种事件做出响应处理的对象(对象中包含事件处理器)。

       ④事件处理器:监听器对象对接收的事件对象进行相应处理的方法。

(4)请简述GUI中实现事件监听的步骤?

       通过实现XxxListener接口或者继承XxxAdapter类实现一个事件监听器类,并对处理监听动作的方法进行重写,然后创建事件源对象和事件监听器对象,最后调用事件源的addXxxLisntener()方法,为事件源注册事件监听器对象。

(5)请简述AWT的常用事件有哪些?

       AWT中提供了各种事件供用户选择,常见的有窗体事件、鼠标事件、键盘事件、动作事件等。

第十一章

(1)请简述什么是线程?什么是进程?

       线程可以彼此独立的执行,它是一种实现并发机制的有效手段,可以同时使用多个线程来完成不同的任务,并且一般用户在使用多线程时并不考虑底层处理的细节。

       进程(process)是程序的一次执行过程,或是正在运行的一个程序。线程是比进程更小的程序执行单位,一个进程可以启动多个线程同时运行,不同线程之间可以共享相同的内存区域和数据。

(2)请简述Java有哪几种创建线程的方式?

       有三种方式,如下所示:

      ①继承Thread类:编写简单,如果需要访问当前线程,则无需使用Thread.currentThread()方法,直接使用this即可获得当前线程。但线程类已经继承了Thread类,所以不能再继承其他父类。

       ②实现Runnable接口:避免由于Java单继承带来的局限性。但编程稍微复杂,如果要访问当前线程,则必须使用Thread.currentThread()方法。

       ③使用Callable接口和Future接口创建多线程:避免由于Java单继承带来的局限性,有返回值,可以抛出异常。但编程稍微复杂,如果要访问当前线程,则必须使用Thread.currentThread()方法。

java基础的简答题

(3)请简述什么是线程的生命周期?

       线程从新建到死亡称为线程的生命周期。

(4)请简述启动一个线程是用什么方法?

       启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度

并执行。这并不意味着线程就会立即运行。

第十二章

(1)请简述TCP/IP的参考模型层次结构?

       一共有4层,分别是物理+数据链路层、网络层、传输层和应用层。

(2)请简述你对IP地址和端口号的理解?

       如果把程序当做人,把计算机网络当做类似邮递员的角色,当一个程序需要发送数据时,指定目的地的IP地址就像指定了目的地的街道或楼号,但这样还是找不到目的地的,还需要指定房间号,也就是端口号。

(3)请简述UDP和TCP的区别?

       UDP将数据及源和目的封装成数据包中,不需要建立连接,每个数据报的大小在限制在64k内,因无连接,所以是不可靠协议,效率高;TCP需要通过三次握手完成连接,是可靠协议,在连接中能进行大数据量传输,传输前需要建立连接,所以效率低。

(4)请简述如何解决端口号冲突的问题?

       首先打开终端,输入命令“netstat -ano”查看占用端口号程序的PID,然后在Windows资源管理器中通过PID找到该进程,结束进程即可。

(5)请简述建立TCP连接“三次握手”的过程?

版权声明


相关文章:

  • java基础中常见的坑2024-11-05 19:26:05
  • java基础进阶精简2024-11-05 19:26:05
  • java21天基础入门2024-11-05 19:26:05
  • 如何考察java基础2024-11-05 19:26:05
  • java的基础知识点2024-11-05 19:26:05
  • java 判断是基础类2024-11-05 19:26:05
  • java基础sql基础面试题2024-11-05 19:26:05
  • 大学java基础知识点总结2024-11-05 19:26:05
  • java背诵基础2024-11-05 19:26:05
  • java基础知识点笔记2024-11-05 19:26:05