Java基础知识盘点(一)- 基础篇
基本功
面向对象特征
封装、继承、多态和抽象
1、封装:给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法,来改变它内部的数据。
在Java中,其访问权限有3种修饰符:public、private、protected。每一个修饰符给其他的位于同一包或者不同包对象都赋予了不同的访问权限。
好处:
1、通过隐藏对象的属性,来保护对象内部的状态。
2、提高了代码的可用性和可维护性,因为对象的行为可以被单独改变或者扩展。
3、禁止对象之间的不良交互,提高模块化。
2、继承:给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用性,也可以在不修改类的情况下,给现存的类添加新特性。
3、多态:是编程语言给不同的数据类型做相同的接口展示的一种能力。一个多态类型的操作可以用在其他类型的值上面。
4、抽象:是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴露接口而不包含方式实现的抽象类。
final,finally,finalize的区别
1、final,一种修饰符,如果类的定义中增加这个修饰符那么就意味着该类不能派生出新的子类,不能作为父类被继承,给变量或者方法声明为final,意味着他们不能被修改。
2、finally,异常语句的控制执行动作,当语句出现异常的时候,就会跳入到catch语句中,然后控制执行会进入到finally代码块中。
3、finalize,方法名,清理系统资源,在垃圾收集器将对象清理之前做必要的清理工作。
int和Integer 有什么区别
int是基础数据类型;integer是其包装类。
为什么要提供包装类?
是为了在各种类型间转化,这里会涉及到装箱和拆箱的动作。Java中包装类比较多的用途就是用于数据类型的转化中。
String和StringBuilder、StringBuffer的区别
String是只读字符串,不能被继承,也就意味着String引用的字符串内容不能被修改,StringBuilder、StringBuffer的字符串对象可以直接被修改,StringBuilder在单线程下使用,因此StringBuilder的效率比StringBuffer要高
&和&&的区别
&运算符有两种用法:按位与、逻辑与
&&运算符是短路与运算,它与&的区别在于,只要左侧结果为False,那么右侧就不会再执行
hashCode和equals的关系
对象比较.equals相同,那么hashCode一定是相同的,但hashCode相同,其equals不一定相同
内存中的栈(stack)、堆(heap)和静态区(static area)的用法
通常定义的一个基础数据类型的变量、一个对象的引用、已经函数调用的现场保存,都是用栈空间;
通过new关键字和构造函数创建的对象放在堆空间;
我们定义字面量,如“hello”等常量,我们是放在静态区。
比较:
1、栈空间的读取速度是最快的,但是栈很小
2、通常大量的对象都是放在堆空间
JVM加载class文件的原理机制
是用类加载器(ClassLoader)和其子类实现的
重写和重载的区别
1、重写(override)
1、方法名、参数、返回值类型相同
2、子类方法不能缩小父类方法的访问权限
3、子类方法不能抛出比父类方法更多的异常
4、存在于父类与子类之间
5、方法如果被定义为final不能被重写
2、重载(overload)
1、参数类型、个数、顺序至少有一个不相同
2、不能重载之后返回值的方法名
3、存在于父类和子类、同类中。
抽象类和接口的区别
接口是公开的,供别人访问的,里面不能有私有方法或变量。抽象类是可以与私有方法或者变量的。实现接口的,就一定要实现接口的所有方法,而抽象类可以选择的重写需要的方法。
反射的用途及实现
什么是反射:
反射就是动态获取运行时类的所有属性和方法,也可以动态获取运行时对象的所有属性和方法
反射主要用于提供以下功能:
1、在运行时构造一个类的对象
2、判断一个类所具有的成员变量和方法
3、调用一个对象的方法
4、生态动态管理:反射最大的应用就是框架
Java反射的主要功能:
1、确定一个对象的类
2、取出一个类的数据成员、方法、构造器和超类
3、找出一个接口定义的常量和方法说明
4、创建一个类实例,这个实例在运行时才有名字(运行时才生成对象)
5、取得设定对象数据成员的值
6、在运行时调用动态对象的方法
7、创建数据,数组大小和类型在运行时才能确定,也能更改数据成员的值
反射还有一个重要问题就是性能问题,当系统大量应用反射的时候,系统性能会大打折扣
自定义注解的场景及实现
Java自定义注解是通过运行时靠反射获取注解的,通过aop给方法添加切面,通过反射获取方法包含的注解。
GET与POST方式的区别
GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。
POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。
session 与 cookie 区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
JDBC 流程
1、加载JDBC驱动:通过java.lang.Class类的静态方法:forName实现
2、提供JDBC连接的URL:该链接的书写形式:协议:子协议:数据源标识
3、创建数据库连接:通过java.sql.DriverManager获得Connection对象(代表一个数据库连接)
4、创建一个Statement:要执行SQL就必须要获得java.sql.Statement实例,该实例包括3种类型:Statement(静态语句)、PreparedStatement(动态语句)、CallableStatement(数据库存储过程)
5、执行SQL语句:Statement接口包含了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 ,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 语句。 具体实现的代码:
ResultSet rs = stmt.executeQuery(“SELECT * FROM …”) ; int rows = stmt.executeUpdate(“INSERT INTO …”) ; boolean flag = stmt.execute(String sql) ;
6、处理结果
返回两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的一个ResultSet结果集对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString(“name”) ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
关闭顺序和声 明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
MVC设计模式
M:模型:封装业务逻辑和数据的一个一个模块
V:视图:所有我们看到的内容
C:控制器:调用这些模块,当用户发起一个请求的时候,控制器会根据请求来选择要处理的业务逻辑模块和要选择的数据,再返回去把结果输出给视图来展示
equals 与 ==的区别
基本数据类型(type、int、char、long、boolean、short、float、double)都是用 == 来比较他们的值。
复合类型(类)当用 == 比较的时候,比较的是他们内存中存放的地址,所以除非是同一个new出来的对象,他们比较后的结果为true。否则比较后的结果就为false。
equals初始行为是比较对象的内存地址,但一些类当中把这些方法重写了,如:String、 Integer 、Date
Java基础知识盘点(一)- 基础篇的更多相关文章
- PHP丨PHP基础知识之PHP基础入门——函数「理论篇」
前两天讲过PHP基础知识的判断条件和流程控制,今天来讲讲PHP基础知识之PHP基础入门--函数! 一.函数的声明与使用 1.函数名是标识符之一,只能有数字字母下划线,开头不能是数字. 函数名的命名,须 ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- C# 基础知识系列- 14 IO篇 文件的操作 (3)
本篇继续前两篇内容,跟大家介绍一下Path类以及FileSystemInfo这个类的主要方法和属性. 上文提到,在<C# 基础知识系列-IO篇>之文件相关的内容完结之后,会带领大家开发一个 ...
- C# 基础知识系列- 14 IO篇 流的使用
0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件.目录和路径的操作有了一定的了解.这一篇开始,给大家演示一下流的各种操作.以文件流为例,一起来看看如何操作吧. ...
- Java基础知识盘点(三)- 线程篇
创建线程的方式及实现 一.继承Thread类创建线程类 1.定义Thread的子类,并重写run方法,因为该方法的方法体就是代表了线程要完成的任务,因此run方法又叫做执行体. 2.创建Thread子 ...
- Java基础知识盘点(二)- 集合篇
List和Set区别 List和Set都是继承Collection接口 List特点:元素有放入顺序,元素可重复 Set特点:元素无放入顺序,元素不可重复 Set和List对比: Set:检索元素效率 ...
- java基础知识总结8(数据库篇1)
一. Oracle的安装(windowXP.win7.Linux)和卸载 1.1 Oracle的安装 1.1.1 在WindowsXP.Win7下安装 第一:解压win32_11gR2_databas ...
- java基础知识汇总6(html篇)
五.html // 定义文档类型. < html> 定义 HTML 文档. < body> 定义文档的主体. < h1> to < h6> 定义 HTM ...
- C# 基础知识系列- 17 实战篇 编写一个小工具(1)
0. 前言 这是对C# 基础系列的一个总结,现在我们利用之前学到的知识做一个小小的工具来给我们使用. 如果有看过IO篇的小伙伴,应该有印象.当时我提过一个场景描述,我们在平时使用系统的时候,经常会为了 ...
随机推荐
- TCP/IP ARP
ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议. 当在同一网络段内或同一子网内,主机发送信息时将包含目标IP地址的ARP ...
- 学号 20175201张驰 《Java程序设计》第5周学习总结
学号 20175201张驰 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 ·1.接口的接口体中只可以有常量和abstract方法. ·2.和类一样,接口也是Java中一种重 ...
- 【QT】qt python install pip
https://pip.pypa.io/en/stable/installing/ http://www.runoob.com/w3cnote/python-pip-install-usage.htm ...
- HTTP权威指南_Note
Chapter 1 HTTP概述 1. Web客户端和Web服务器 web服务器即为HTTP服务器 Web浏览器属于客户端 Web浏览器向服务器请求HTTP对象 2. 资源 Web服务器是Web资源的 ...
- 干了这杯Java之集合概览
Java集合框架支持两种类型容器: 一种是为了存储一个元素的合集,为Collection 一种是为了存储键/值对,为Mapping Collection包含 Set存储不重复的元素 List存储一个有 ...
- nginx隐藏tp路由index.php
---------------------------------------------- 也可以找到vhosts.conf文件修改, 重启nginx,service nginx restart
- python 选课系统
couser.py: import sys,osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.pa ...
- locust压测websocket协议
Locust是以HTTP为主要目标构建的. 但是,通过编写触发器request_success和 request_failure事件的自定义客户端,可以轻松扩展到任何基于请求/响应的系统的负载测试 . ...
- NetCore2.0下使用EF CodeFirst创建数据库
本文所使用的VS版本:VS2017 15.3.0 首先新建一个.net core项目 取名NetCoreTask 使用模型视图控制器方式 新建Model层 在Model层下新建一个user实体类 1 ...
- Spring Security 内置过滤器表
别名 Filter 类 CHANNEL_FILTER ChannelProcessingFilter SECURITY_CONTEXT_FILTER SecurityContextPersistenc ...