加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java基础知识汇总

发布时间:2020-05-25 06:14:25 所属栏目:Java 来源:互联网
导读:Java基础知识1、Java语言的优点:1)Java是纯面向对象语言2)与平台无关性,一次编译到处运行

Java基础知识

1、Java语言的优点:

1)Java是纯面向对象语言

2)与平台无关性,一次编译到处运行

3)Java提供了狠多内置类库

4)提供了对web应用的支持

5)具有较好的安全性(数组边界检测、Bytecode检测)和健壮性(强制型机制、垃圾回收器、异常处理)

6)去除c++难以理解的一些特性(头文件 指针 运算符重载 多重继承)

2、java与c++的异同:

1)Java为解释型语言,c++为编译型语言,java会慢但是跨平台

2)Jave为纯面向对象,c++既面向对象又能面向过程。Jave无全局变量和全局函数

3)Java没有指针,更安全

4)Java不支持多继承但是有接口概念

5)Java不需人工分配管理内存(申请 释放),提供垃圾回收器自动回收。当堆栈或静态存储区没有对这个对象的引用时,就会被回收。没有析构函数,但是有finalize()方法。

6)Java没有运算符重载,没有预处理功能。

3、public static void main(String [] args)是程序的入口。

4、java可有多个main()文件,但只有与文件名相同的用public修饰的类的main()才能作为程序的入口。注:有且仅有一个类被public修饰并与文件同名。

5、静态快在main函数之前执行。初始化执行顺序:父静态变量 父静态代码块 子静态代码变量 子静态代码块 父非静态变量 父非静态代码块 父类构造函数 子非静态变量 子非静态代码块 子类构造函数

6、构造函数:

1)与类同名,无返回值

2)可以有多个,根据参数不同

3)总是伴随new操作一起调用

4)主要用来初始化对象

5)不能被继承

6)可用super来显示调用父类构造函数

7、浅复制仅仅复制考虑的对象,不复制它引用的对象。深复制两者都复制

8、面向对象和面向过程有什么不同:

1)面向对象是用符合常规思维的方式去处理客观世界的问题,面向过程是则重以事件为中心,模块化。

2)面向对象是使计算机世界向客观世界靠拢,使问题的处理更清晰。面向过程是清晰准确表达过程的模块,把客观世界的问题抽象成计算机可以处理的过程。

9、面向对象的特征和优点:抽象 继承 封装 多态有较高的开发效率,代码可重用。较高的可维护性,代码更清晰明了。

10、java只支持单根继承,extends继承是 is a 关系,组合是 has a关系。

在java语言中能用到组合的尽量不要用继承。

11、多态:

重载(同个类中有多个同名方法) 水平关系

重写(子类重写父类,方法名和参数列表相同) 垂直关系

12、抽象类和接口的异同:

1)只要包含一个抽象方法都是抽象类,接口的方法全部是抽象方法,称为纯抽象类。

2)抽象类的子类需实现父类的抽象方法。

3)接口中的变量都默认为:static final 必须赋初值。

4)接口实现用implements。一个类可以实现多个接口实现类似多继承的关系。

5)接口被运用于常用的功能,如:添加删除。抽象类用于生活公共类的角色,不适用经常对代码修改的情况

13、this和super的区别:

This用来指向当前实例对象

Super用来访问父类的方法和成员变量

子类继承父类时,子类构造函数中super()必须放第一句。

14、break continue return 的区别:

Break 用于直接强行跳出当前循环,不执行剩余代码

Continue 用于停止当次循环,回到起始处进行下次循环。

Return 跳转 用来表示从一个方法中返回。

Break out跳出多重循环

15、static的作用:

a 为对象分配单一的存储空间,与创建对象个数无关

b 实现某个方法或属性和类而不是与对象关联在一起

C 变量可达到全局的效果,在内存中只有一个复制

16、不可变类的实现:

类中的所有成员变量被private修饰

没有写set方法

类定义final

17、值传递和引用传递的区别:

值传递:实参会把它的值传递给形参

引用传递:传递的是对象,形参和实参指向同个存储单元。

18、有八种基本数据类型,类型转换的优先级:byte不能与booleam互换。

19、round 表示四舍五入 ceil表示向上取整 floor表示向下取整,i++表示先执行后加

一,++i表示先加一后执行。

20、String s1=”abc”是存放在常量区

String s2=”abc”s2应用常量区的对象,不会创建新的对象。

String s3=new String(“abc”)是在堆中创建对象,

String s4=new String(“abc”)又必须在堆中创建新对象。

21、“==”与“equals”

“==”用来比较两个变量的值是否相等,如果一个变量指向饿数据是对象(引用类型),就有两块内存。对象本身占用一块内存(堆内存),变量也占用一块内存。String s4 = new String(“abc”)。变量s所对应的内存中存储的数值就是对象占用那块内存的首地址。如果想看两个变量是否指向同一个对象,即要看他们对应内存中的数值(首地址)是否相同。

equals比较的不是引用,而是数值内容,即比较的是abc。

22、数组也是对象。数组提供length属性来获取数组的长度,而String是通过length()计算。

23、异常处理

1)try catch finally模式

2)Finally块中的代码一定会被执行,除非这两种情况:当程序在try之前就遇到异常或者在try中通过exit()强制退出。

3)jvm将错误表示为一个异常并抛出,通过catch来捕获,然后进行处理。安全性和鲁棒性。

4)异常分为两大类:错误(error)和异常(Excetion)

异常分为:检查异常和运行异常。

检查异常又称为编译异常。

比如:IO异常、SQL异常

运行异常为:空指针异常、类型转换异常、算术异常、数组越界异常、数组存储异常、缓存区溢出异常。

先捕获子类后捕获父类,尽早抛出异常,能处理就处理,不处理就抛出,运行时异常实际不必处理,直接抛出。

24、Java IO:字节流(8位)不会用到缓存 字符流(16位)用到缓存

25、Socket称为套接字。用来实现不同虚拟机或不同计算机之间的通信。

分为两种类型:面向连接的TCP,可靠。无面向连接的UDP,不可靠。

任何一个Socket都是由一个IP地址和端口号唯一确定。

26、java平台独立性是指一个平台上编写和编译程序,而在其他平台上运行。有JVM和java API。

Java语言是一种动态解释型语言,类class只有被加载到JVM上才能运行。不会一次加载全部类后执行,而是先加载基类,其他类是需要时再加载。

27、垃圾回收GC:回收不会再使用的内存。三个任务:分配内存;确保被引用的内存不被错误地回收;回收不再被引用的对象的内存。

28、java中内存泄露问题:

两种情况:

1)在堆中申请的空间没有得到释放

2)对象不再被使用,但是仍在内存中保留着

原因:静态集合类、各种连接、监听器、变量不合理的作用域

29、java中堆和栈的区别:

分配在栈:基本数据类型的变量、对象的引用变量

变量出了作用域就会被自动释放

分配在堆:引用类型变量、需要通过new创建的变量。主要为运行时创建的对象

JVM是基于堆栈的虚拟机,每个java程序都运行在一个单独的JVM实例上,所以一个java程序中的对个线程运行在,每个实例又唯一对应一个堆,所以这些线程之间会共享堆内存。

只需要申请堆空间,不需要考虑释放问题。

使用栈中的引用变量来访问堆中的数组和对象。

堆只要是用来存放对象的,栈主要是用来放执行程序的。

栈的速度快,但大小和生存期确定,缺乏灵活性。堆是动态分配内存,灵活性强但速度慢。

30、容器:java Collections框架:list 、Queue 、set 、stack 、map
list 、Queue 、set 、stack都继承Collection接口。

1)List是有序的Collection。按对象的进入顺序保存对象,可保存重复对象。

2)Set是集合的概念,集合中不能有重复的元素。

3)map是键映射到值得数据结构。值可以重复,但是键是唯一的,不能重复。

31、迭代器:是一个对象,一种访问一个容器对象的各个元素,而又不必暴露该对象内部的细节方法。

1)使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next()方法返回一个元素。

2)使用Iterator的hasNext()方法判断容器中是否还有元素,如果有可以使用next()获取下一个元素。

3)通过remove()来删除迭代器返回的元素。

32、collection和collections的区别:

Collection:是一个集合接口,为各个具体集合提供最大化的统一操作。

Collections:是针对集合类的一个包装类。不能实例化,相当于一个工具类,服务于Collection框架。

33、多线程:

线程:执行代码的一个执行单元。

进程:一个正在执行的程序

各线程共享程序的内存空间(代码段、数据、堆空间)有独立的栈空间。

线程优点:

1)减少程序的响应时间

2)相比进程,创建个切换开销小

3)多CPU和多核本身就具有多线程能力

4)简化程序结构,便于理解和维护。

34、如何实现java多线程:

1)继承Thread类,重写run()方法

2)实现Runnable接口,并实现接口的run()方法。

3)实现Callable接口,重写call()方法。

35、同步

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读