JAVA细碎知识点和主观题集合

JavaBean

1、什么是JavaBean?

一个可以重复使用的软件组件,是遵循一定标准、用java语言编写的一个类,该类的一个实例称为JavaBean,简称bean(非可视化的javabean)

 

2、编写bean

 

3、如何在JSP中使用javabean标签

第一种方式: 通过嵌入代码访问JavaBean

第二种方式:访问 JavaBeanJSP指令和标签


MVC

1、什么是MVC?

模型—视图—控制器,是一种设计模式

模型:用于存储数据的对象

视图:向控制器提交所需数据、显示模型中的数据

控制器:负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据做出处理,并将有关结果存储到模型中;同时负责让模型和视图进行必要的交
互,当模型中的数据变化时,让视图更新显示。

 

2、MVC的优点

3、基于Servlet+JSP+Javabean的MVC架构应该如何实现?

 


Web开发基础

1、信息服务方式?

用超文本传输协议HTTP(Hyper Text Transfer Protocol)传送
数据以超文本标记语言HTML(Hyper Text Markup Language)组织

2、URL组成部分?

URL由协议名、Web服务器地址、路径名和文件名四部分组成

3、HTTP、HTML和URL之间的关系

  • 浏览器会通过超文本传输协议(即HTTP)从Web服务器上将站点的网页代码提取出来,这个代码就是HTML 超文本标记语言(是由服务器(HTTP)返回),当浏览器接收到HTTP 服务器的响应之后,会对接收到的 HTML 代码进行解析和渲染,然后呈现给用户。

4、Web工作模式

采用B/S即浏览器/服务器模式,网站也是软件,也是一种具体的软件应用。

5、静态网页与动态网页的区别:Web服务器的处理方式不同

静态网页:标准的HTML文件,其文件扩展名是.htm.html

静态网页的工作原理:当在浏览器里输入一个网址回车后,就向服务器端提出了一个浏览网页的请求。服务器端接到请求后,就会找到要浏览的网页文件,然后发送到客户的浏览器,由浏览器对该网页文件进行解释,并将结果显示在浏览器窗口中。

不能实现用户与服务器之间的交互

保存在网页服务器的硬盘空间中

是一个独立的个体

不能直接获取数据库中的信息

 静态网页不是指网页中的元素都是静止不动的,而是指网页文件中没有程序代码,只有HTML(超文本标记语言)标记

动态网页:网页文件含有服务器端脚本。

当用户在浏览器里输入一个动态网页网址回车后,就向服务器端提出了一个浏览网页的请求。服务器端接到请求后,首先会找到要浏览的动态网页文件,
并执行该页中的服务器端脚本将脚本程序代码转换为静态网页内容。最后将整个静态网页发送给用户。

6、Web服务器与应用服务器

Web服务器:通过响应HTML页面来处理HTTP请求(Apache)

应用服务器:一个创建、部署、运行、集成和维护多层分布式企业级应用的平台(Tomcat)

7、HTML表单

动作:指定用于处理该表单的动态或脚本的路径

方法:选择将表单数据传输到服务器的方法。表单“方法”有“POST”和“GET”,默认为GET方法


Tomcat

1、Tomcat的端口号
(1)8080是Tomcat服务器的默认端号口。

不写上:8080的话,http的默认端口是80

(2)如何更改Tomcat的端口号

修改Tomcat服务器的conf目录下的主配置文件server.xml可以更改端口号


Servlet

1、Servlet不能独立存在,必须放在Servlet容器(Tomcat)中才能工作,Servlet在web容器中运行,不可在虚拟机中运行。

2、Servlet是一个java类,是一种运行在支持java应用服务器上的web组件。它与普通java类的区别在于它是一个专门处理请求和响应的java类

3、 Servlet API 

(1)Servlet容器可以创建实现ServletRequest和ServletResponse接口的对象,在Tomcat(服务器)中实现了接口。所以说,实现了接口就相当于符合规范,就可以做服务器。

(2)常用接口有:Servlet、ServletRequest、ServletResponse、HttpServletRequest、HTTPServletResponse

  • Servlet和ServletRequest、ServletResponse之间虚线的意思是:Servlet引用/依赖于ServletRequest、ServletResponse。Servlet接口中用到ServletRequest和ServletResponse作为形参。
  • HttpServletRequest是ServletRequest的子接口,HttpServletResponse是ServletResponse的子接口。

(3)常用类有:HttpServlet

主要方法有:

init:负责初始化Servlet对象

doGet:处理GET方式请求(直接在浏览器地址栏输入URL向服务器发送一次请求)

doPost:处理POST方式请求(通常是客户端通过一个表单把信息提交给服务器)

service:根据用户请求方式的不同(GET或POST,把请求分发到doGet或doPost方法)处理客户的请求

destroy:负责释放Servlet对象占用的资源。该方法仅执行一次,在Servlet容器停止执行该方法

(4)get 和post 的区别?【基础】

答:Form 中的get 和post 方法,在数据传输过程中分别对应了HTTP 协议中的

GET 和POST 方法。二者主要区别如下:

  • Get 将表单中数据按照variable=value 的形式,添加到action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action所指向URL;
  • Get 是不安全的,因为在传输过程,数据被放在请求的URL 中;Post 的所有操作对用户来说都是不可见的;
  • Get 传输的数据量小,这主要是因为受URL 长度限制;而Post 可以传输大量的数据,所以在上传文件只能使用Post;
  • Get 限制Form 表单的数据集必须为ASCII 字符,而Post 支持整个ISO10646字符集;
  • Get 是Form 的默认方法。一个表单到底是调用get方法还是post方法,要看客户端发什么样的请求了

(5)Servlet的doGet和doPost方法说明

① 如果不论用户请求类型是Post还是Get,服务器的处理过程完全相同,那么可以只在doPost方法中编写处理过程,而在doGet方法中再调用doPost

方法;或只在doGet方法中编写处理过程,而在doPost方法中再调用doGet方法。

② 如果根据请求的类型进行不同的处理,就需在两个方法中编写不同的处理过程。

③ 注意:用户请求为Get和Post方式时浏览器地址栏显示的内容不同。

浏览器中写?传参数的方式都是get方式的,get发送的数据在URL中是可以看出来的。“?”之后,全部都是自己传递的参数。“=”前面是参数名,“=”后面是要传入的参数值。例如:?from=360,意思从360转过来的。表单中既可以通过get方式发送请求,同时也可以post方式发送请求。但是,表单主要是以post的形式发送。

4、HttpServletRequest

(1)作用:包含了客户端请求的信息,可以通过实现该接口的对象取得客户端的一些信息

(2)主要方法

getParameter:获取客户以GET方式发送的参数或者以POST方式提交的form表单的控件值

getParameterValues:如果有多个同名或参数,则该方法可以获得对应的多个参数值,并且放到一个String数组里,如复选框集

5、HttpServletResponse

(1)作用:Servlet通过该对象及其方法可以向客户端浏览器返回结果

(2)主要方法:

setContentType:在给调用者发回响应前,必须用该方法来设置HTTP响应的MIME类型。response.setContentType("text/html;charset=gb2312");

getWriter:返回PrintWriter对象,利用该对象把Servlet的结果作为文本返回给调用者。PrintWriter对象自动把Java内部的Unicode编码字
符转换成正确的编码以使客户端能够阅读

getOutputStream:返回ServletOutputStream(java.io.OutputStream的子类)。此对象向客户发送二进制数据

6、Servlet容器的工作原理

Servlet容器属于java应用服务器的范畴,负责处理客户的请求。当客户请求到来时,Servlet容器获取请求,然后调用某个Servlet,并将Servlet的执行结果返回给客户。

7、容器在Servlet首次被调用时创建它的一个实例,并保持该实例在内存中,让它对所有的请求进行处理

8、若容器关闭重启或者Servlet类内容产生变化,则这个内存中的实例就会被销毁并在下一次被请求时重新被创建

9、共享变量

(1)定义:HttpServlet类的子类可以声明某些成员变量,所有请求该Servlet的用户共享该Servlet的成员变量

(2)原理:容器在Servlet首次被调用时创建它的一个实例,并保持该实例在内存中,让它对所有的请求进行处理

10、重定向与转发

(一)如何进行页面跳转?两种方式的区别是什么?

Servlet中通过验证后经常需要跳转到其他页面显示

1. SendRedirect方式  response.sendRedirect(url) (重定向)

2. Forward方式  request.getRequestDispatcher(url).forward (request,response)

(二)两者区别

(1)在Servlet中通过验证后经常需要跳转到其他页面显示

  • SendRedirect方式:response.sendRedirect(url)(重定向)
  • Forward方式:request.getRequestDispatcher(url).forward (request,response)
  • 重定向可以跳转到别的页面
  • 转发无法跳转到别的页面

(2)“response的redirect重定向”与“request的forward请求转发”实现不是完全一样的。

重定向最大的一个特点:重定向的目标无法获取用户的请求信息。结束本次用户的请求,发送新的请求给下一个页面,因为此时的请求和用户最初的请求已经不属同一请求了。

转发:继续把当前的请求对象传递给转发后的页面,因此前后可以共用同一个请求对象(共享请求数据,如查询字符串)。

(3)资源是否传递

重定向后在地址栏里最终显示的是重定向以后页面的URL(浏览器URL变化)

转发后在地址栏里最终显示的是转发前页面的URL(浏览器URL无变化)


JSP

1、JSP工作原理

当用户访问一个jsp页面的时候,会向Servlet发出请求,Servlet容器首先将jsp页面转化为对应的java代码,再将其编译为对应的class文件,再生成对象,就可以工作了。

2、为什么JSP页面第一次访问比较慢,但是从第二次访问之后速度变快呢?

第一次访问的时候,没有生成对象,需要编译生成对象,第二次访问的话,因为有对象了,就不再重复前面的过程了,所以会直接返回对象。

3、JSP字节码:最终Servlet对应的编译后的class文件

功能:

(1)把JSP中普通的HTML标记交给客户的浏览器执行显示。

(2)JSP标记、变量和方法声明、Java程序片服务器负责执行,将需要显示的结果发送给客户的浏览器。

(3)Java表达式服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。

4、JSP表达式

<%= %>表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示

5、声明标识

<%! %>声明全局的变量和方法,作用域:整个JSP页面,所有用户线程共。享JSP页面的成员变量

6、Java代码片段

<% %>程序片中声明的变量称为JSP页面的局部变量,该局部变量在页面后继的所有程序片和表达式有效,多个客户请求一个JSP页面时 , Java程序片将被执行多次,分别在不同的线程中执行,占用不同的内存空间。

7、Java程序片中的局部变量和JSP页面的成员变量的区别是什么

  • 每次执行,都会执行Java程序片中里面的代码。但是<%!  %>中是,只执行一次,生成对象之后就不再执行了。
  • 局部变量是对应的用户都会创建一份,但是成员变量的话,所有用户对应的都是一份
  • Java程序片中的局部变量:每个用户访问,每次访问,每次执行都会创建一份
  • JSP页面的成员变量只有一份

8、jsp注释

 


指令标记

1、定义

指令标识:设定整个JSP页面范围内都有效的信息(属性和属性的值),被服务器解释执行

2、语法格式

 <%@“指令名“空格”属性1=“属性1的值”    属性2=“属性2的值”>

3、page指令

(1)contentType属性:<%@ page contentType= "text/html;charset=GB2312" %>

属性值的一般格式:

  • “MIME类型”,通过MIME指定返回的是什么格式的
  • “MIME类型;charset =编码”
  • MIME:描述消息内容类型的因特网标准。MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

(2)import属性:<%@ page import = "java.util.**”%>

4、include指令

(1)特点:

静态嵌入:编译阶段完成文件的嵌入。JSP页面要进行转换,转换成java文件,然后再进行编译成class文件,编译阶段就会完成文件的嵌入工作。

(2)语法:<%@ include file= "文件的URL" %> 

 

题目:什么是JSP指令?语法是什么?在何时起作用?(编译)。有哪些常用的JSP指令?(2个)

(1)JSP指令主要用来提供整个JSP网页相关的信息,并且用来设定JSP页面的相关属性

(2)JSP 指令的一般语法形式为: <%@ 指令名 属性="值" %>

(3)常用指令:page、include

page指令定义JSP页面的一些属性和这些属性的值。它的作用范围是整个JSP页面。

language该属性用于指定当前JSP页面将使用的语言,当前只能为“Java”。例如:<%@ page language ="java" %>

import:该属性用于指定当前页面需要导入的包或类,与Java程序中的import语句类似。如果需要导入多个包或类,则用逗号隔开。例如:<%@ page import="java.util.*,java.sql.*" %>

contentType用于指定向客户端输出内容的类型(MIME)。例如:<%@ page contentType = “text/html;charset=utf-8” pageEncoding=“utf-8”%>

include指令的作用是在页面的适当位置整体嵌入另一个文件,在JSP页面上出现该指令的位置处静态嵌入一个文件

静态嵌入:编译阶段完成文件的嵌入。

语法:<%@ include file="……" %>

优点:采用JSP的include指令来创建复合式页面,可以提高代码的重用性。

JSP中主要的程序就是脚本程序,其中包括三个部分:JSP声明(Declaration)、JSP表达式(Expression)和JSP代码段(Scriptlet

三种脚本程序基本语法都以“<%”开头、“%>”结尾的


动作标记

1、include动作标记

(1)特点:指明当前JSP页面执行阶段所需包含的其他文件,在执行的时候嵌入所需要的文件

(2)语法格式

  • <jsp:include page="文件的URL路径/">
  • <jsp:include page= "文件的URL" >  param子标记   </jsp:include>  param子标记:在包含文件的时候,可以传一些参数进去

题目:include指令和include动作的区别是什么?

(一)语法不同

  • 动作标记: <jsp:include page=.../>
  • 指令标记: <%@ include file=...%>

(二)处理方式、处理时间不同

  • JSP动作标记在JSP页面运行才处理文件,优点是能更加灵活的处理所需的文件,缺点是执行速度要慢一些 //灵活是指可以传参数//速度慢是因为,每次在执行的时候才包含它,肯定要重新编译然后再处理
  • JSP指令标记使用嵌入式方式处理文件,在编译阶段就处理所需文件,优点是页面的执行速度快;//只包含文件,不能传参

2、 param动作标记

(1)定义

param动作标记不可以单独使用,但是可以作为include、forward动作标记的子标记来使用,该标记以“名字-值”对的形式,为这些动作标记提供附加信息

(2)标记格式

<jsp:param name ="名字"  value="指定给name属性的值"/>

3、forward动作标记

(1)作用

从该标记出现处停止当前JSP页面的继续执行,而转向执行forward动作标记中page属性所指定的JSP页面

(2)forward动作标记的两种格式

  • <jsp:forward page= "要转向的页面"/>
  • <jsp:forward page="要转向的页面">........param子标记........</jsp:forward>

(3)转发形式,浏览器的地址栏中地址没有变化


JSP内置对象

1、不用声明就可以在JSP页面的脚本(Java程序片和Java表达式)中使用的对象。 

2、JSP主要的内置对象(内置对象不能用在JSP的<%! %>中使用,因为内置对象是方法的局部变量,因此不能在类中直接使用内置对象

  • out
  • request
  • response
  • session
  • application
  • page

3、request、response、session、application四者的区别 

(1)四个结构中的数据的共享范围不同:application是一个网页一份;request是同一个请求一份;session是一个用户一份;page是一个用户对应的一个页面一份

(2)Servlet中也可以直接访问request和response,但是不能直接访问session和application,可以间接访问session和application

4、request对象(转发)

public void setAttribute(String key, Object obj)

public String getParameter(String s)//这个是request中私有的

public Object  getAttribute(String key)

public  void  setCharacterEncoding//设置编码格式
 

5、response对象(重定向)

使用response对象sendRedirect(url)方法

设置响应的HTTP头;动态响应contentType属性

6、session对象

(1)原理

session对象被分配了一个String类型的ID,服务器将ID发送到客户端,存放在客户的Cookie中。

  • 同一用户在同一Web服务目录中的各个页面的session相同。
  • 不同用户的session对象互不相同,具有不同的ID。

(2)session 的失效

  • 客户关闭浏览器
  •  session到达了最大生存时间

(3)作用

  • 通过服务器将session ID作为一个cookie存储在用户的Web浏览器中来唯一标识每个用户会话,session ID的值是一个不会重复的字符串。
  • session对象可用来存储用户的信息,这些信息可以在不同页面被传递

7、application对象

       一个Web项目只有一个application对象,它开始于服务器的启动,直到服务器的关闭。在此期间,application对象一直存在于服务器内存中。application对象是所有用户共享的,可以存放公用的全局变量。

       与application对象相比,session对象则是每个客户各自专有的,不同用户的session对象之间不可以共享和交互数据。


第一章

1、java的各个版本:javaSE、javaEE、javaME

2、面向过程和面向对象程序设计语言的区别

面向过程的程序设计语言:

  基于解决的问题的步骤的视角,将程序划分为单个的功能,程序由函数+数据结构组成,两者独立分离

面向对象的程序设计语言

   以人观察世界的视角:世界是由对象构成的,类、对象、对象的关系、对象的通讯和交互

3、编译执行和解释执行语言的区别(java需要编译和解释)

编译执行的语言

   通过特定的工具软件将源代码经过目标代码转换成机器代码(可执行程序),然后直接交操作系统执行,程序是作为一个整体来运行的

解释执行的语言

    读入一句执行一句,不需要整体编译链接,与操作系统的相关性相对较小,但运行效率较低,而且需要一定的软件环境来做源代码解释器。

4、什么是java虚拟机工作原理是什么?jdk和jre的区别?

虚拟机:在真实的机器中用软件模拟实现的一种虚拟机器。

JVM:解释执行.class文件(字节码),把字节码解释成具体平台上的机器指令执行

优点:Java代码可以“一次编写,处处运行”。

JDK是开发工具包,相当于是一个编译器。它是面向开发者的。安装jdk之后,有jre和javac,没有eclipse和javac

JRE是运行环境,相当于jvm虚拟机。jdk开发出来的java程序必须在jvm中运行,jre就提供了这么一个环境。它是面向使用者的,包括Java 虚拟机 (JVM)、Java核心类和支持文件,不包含开发工具 -- 编译器、调试器和其它工具。

5、手工编译和运行

(1)没有配置path路径,最初始的手工编译运行   https://blog.csdn.net/fighting123678/article/details/82779639

(2)配置path路径:我的电脑——右击——属性——高级系统设置——环境变量——系统变量中添加(不是在用户变量中添加就,因为用,户变量设定之后,只能由用户使用,系统变量的话在整个windows中都可以使用)——选中Path——在框中输入javac的路径(注意是到bin文件夹下)——点击确定就可以了

(3)配置JAVA_HOME路径:我的电脑——右击——属性——高级系统设置——环境变量——点击系统变量中的新建——在变量值的时候注意是只要到jdk中就好,不用到bin

然后单击path——将原来E:\Java\jdk-10.0.2\bin改成%JAVA_HOME%\bin

 

配置JAVA_HOME的好处:

  • 将E:\Java\jdk-10.0.2\bin改成%JAVA_HOME%\bin,这俩是等同的,而且后者与前者相比,后者引用JAVA_HOME代表的路径,那天把jdk改了,可能是不同版本1.7/1.8,那么该的时候只改JAVA_HOME变量就好了,别的地方不需要改变
  •  

 

(4)配置classpath环境变量路径(不需要转到class所在的地方就可以解释class文件):

设置classpath环境后,即使java.class不在C盘中,也可以照常运行,因为,配置过CLASSPATH环境后,java命令是按照CLASSPATH变量中的路径来的寻找class文件的

右击我的电脑——属性——高级设置——环境变量——点击系统变量中的新建——变量值是java.class所处的地方

 

6、java的IDE
– IntelliJ IDEA
– Eclipse
– NetBeans
– JBuilder


Java基础语法

1、占字节问题

byte:1个字节,内存占8位,表数范围:-2的7次方—2的7次方-1

boolean:1个字节,内存占8位,表数范围:-2的7次方—2的7次方-1

char:2个字节,内存占16位,表数范围:-2的15次方—2的15次方-1

short:2个字节,内存占16位,表数范围:-2的15次方—2的15次方-1

int:4个字节,内存占32位,表数范围:-2的31次方—2的31次方-1)

long:8个字节,内存占64位,表数范围:-2的63次方—2的63次方-1

float:4字节,32位,单精度

double:8字节,64位,双精度

byte、short、char互相不转换自动为int

2、变量使用三部曲声明,赋值,使用


类和对象

1、面向对象语言的基本特点:封装性、继承性、多态性

2、什么是类和对象,什么是封装性

类 :具有相同属性和行为的对象的抽象

对象:属性(静态特征、数据)和行为(动态特征、方法)的封装体。

类和对象的关系:类是对象的类型,对象是类的实例。

生成对象的格式:类名 对象变量名 = new 类名([参数]);

封装性:是把普通的对象进行封装,对象的属性设为私有的,对外提供get和set方法,其他类只能通过get和set对对象属性值进行操作

3、JVM内存分配

heap(堆):存放动态创建的对象(new)

stack(栈):存放局部变量、引用

4、构造函数作用,定义要求。默认构造方法和对类成员的初始化。构造和初始化顺序(4步)

(1)构造函数的特点:不能指定返回值类型;名字必须与类名一样

(2)构造和初始化对象顺序:

1>申请内存空间,为新对象分配空间并初始化,所有基本类型数据设置成了默认值(如,整数类型是0,布尔型为false),而引用类型则被设置成null;

2>执行显示初始化

3>执行构造方法;

4>将对该对象的引用赋值给引用变量。

5、什么是方法重载要求是什么和方法重写有什么区别

当多个方法具有相同的名字而含有不同的参数时,产生重载。(参数的个数或者参数的类型不同,与返回值是没有关系

6、this引用的作用

在类的方法定义中,使用this关键字代表使用该方法的对象的引用,其值是当前对象的引用。

7、内存中的存放位置

(1)java中,除了基本类型以外的变量类型都是引用类型,存放在栈区

静态变量和字符串常量放在数据区

8、如何进行垃圾回收

垃圾回收对象之前,调用Object的finalize方法

(1)finalize方法是JAVA里面所有类中都有的功能,功能是,当垃圾回收器要回收这个对象的时候,会自动调用finalize方法。

(2)垃圾回收是依靠一种算法,程序员是无法精确地控制进行控制。

 


继承

1、什么是继承带来的好处是什么

定义:指一个类包含另一个类的属性和行为,使其成为自己的属性和行为

好处:通过继承,子类自动拥有父类的所有普通成员(成员变量和方法)不继承构造父类的构造函数

2、类成员的可访问性。(4个关键字)

3、什么是重写有哪些语法要求

重写子类覆盖父类的同名方法,在子类中对继承来的方法重新编码

重写方法的要求

两同:必须和被重写方法有相同的名称、参数列表;

两小于等于:1)子类方法的返回值类型比父类方法的返回值类型更小(子类)或相等;2)子类方法声明抛出的异常类要比父类方法声明抛出的异常类更小(子类)或相等。

一大于等于:子类方法的访问权限要比父类方法的访问权限更大或相等。即,重写方法不能使用比被重写方法更严格的访问权限。

4、super关键字的作用什么

作用:使用super引用父类中的成员和方法。

super关键字不能访问父类中private的成员变量和方法

5、能否继承父类的构造函数?子类的构造函数的执行过程。如何显式调用父类构造函数?

不能

子类的构造方法中必须要调用父类的构造方法。

子类通过super(参数列表)调用父类构造方法,调用super的语句必须放在子类构造方法的第一行。

若子类构造方法中没有显式调用父类构造方法,则系统默认调用父类无参数的构造方法;若父类中没有定义无参数的构造方法,编译出错。

6、

(1)强制类型转换的时候,换的是引用的类型

(2)用instanceof判断的是该类所指对象的类型(不是引用类型)与后面对象之间的关系

(3)是否可以使用某一个变量看的是,这个类的引用类型与变量之间的关系。

(4)子类类型的对象可以赋值给父类类型的引用,父类类型的引用不能访问子类新增成员对象和方

7、final关键字

阻止类被继承,阻止方法被重写


多态

1、Java中的多态

  • 静态多态性(方法的重载)
  • 动态多态性

2、

3、多态存在的条件

  • 要有继承
  • 要有方法的重写
  • 使用父类引用指向子类对象

静态成员具有继承性静态成员不具有(动态)多态性,子类可以继承父类的静态成员

父类对象不可以调用子类新建的方法或者是对象,但如果子类重写了父类的某个方法,则此时父类引用调用的是子类方法的内容。


抽象类

1、抽象类不能被实例化,但是抽象类中可以有构造函数

2、抽象类是不完整的,所以不能用new,不能新建抽象类对象比如Pet是一个抽象类,那样的话,Pet a=new Pet();这样是错误的,因为抽象类是不完整的,没法实现创建


接口

1、无构造方法(与类不同),不能直接实例化(与抽象类类似)

2、接口中的成员全是常量成员 public static final,接口中的方法全是抽象方法public abstract,接口中,只允许public,abstract,default,static,public abstract,public static,来作为修饰接口中的方法,其它是不允许的


1、StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)
StringBuffer和StringBuilder都实现了toString的重载,但是没有实现equals方法的重载。

2、hashcode原理

在元素数量大的情况下,大大提高检索的效率。

3、迭代器的作用如何获得迭代器如何利用迭代器进行容器遍历?(迭代器并非是容器,它的功能是遍历容器

容器的遍历:必须根据容器的确切类型进行编码。

例如,对List的编码,要改为Set

要求:不关心容器的类型,如何才能不重写代码就能应用于不同类型的容器?

迭代器:以统一的方式遍历容器中的对象,程序员不必知道该容器的底层结构。

一种设计模式

4、

5、

6、

7、

若一个方法抛出多个已检查异常,则在方法定义头部列出所有的异常,每个异常用“,”分开。void method1() throws Exception1,Exception2,...


1、什么是节点流什么是处理流?有哪些常见的节点流和处理流?

节点流:可以从一个特定的数据源读取数据。

处理流:连接在已存在的流(节点流或处理流)之上,通过对已有流的处理为程序提供更强大的读写能力。数据执行某种处理

2、flush将清空缓存,即将缓存的数据写到文件里

3、输入输出重定向的方法

将标准输入、输出重定向至其他输入输出流

System.setIn(InputStream in)

System.setIn(new FileInputStream(“a.txt”));

System.setOut(OutputStream out)

System.setOut(new FileOutputStream(“b.txt”));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值