搜索

牛客网Java专项练习笔记

gecimao 发表于 2019-06-06 09:05 | 查看: | 回复:

  4.接口必须为public abstract,因为接口是高度抽象的类,它的存在就是被其他类实现,没有方法体;

  6.jdk1.8新特性,接口中的方法可以用static,default修饰,且二者修饰的方法要求有方法体。

  3.一个抽象类中的方法不一定是抽象方法,即其中的方法可以有实现(有方法体),接口中的方法都是抽象方法,不能有方法体,只有声明;

  1.重写是父类与子类之间多态性的一种体现,实现同方法名,同参数,同返回类型,不同的实现,重写类权限要大与父类;

  2.重写两同:方法名、形参列表相同,两小:返回值类型、抛出异常更小,这里的“小”指的是继承关系的子父类,不是像高赞所谓的float和int的大小之分,一大:访问修饰符;

  3.重载是一个类中多态性的体现,方法名相同,参数个数不同,返回类型也可以不同,与修饰符无关;

  4.如果子类构造器没有显示地调用超类的构造器,则将自动地调用超类默认(没有参数)的构造器。如果超类没有不带参数的构造器,并且在子类的构造器中有没有显示地调用超类的其他构造器,则Java编译器将报告错误。使用super调用构造器的语句必须是子类构造器的第一条语句。

  1.保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的;

  2.由于有些时候对volatile的操作,不会被保存,所以不会造成阻塞,它不可用于多线程环境下的计数器。

  1栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小;

  2堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你 能够 free和delete它们;

  3数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。;

  4.请求到服务端时,将根据请求中的sessionId查找session,如果可以获取到则返回,否则返回null或者返回新构建的session,老的session依旧存在。

  2.值传递不可以改变原变量的内容和地址---》原因是java方法的形参传递都是传递原变量的副本,在方法中改变的是副本的值,而不适合原变量的;

  3.引用传递不可以改变原变量的地址,但可以改变原变量的内容---》原因是当副本的引用改变时,原变量 的引用并没有发生变化,当副本改变内容时,由于副本引用指向的是原变量的地址空间,所以,原变量的内容发生变化。

  5.static 和 final共同修饰的类为静态不可重写类,而abstract 和 final不能共同修饰类,抽象类必须重写;

  6.final修饰的变量为基本数据类型时,赋值后无法改变,当final修饰引用类型变量时,在赋值后其指向地址无法改变,但对象内容还是可以改变;

  7.final修饰的成员变量在赋值时有三种方式:声明时赋值,在构造器中赋值,在初始代码块中赋值;

  1.抽象方法只能定义在抽象类中,抽象方法和抽象类必须由abstract修饰,abstract关键字只能描述类和方法,不能描述变量。抽象方法只定义方法声明,不定义方法实现。抽象类不可以被实例化(创建对象),只有通过子类继承抽象类并覆盖抽象类中的所有抽象方法后,该子类才可以被实例化,否则该子类还是一个抽象类。抽象类中有构造函数用于给子类对象进行初始化,同时抽象类中可以含有非抽象方法。abstract关键字不可以与final,private,static关键字共存,因为被final修饰的方法不可以被重写,意味着子类不可以重写该方法,如果abstract和final共同修饰父类中的方法,子类要实现抽象方法(abstract的作用),而final又不让该方法重写,这相互矛盾。如果private和abstract共同修饰父类中的方法,private修饰则该方法不可以被子类访问,但是abstract修饰需要子类去实现,两者产生矛盾。如果static和abstract共同修饰父类中的方法,static表示是静态的方法,随着类的加载而加载,则该方法不需要在子类中去实现,这与abstract关键字矛盾;

  2.static用于修饰成员变量和成员函数,想要实现对象中的共性数据的对象共享,可以将这个数据进行静态修饰,被静态修饰的成员可以直接被类名调用,静态随着类的加载而加载,而且优先于对象存在。静态方法只能访问静态成员(静态方法和静态变量),不可以访问非静态成员,这是因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。静态方法中不能使用this和super关键字,因为this代表本类对象,super代表父类对象,而静态时,有可能没有对象存在,所以this和super无法使用;

  3.final关键字可以修饰类,方法,变量(成员变量内,局部变量,静态变量),被final修饰的类是一个最终类,不可以被继承,被final修饰的方法是一个最终方法,不可以被覆盖,但是可以被继承。被final修饰的变量只能是一个常量,只能赋值一次。内部类被定义在类中的局部位置上时,只能访问局部被final修饰的局部变量。

  2.throws用于在方法上声明该方法不需要处理的异常类型,用在方法上后面跟异常类名 可以是多个异常类;

  3.throw用于抛出具体异常类的对象,用在方法内 后面跟异常对象只能是一个异常类型实体;

  forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

  redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL;

  forward:转发页面和转发到的页面可以共享request里面的数据.

  redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等;

  对于间接方式,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象;

  对于直接方式,客户端浏览器只发出一次请求,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。

  把类加载的过程放到Java虚拟机外部去实现,让应用程序决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。

  .有哪些类加载器,分别加载哪些类类加载器按照层次,从顶层到底层,分为以下三种:

  (1)启动类加载器:它用来加载Java的核心库,比如String、System这些类

  (3)应用程序类加载器:负责加载用户类路径上所指定的类库,一般来说,Java应用的类都是由它来完成加载的。

  我们应用程序都是由以上三种类加载器互相配合进行加载的,还可以加入自己定义的类加载器。称为类加载器的双亲委派模型,这里类加载器之间的父子关系一般不会以继承的关系来实现,而是都使用组合关系来复用父加载器的。

  是当一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法加载这个加载请求的时候,子加载器才会尝试自己去加载。

  第一:可以避免重复加载,当父亲已经加载了该类的时候,子类不需要再次加载。

  第二:考虑到安全因素,如果不使用这种委托模式,那我们就可以随时使用自定义的String来动态替代java核心api中定义类型,这样会存在非常大的安全隐患,而双亲委托的方式,就可以避免这种情况,因为String已经在启动时被加载,所以用户自定义类是无法加载一个自定义的类装载器。

  栈:方法运行,每一个方法对应一个栈帧,每一个线程对应一个栈,每个栈帧包括 操作数、局部变量表、指向运行时常量池的引用,方法返回地址、附加位区 所以是线.方法区(静态区):被虚拟机加载的类信息、静态(static)变量,常量(final),即时编译器编译后的代码等数据。运行常量池是方法区的一部分,class文件除了有类的版本、字段、接口、方法等描述信息之外,还有一项信息常量池保存编译期生成的字面量和符号引用。 线.程序计数器

  (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;

本文链接:http://windsorflowers.net/dijihuchi/270.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部