【基础】JAVA学习简单总结(1)

1、面向对象思想,三个特性

思想:区别于面向过程思想的针对程序的开发过程一步一步进行开发,面向对象是将程序当成一个对象进行分析并进行开发。

特性:继承,封装,多态

2、String的特点

1.String类对象的相等判断使用equals() 方法完成,“==”实现的是地址数值的比较。

2.字符串内容一旦声明则不可改变,String类对象内容的改变是依靠引用关系的变更实现的,创建一个新的对象进行引用,旧的对象若是没有被引用则等待回收。

3.String类有两种实例化方式,使用直接赋值可以不产生垃圾空间,并且可以自动入池,不要使用构造方法完成。

https://zhuanlan.zhihu.com/p/81869136

3、String是否可变,是否可继承,为什么?

都不行

https://blog.csdn.net/weixin_36380516/article/details/55539613

4、java八种基本数据类型及包装类详解

基本类型:short,int,long,double,flont,byte,char,boolean

将基本数据类型装箱起来就成了包装类,反过来就是拆箱,包装类是面向对象的。

基本数据类型       包装类

byte                      Byte          

boolean                Boolean    

short                     Short         

char                      Character  

int                          Integer       

long                       Long         

float                       Float          

double                   Double       

https://blog.csdn.net/sinat_30973431/article/details/89332443

5、=和==和.equals()的区别

=是赋值符号,A=B,B赋值给A

==比较的是对象的地址

.equals()比较的是对象的值

https://zhidao.baidu.com/question/80665121.html

6、Object类有哪些常用方法

clone()

hashCode()

equals()

toString()

getClass()

wait()

wait(long)

wait(long,int)

notify()

notifyAll()

finalize()

https://blog.csdn.net/weixin_42387953/article/details/80750902

7、String的方法有哪些

equals():字符串是否相同

equalsIgnoreCase():忽略大小写后字符串是否相同

compareTo():根据字符串中每个字符的Unicode编码进行比较

compareToIgnoreCase():根据字符串中每个字符的Unicode编码进行忽略大小写比较

indexOf():目标字符或字符串在源字符串中位置下标

lastIndexOf():目标字符或字符串在源字符串中最后一次出现的位置下标

valueOf():其他类型转字符串

charAt():获取指定下标位置的字符

codePointAt():指定下标的字符的Unicode编码

concat():追加字符串到当前字符串

isEmpty():字符串长度是否为0

contains():是否包含目标字符串

startsWith():是否以目标字符串开头

endsWith():是否以目标字符串结束

format():格式化字符串

getBytes():获取字符串的字节数组

getChars():获取字符串的指定长度字符数组

toCharArray():获取字符串的字符数组

join():以某字符串,连接某字符串数组

length():字符串字符数

matches():字符串是否匹配正则表达式

replace():字符串替换

replaceAll():带正则字符串替换

replaceFirst():替换第一个出现的目标字符串

split():以某正则表达式分割字符串

substring():截取字符串

toLowerCase():字符串转小写

toUpperCase():字符串转大写

trim():去字符串首尾空格

https://www.cnblogs.com/ConstXiong/p/11808189.html

8、方法重载和方法重写

重载(overload) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同对方法进行重新载入。

重写(override)是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写。

https://blog.csdn.net/weixin_44502804/article/details/90523478

9、接口和抽象类有什么区别

(1)抽象类只能继承一个,但是可以实现多个接口

(2)接口和抽象类必须实现其中所有的方法,抽象类中如果有未实现的抽象方法,那么子类也需要定义为抽象类。抽象类中可以有非抽象的方法

(3)接口中的变量必须用 public  static  final 修饰,并且需要给出初始值。所以实现类不能重新定义,也不能改变其值。

(4)接口中的方法默认是 public  abstract,也只能是这个类型。不能是 static,接口中的方法也不允许子类覆写,抽象类中允许有static 的方法

https://www.cnblogs.com/zzfpz/p/10990210.ht

10、常见异常有哪些

(1)数学运算异常

(2)空指针异常

(3)数组大小为负值异常

(4)数组下标越界异常

(5)数据格式异常

(6)输入类型不匹配异常

(7)方法不存在异常

(8)数据格式错误异常

(9)未找到类定义异常

(10)内存不足错误

(11)堆栈溢出错误

(12)线程结束

(13)未知错误

https://blog.csdn.net/geekmubai/article/details/82021888?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160431459719215646513606%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160431459719215646513606&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-1-82021888.first_rank_ecpm_v3_pc_rank_v2&utm_term=JAVA%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E7%B1%BB%E5%9E%8B&spm=1018.2118.3001.4449

12、Sql删除的区别(Drop、Truncate、Delete)

https://www.cnblogs.com/ypha/p/13711288.html

13、栈和队列的区别,栈和堆的区别

栈和队列的区别:

栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的。

栈是先进后出,队列是先进先出。

栈只允许在表尾一端进行插入和删除,队列只允许在表尾一端进行插入,在表头一端进行删除。

 

栈和堆的区别:

栈区:由编辑器自动分配释放,存放函数的参数值,局部变量的值等(基本类型值)。

堆区:由程序员分配释放,若程序员不释放,程序结束时可能有OS回收(引用类型值)。

栈(数据结构):一种先进后出的数据结构。

堆(数据结构):堆可以被看成是一棵树,如:堆排序。

https://www.cnblogs.com/jinbang/p/8658708.html

14、冒泡排序的原理

从数组第一个数开始,前一个和后一个进行比较,数小的往前,数大的往后,依次重复比较直到排序完成。

https://mp.weixin.qq.com/s?__biz=MjM5MTE1NTQ4Mg==&mid=2649732688&idx=1&sn=48a7b8eb37ad6628b1c3febd08f15f20&chksm=bea2c22589d54b33e2db7f65cb013e3a32c39a6cdeb3089a404a425d8c04507547dd426f848d&mpshare=1&scene=24&srcid=0813MJQ6b7ryDEtBBVutQwyH&sharer_sharetime=1603550477528&sharer_shareid=178d93c4c9c828257b7ae96e0478076b&ascene=14&devicetype=android-29&version=27001353&nettype=3gnet&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&exportkey=AWRnjlzSsJar5yRZeay4%2FjQ%3D&pass_ticket=e9Qdn7r6x37ZKjbiX%2BK4gyqgslOZ92pf%2FPQM8Cd34t4DqFH%2B%2FGG0J%2BZPWvLC9Vhb&wx_header=1

15、Map遍历方式

(1)在for循环中使用entries()方法实现Map的遍历     (JavaScript)

(2)在for循环中遍历key或者values,一般适用于只需要map中的key或者value时使用,在性能上比使用entrySet较好

(3)通过Iterator迭代器遍历;

(4)通过键找值遍历,这种方式的效率比较低,因为本身从键取值是耗时的操作;

https://www.cnblogs.com/damoblog/p/9124937.html

16、List接口有哪些

(1)LinkedList

基于链表实现,链表内存是散列的,增删快,查找慢;

(2)ArrayList

基于数组实现,非线程安全,效率高,增删慢,查找快;

(3)Vector

基于数组实现,线程安全,效率低,增删慢,查找慢;

(4)Stack

Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。

https://blog.csdn.net/yangxingpa/article/details/81023138

https://www.cnblogs.com/jxxblogs/p/11561629.html

17、Set接口有哪些

(1)HashSet

底层是由 Hash Map 实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法

(2)LinkedHashSet

继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap

(3)TreeSet

TreeSet是二叉树实现的,基于TreeMap,生成一个总是处于排序状态的set,内部以TreeMap来实现,不允许放入null值。它是使用元素的自然顺序对元素进行排序,或者根据创建Set时提供的 Comparator 进行排序,具体取决于使用的构造方法。

https://www.cnblogs.com/jxxblogs/p/11561629.html

18、遍历List

一般for循环,增强for循环和迭代器

https://blog.csdn.net/qq_40389276/article/details/100068468?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160622600119725255552813%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160622600119725255552813&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-9-100068468.first_rank_ecpm_v3_pc_rank_v2&utm_term=LIST%E9%81%8D%E5%8E%86&spm=1018.2118.3001.4449

19、遍历Set

迭代器方法、增强for、set.forEach、set.stream().forEach

https://www.cnblogs.com/chenxiaoge/p/13335454.html

20、枚举的作用是什么,为什么用枚举

https://blog.csdn.net/qq_41262587/article/details/106540292

21、封装类的equals()方法和object类中的equals()方法的区别

在String、Double等封装类中,已经重写(overriding)了Object类的equals()方法,于是有了另一种计算公式,是进行内容的比较。在Object类中是比较地址。

22、JAVA三种引用类型

数组,接口,类

23、JAVA迭代器

就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。

https://www.cnblogs.com/zyuze/p/7726582.html

24、JAVA集合类

集合类型主要有3种:set(集)、list(列表)和map(映射)。

https://blog.csdn.net/qq_30711091/article/details/88847892

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值