Java基础(一)

1、面向对象的特征

封装: 就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承: 面向对象编程 (OOP)语言的一个主要功能就是“继承”。继承是指这样一种能力:新类(子类)继承了原始类(父类)的特性,它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

多态: 是指允许不同类的对象对同一消息作出响应。允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。

2、int 和 Integer 有什么区别

int 是 Java 提供的 8 种原始数据类型之一。Java 为每个原始类型提供了封装类,Integer 是 Java 为 int 提供的封装类。 int 的默认值为 0,而 Integer 的默认值为 null,是引用类型,即 Integer 可以区分出未赋值和值为 0 的区别,int 则无法表达出未赋值的情况, Java 中 int 和 Integer 关系是比较微妙的。关系如下:
1) int 是基本的数据类型;
2) Integer 是 int 的封装类;
3) int 和 Integer 都可以表示某一个数值;
4) int 和 Integer 不能够互用,因为他们两种不同的数据类型;

原始类型封装类:
booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

3、String 、StringBuffer和StringBuilder的区别

1) String类的内容一旦声明后是不可改变的,改变的只是其内存的指向,而StringBuffer类的对象内容是可以改变的。

2) 对于StringBuffer,不能像String那样直接通过赋值的方式完成对象实例化,必须通过构造方法的方式完成。

3) StringBuffer的在进行字符串处理时,不生成新的对象,在内存使用上要优于串类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入,删除等操作,使用StringBuffer要更加适合一些。

例: String对象不可修改指的是对象本身不可修改,而不是引用不可修改。
String a = “你好”;
这行代码的意思是声明一个String类型的引用变量叫做a,在内存中创建一个String对象(值为"你好"),然后把这个对象的引用赋值给变量a。
a = “hello”;
这行代码执行的效果是在内存中另外创建了一个String对象(值为"hello"),然后把这个新对象的引用赋值给变量a,而不是把原来的内存中的那个“你好”的String对象值变为“hello”。

4) StringBuilder,StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

5) StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类,然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

4、final, finally, finalize的区别

final: 修饰符(关键字),用于声明属性,方法和类,分别表示属性不可变, 方法不可覆盖,类不可继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值(亦可以用迟缓初始化),而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally: 是异常处理语句结构的一部分,表示总是执行。
finalize: 是Object类的一个方法,Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等,JVM不保证此方法总被调用。

5、重载和重写的区别

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

6、九大内置对象

request
response
session
application
out
page
pageContext
confit
exception
(JSP九大内置对象及其作用+四大域对象:https://my.oschina.net/u/3805464/blog/1813805)

7、抽象类和接口有什么区别

参数抽象类接口
默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现
实现子类使用 extends 关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字 implements 来实现接口。它需要提供接口中所有声明的方法的实现
构造器抽象类可以有构造器接口不能有构造器
与正常 Java 类的区别除了你不能实例化抽象类之外,它和普通Java类没有任何区别接口是完全不同的类型
访问修饰符抽象方法可以有 public、protected 和 default 这些修饰符接口方法默认修饰符是 public。你不可以使用其它修饰符。
main 方法抽象方法可以有 main 方法并且我们可以运行它接口没有 main 方法,因此我们不能运行它。
多继承抽象方法可以继承一个类和实现多个接口接口只可以继承一个或多个其它接口
速度它比接口速度要快接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。如果你往接口中添加方法,那么你必须改变实现该接口的类。

8、session和cookie区别:

1) session是在服务器端保存用户信息,cookie是在客户端保存用户信息
2) session中保存的是任意对象,cookie保存的是字符串
3) session随会话结束而关闭,cookie可以长期保存在客户端硬盘上,也可以临时保存在浏览器内存中
4) cookie通常用于保存不重要的用户信息,重要的信息使用session保存

9、HTTP 请求的 GET 与 POST 方式的区别

  • 根据 HTTP 规范,GET 用于信息获取,而且应该是安全的和幂等的。
  • 根据 HTTP 规范,POST 表示可能修改变服务器上的资源的请求。
  • 首先是 “GET 方式提交的数据最多只能是 1024 字节”,因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟 URL 的长度有直接关系了。而实际上,URL 不存在参数上限的问题,HTTP 协议规范没有对 URL 长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE 对 URL 长度的限制是 2083 字节(2K+35)。对于其他浏览器,如 Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。注意这是限制是整个 URL 长度,而不仅仅是你的参数值数据长度。
  • POST 是没有大小限制的,HTTP 协议规范也没有进行大小限制
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值