栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java语法汇总二(NK)(更新至2021.10.27)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java语法汇总二(NK)(更新至2021.10.27)

汇总一链接:

Java语法汇总二(NK)(更新至2021.10.27)_sulia1234567890的博客-CSDN博客https://blog.csdn.net/sulia1234567890/article/details/120966791

41. 什么是web容器?

 (1)web容器是一种服务程序,在服务器的一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如Java中的tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以有多个容器。

(2)web容器,例如tomcat,用于接受,响应客户端的请求,负责将HTTP请求转化为HttpServletRequest对象,也就是常见servlet实例对象。

补:

(3)http: HTTP协议,是用于从WWW服务器传输超文本到本地浏览器的传输协议。

(4)servlet:是一套技术标准,内含与web应用相关的一系列接口,用于为web应用实现方式提供宏观解决方案。

(5)jsp网页:java的服务器页面,其本质也是一个servlet,有html网页代码,Java代码,jsp标签组成,当servlet处理完数据后会转发给jsp,jsp负责显示数据。

42. java.lang包是java语言的核心包

(1)java.lang包定义了一些基本类型,包括Integer,String之类的,是java程序必备的包,由解释器自动引入,无需手动导入。

43. JAVA的垃圾回收机制 

(1)java提供一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。

(2)垃圾回收在jvm中的优先级相当低。

(3)垃圾回收机制只是回收不再使用的JVM内存,如果程序有严重的bug, 照样内存溢出。

(4)进入DEAD的线程,它还可以恢复,GC不会回收。

44. Integer类的parseInt()方法

(1)parseInt(): 将字符串参数解析为带符号的十进制整数。字符串中的字符都必须是十进制数,除了第一个字符可能是ASCII减号(‘-’, ‘u002D’)以指示负值,或加号('+', 'u002B')以指示正值。 返回所得到的整数值。

非纯数字的字符串转化为Integer对象会报错,比如String str = " 123456as"; int num = Integer.parseInt(str) 会报“java.lang.NumberFormatException”的错。

45. 迭代器Iterator

(1).hasNext()

(2).next()

(3).remove():Iterator支持从源集合中安全的删除对象,只要在Iterator实例上调用remove()即可。好处是可以避免ConcurrentModifiedException, 当打开Iterator迭代集合时,同时又对集合做修改。有些集合不允许在迭代时删除或添加元素,但是调用Iterator的remove()方法是个安全的办法。it.remove(),无参,it是it=list.Iterator();

46. Java Thread的start()方法和run()方法

(1)start():用start()方法来启动线程,是真正的实现了多线程。通过调用Thread类的start()方法来启动一个线程,这时候线程处于就绪(可运行)状态,并没有运行。一旦得到cpu时间片,就开始执行run()方法。

注意:此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。

(2)run()方法:只是类的一个额普通方法而已,如果直接调用run()方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run()方法体执行完毕后才可继续执行下面的代码。

47. 使线程释放锁的几种操作

(1)wait():释放。会使当前线程回到线程池中等待,释放锁,当被其他线程使用notify, notifyAll唤醒时,进入可执行状态。

(2)join():释放。当前线程调用某线程的.join()时,会使当前线程等待某线程执行完毕再结束,底层调用了wait(),释放锁。

(3)sleep():不释放。会使当前线程睡眠指定时间,不释放锁。

(4)yield():不释放。会使当前线程重回到可执行状态,等待cpu的调度,不释放锁。

补:

(1)一个线程调用yield方法(休眠),可以使具有相同优先级的线程获得处理器。通俗的说,yield方法比较高尚,让同级的其他线程先获得处理器。因此,yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是实际中无法保证yield()达到让步的目的,因为让步的线程有可能再次被线程调度程度调度。

48. 关于内部类的几个知识点

(1)静态内部类才可以声明静态方法

(2)静态方法不可以使用非静态变量

49. Java语言的静态多分派,动态单分派

(1)如果是重载方法之间的选择,则是使用静态类型。

重载中,运用静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用方法。

(2)如果是父类与子类之间的重写方法的选择,则是使用动态类型。如A a = new B(); 会使用B类型去查找重写的方法,使用A类型去找重载的方法。

重写中,运用的是动态多分派,是根据new的类型确定对象,从而确定调用的方法。

50. 类的加载包括:加载,验证,准备,解析,初始化

51. Java的构造方法知识点汇总

(1)构造方法不能被这些修饰: final,static,synchronized, native

构造方法不能被子类继承,所以用final没有意义。

构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static没有意义。

java语言不支持native, synchronized修饰的构造方法。

(2)构造方法不需要同步化。(补:子类可以覆盖掉父类的同步方法)

(3)构造方法的优先级一般比代码块低

(4)构造方法的主要作用是完成对类的对象的初始化工作

(5)一般在创建新对象时,系统会自动调用构造方法

(6)构造方法没有返回值,也不返回void (注意区分,有的方法跟类名同名,但是有返回值类型,这个就不是构造方法,而是一般的方法)

52. AOP的相关知识

(1)AOP将散落在系统中的“方面”代码集中实现。

(2)AOP有助于提高系统可维护性。

(3)AOP是一种设计模式,Spring提供了一种实现。

53. 数组的6种表示方式

(1)float a[][] =  new float[6][]

(2)float a[][] = new float[6][6]

(3)float []a[] = new float[6][]

(4)float []a[] = new float[6][6]

(5)float [][]a = new float[6][]

(6)float[][]a = new float[6][6]

54. 泛型的相关知识

(1)创建泛型对象的时候,一定要支出类型变量T的具体类型,争取让编译器检查出错误,而不是留给JVM运行的时候抛出类不匹配的异常。

(2)JVM如何理解泛型概念?答:类型擦除

事实上,JVM不知道泛型,所有的泛型在编译阶段就已经被处理成了普通类和方法。

处理方法很简单,我们叫做类型变量T的擦除(erased)。

即:泛型代码和JVM:

---虚拟机没有泛型,只有普通类和方法

---在编译阶段,所有泛型类的类型参数都会被Object或者他们的限定边界来替换。即类型擦除。

---在继承泛型类型的时候,桥方法的合成是为了避免类型变量擦除所带来的的多态灾难。无论我们如何定义一个泛型类型,相应的都会有一个原始类型被自动提供。原始类型的名字就是擦除类型参数的泛型类型的名字。

(3)JVM是如何获取具体类型的呢?用反射,也正因为有了反射才促生了泛型。

55. Java程序的执行过程

(1)编译器将Java源代码编译成字节码class文件

(2)类加载到JVM里面后,执行引擎会把字节码转为可执行代码

(3)执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行

56. 一个.java文件中定义几个类需要注意的问题

(1)public权限类最多只能有一个(也可以一个都没有)

(2)这个.java文件名只能是public权限类的类名。如果没有public类,则.java文件的名字是随便的一个类名。

(3)当用javac命令生成编译这个.java文件时,则会针对.java文件中的每一个类生成一个.class文件。 一个源程序文件中定义几个类和接口,则编译该文件就会生成几个以.class为后缀的字节码文件。 

(4)如果类中有内部类,会产生类名$内部类名.class。 如果有匿名类,则会产生类名$1.class。所以类编译不一定会产生1个.class文件而已。

57. 抽象类和接口的区别

(1)抽象类可以有构造方法,接口不不能有构造方法

(2)抽象类中可以有普通成员变量,接口中没有(可有常量)

(3)抽象类中可以包含非抽象普通方法,接口中必须所有方法都是抽象的

(4)抽象类中的抽象方法的访问权限可以是public, protected和默认类型。接口中的抽象方法只能是public, 并且默认即为public abstract的

(5)抽象类中可以包含静态方法,在JDK1.8之前接口中不能包含静态方法,JDK1.8后接口可以。

(6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问权限可以是任意的,但接口中定义的变量只能是public static final类型(默认的也是这个)

(7)一个类可以实现多个接口,用逗号隔开,但只能继承一个抽象类。接口不可以实现接口,但是可以继承接口,并且一个接口可以继承多个接口,用逗号隔开。

58. Java中的“|” 和“||”

(1)“|”:按位或, 先判断左边条件,不管左边是否可以决定结果,都会执行右边条件

(2)“||”:逻辑或,先判断左边条件,如果左边可以决定结果,那么就不会执行右边条件

59. 三元操作符的转换规则

(1)若两个操作数不可转换,则不做转换,返回值为Object类型。

(2)若两个操作数是明确数据类型的表达式(比如变量),则按照正常的二进制数来转换,int类型转换为long类型,long类型转换为float类型等。

(3)若两个操作数中有一个是数字S, 另外一个是表达式,且其类型标示为T,那么若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。

(4)若两个操作数都是直接量数字,则返回值类型为范围较大者。

60. 8种基本类型的大小,封装类,默认值,范围等

补:

数组引用变量的默认值是null。数组变量实例中,如果没有显示的为每个元素赋值,Java就会把该数组的所有元素初始化为元素响应类型的默认值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号