1.String,StringBuffer与StringBuilder的区别
1. 字符串广泛应用在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。但是String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。
2. 为了应对经常性的字符串相关的操作,谷歌引入了两个新的类——StringBuffer类和StringBuild类来对此种变化字符串进行处理,和String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用StringBuffer 类。
3. String:不可变字符序列
StringBuffer: 可变字符序列,效率低,线程安全
StringBuilder: 可变字符序列,效率高,线程不安全
4.(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据StringBuilder。
2.抽象类与接口的区别
接口interface关键字,他是公开的,里面方法与变量不可以是私有的,接口的存在就是被其他类去使用,抽象类可以拥有自己私有方法和私有变量。接口的出现解决了java不能多重继承的问题。
1、我们可以这么认为抽象类是对类的抽象,接口是行为的抽象,所以接口相较更为抽象。
2、设计层次不同,抽象类是一种自下而上的设计,先有子类才能提取出公共的属性与行为,抽象出父类。接口是一种自上而下的设计,先规定行为方法,只要可以实现这些行为,就可以成为接口的实现类。
3、派生关系的不同,抽象类与其派生类是一种“is-a”,说明其父类子类本质是相同的。接口与其实现类是一种“like-a”即父类与派生子类的关系只是实现了定义的行为,而并无本质上的联系。
3.session与cookie
HTTP是一种无状态协议,为了区别谁发起,就需要我们自己去解决这个问题,不然有些情况下即使同一个网站我们每打开一个页面都要登陆一下,这样显然不太合理。而Session和Cookie就是为了解决这个问题提出的两个机制。
通俗说,Cookie是访问某些网站以后再本地存储一些网站的相关信息,下次访问时候可以减少一些步骤。准确的说的话就是Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送到同一个服务器,是一种客户端保持在线的方案。
Session是存储在服务器的一种用来存放用户数据类的hashTable的结构,但这个值一般会有一个时间有效性。
关于区别有两种理解:
1 Session是服务端保存的一个数据结构,用来追踪用户的状态,这个数据可以保存集群、数据库、文件中,Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
2 session是一种更抽象概念,开发者为了实现中断、继续等操作、抽象出“会话”进而衍生到“会话状态”,这也就是session的概念。
cookie是一个实际存在东西,http协议中定义在header字段中,可以认为是sesion在后端无状态的实现。目前较好的通用实现方案就是讲session id借助cookie去显示。
4.HTTP请求GET与POST的方式区别
GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。
Get最大容量不大于2kb
POST方法通过吧请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后POST请求传递敏感信息对外部客户端不可以见。
网友评论