JAVA高级部分

作者: Lovealfy | 来源:发表于2020-12-28 15:16 被阅读0次

    1、LinkedList和ArrayList的区别

    数据结构不同,一个是基于动态数组的数据结构,一个是基于链表的数据结构

    对于随机访问get和set,ArrayList优于LinkedList ,LinkedList要移动指针,ArrayList是数组,直接定位到相应位置取元素,LinkedList是链表,需要从前往后遍历

    对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据

    ArrayList的空间浪费主要体现在list列表的结尾预留一定容量空间,LinedList的空间浪费则体现在它的每个元素都需要消耗相当的空间。

    2、static关键字用途

    被static关键字修饰的不需要创建对象去调用,直接根据类名就可以去访问,主要方便再没有创建对象的情况来进行调用

    注意普通类不能修饰为静态的,只有内部类才可以

    被static修饰的变量是类变量 ,可以通过类名.变量名直接,不需要使用new关键字来创建对象来调用 ,被static修饰的成员变量叫做静态变量,也叫类变量,说明这个变量是属于这个类的,而不是属于对象的,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的

    修饰方法的时候跟类一样,可以直接通过类名来调用

    static修饰代码块 ,静态代码块在类第一次被载入时执行,类初始化顺序

    父类静态变量=>父类静态代码块=>子类静态变量=>子类静态代码块=>父类普通变量=>父类普通代码块=>父类构造函数=>子类普通变量=>子类普通代码块=>子类构造函数

    3、深入分析static关键字

    以下时java内存结构图

    静态变量是存放在方法区中的,并且是被所有线程共享,java堆 存放的是我们创建的一个个实例变量

    堆内存中的成员变量是随着对象的产生而产生,随着对象的消失而消失,静态变量是所有线程共享的,所以不会消失

    对static关键字进行一个小结:

    static是一个修饰符,用于修饰成员(成员变量、成员函数),static修饰的成员变量是静态变量或者是类变量

    static修饰的成员被所有的对象共享

    static优于对象存在,因为static修饰的成员随着类加载就已经存在

    static修饰的成员多了一种调用方式,可以直接被类名所调用

    static修饰的数据是共享数据,对象中存储的是特有数据

    成员变量和静态变量的区别:

    4、HTTP请求行、请求头、请求体详解

    http请求报文由3部分组成

    请求行  :由请求方法字段、URL字段和http版本协议3个字段组成

    请求头(报文头): 报文头包含若干个属性,格式为属性名:属性值

    请求体 它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据

    GET请求:请求指定页面信息,并返回实体主体利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。

    POST请求: 向指定资源提交数据进行处理请求(提交表单或者上传文件),数据包含在请求体中,POST请求会导致新的资源建立和已有资源的修改

    5、关于HTTP请求GET和POST的区别

    .GET提交,请求的数据会附在URL之后,以?分割URL和传输数据,多个参数用&连接;如果是中文/其他字符,则直接把字符串用BASE64加密.POST提交:把提交的数据放置在是HTTP包的包体<request-body>中.GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变

    传输数据的大小 GET:特定浏览器和服务器对URL长度有限制 POST:由于不是通过URL传值,理论上数据不受限

    安全性   POST的安全性要比GET的安全性高  通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了

    相关文章

      网友评论

        本文标题:JAVA高级部分

        本文链接:https://www.haomeiwen.com/subject/wgxtoktx.html