java基础知识

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1、普通类、抽象类和接口的区别

普通类class、实体方法、

抽象类abstract、抽象方法、实体方法

接口interface、全部是抽象方法

3、http和socket区别

4、如何实现单列模式单列模式几种写法如何实现线程安全的单例模式

5、hashTable、hashMap、hashSet区别

6、集合类型

7、io流

8、多线程安全

9、堆与栈区别

11、Java的多态机制

Java 多态体现在两个方面方法方面和对象方面方法上体现为重载和覆写对象上的表现形式为向上转型和向下转型。

12、反射机制

13、重写和重载的区别

重写子类重写父类不在同一个类中类名相同、入参相同、方法体不同

重载在同一个类中类名相同、入参不相同、方法体不同

1、在子类中可以根据需要对从基类中继承来的方法进行重写。

2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。(注返回值可以为父类中返回值的子类型.参数若为子类则不是重写是重载)

3、重写方法不能使用比被重写的方法更严格的访问权限。

\4. 重写方法不能声明抛出比被重写方法范围更大的异常类型。

重载

重载是在一个类中实现的有多个同名方法但参数不一样包括参数类型、参数个数、还可以没有参数总之每个重载的方法的参数必须不一样。

14、线程、进程区别创建线程的几种方式

进程是资源CPU、内存等分配的基本单位它是程序执行时的一个实例。程序运行时系统就会创建一个进程并为它分配资源然后把该进程放入进程就绪队列进程调度器选中它的时候就会为它分配CPU时间程序开始真正运行。

线程是程序执行时的最小单位它是进程的一个执行流是CPU调度和分派的基本单位一个进程可以由很多个线程组成线程间共享进程的所有资源每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作每个请求分配一个线程来处理。

线程和进程各自有什么区别和优劣呢

  • 进程是资源分配的最小单位线程是程序执行的最小单位。

  • 进程有自己的独立地址空间每启动一个进程系统就会为它分配地址空间建立数据表来维护代码段、堆栈段和数据段这种操作非常昂贵。而线程是共享进程中的数据的使用相同的地址空间因此CPU切换一个线程的花费远比进程要小很多同时创建一个线程的开销也比进程要小很多。

  • 线程之间的通信更方便同一进程下的线程共享全局变量、静态变量等数据而进程之间的通信需要以通信的方式IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。

  • 但是多进程程序更健壮多线程程序只要有一个线程死掉整个进程也死掉了而一个进程死掉并不会对另外一个进程造成影响因为进程有自己独立的地址空间。

继承Thread 类和实现 Runnable 接口。这里面还被问到了 run() 和 start()的区别。

15、范型

1、 类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制编译器可以在一个高得多的程度上验证类型假设。 2、 消除强制类型转换。 泛型的一个附带好处是消除源代码中的许多强制类型转换。这使得代码更加可读并且减少了出错机会。

3、 潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中编译器将强制类型转换没有泛型的话程序员会指定这些强制类型转换插入生成的字节码中。

17、枚 举

枚举在各个语言当中都有着广泛的应用通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。Java从JDK5开始引入了对枚举的支持。

简单说枚举可以限定取值范围所有的内容只能从指定范围中取得.

比如性别只有男和女其他值都是不合法的

如果不用枚举也可以构造这样的方法但可能要做更多的工作也可能不安全

但运用枚举就可以避免这些问题了

特点

1、enum和class、interface的地位一样

2、使用enum定义的枚举类默认继承了java.lang.Enum而不是继承Object类。枚举类可以实现一个或多个接口。

3、枚举类的所有实例都必须放在第一行展示不需使用new 关键字不需显式调用构造器。自动添加public static final修饰。

4、使用enum定义、非抽象的枚举类默认使用final修饰不可以被继承。

5、枚举类的构造器只能是私有的。

18、封装、继承、多态

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Java