Java基础重要知识

  • Java中正则表达式的支持:
  • 正则表达式的描述及用途:
  • Java和js区别:
  • int和integer之间的区别:
  • String和StringBuffer的区别
  • String类的理解:
  • Array和(列表)ArrayList的区别:
  • 值传递和引用传递的区别:
  • Lambda表达式的优缺点:
  • 为什么重写equals还要重写hashcode:


Java中正则表达式的支持:

1.java中String类提供了正则表达式的支持方法:matches(),replaceAll(), replaceFirst(), split()。
2.java中用Pattern类表示正则表达式对象,同时提供了Api进行各种正则表达式操作
pattern:模式
replace: 替换
split: 分割
matches: 匹配

正则表达式的描述及用途:

1.正则表达式就是记录文本规则的代码
2.绝对多数语言支持正则表达式的支持,正则表达式进行字符串匹配和处理的时候是最强大的工具

Java和js区别:

1.java和js是不同的两家公司开发的产品,前者是sun公司,后者是网景公司(Netscape)
2.java是面向对象编程,即万物皆对象,而js是一种脚本语言,它是一种基于对象和事件驱动的编程语言
3.java的源码在执行前必须经过编译,而js不需要编译,其源码由浏览器解析执行(目前浏览器都使用了JIP即时编译来提升js运行效率)
4.java中的变量是强类型的,即任何变量在编译器前必须声明,而js的变量是弱类型的,变量使用前可以不声明
5.代码格式不同

int和integer之间的区别:

1.java几乎是纯面向对象编程,它为了编程方便引入了八大基本数据类型,同时,为每一个基本数据类型引入了对应的包装类
2.java5后包装类可以和基本数据类型进行自动装箱/拆箱操作,即可以相互转换
3.int类型默认值为0,integer类型默认值为空
4.int类型存放在栈中,integer类型有一个地址值引向堆中

String和StringBuffer的区别

1.操作数量较少的字符串用String,不可修改的字符串;
2.在单线程且操作大量字符串用StringBuilder,速度快,但线程不安全,可修改;
3.在多线程且操作大量字符串用StringButter,线程安全,可修改。

String类的理解:

1.String类是final的,它的所有成员变量也都是final的,所以该类不可以被继承以及被修改
2.String类是通过char数组来保存字符串的
3.String对象一旦创建就是不可修改的,对String对象的任何改变都不影响到原对象,相关的任何改变操作都会生成新的对象
4.字符串池的优点就是避免了相同内容的字符串的创建,节省了内存,省去了创建相同字符串的时间,同时提升了性能;另一方面,字符串 池的缺点就是牺牲了JVM在常量池中遍历对象所需要的时间,不过其时间成本相比而言比较低。

Array和(列表)ArrayList的区别:

1.Array可以包含基本数据类型和引用数据类型,而ArrayList只能A包含引用数据类型
2.Array大小是可以固定的,而ArrayList的大小是动态变化的
3.ArrayList提供了更多方法和特性
4.对于基本数据类型,集合使用自动装箱来减少编码工作量,但是处理固定大小的基本数据类型时,这个方式就不适合

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

1.值传递是对基本类型变量而言,传递的是一个变量的副本,而改变其副本并不会影响原来的值
2.引用传递是对引用数据类型而言的,传递的是一个堆中的地址值的副本,并不是原对象本身,但是改变这个副本的时候会改变原来的值
3.一般认为:java都是值传递
什么是自动装箱/拆箱:
自动装箱是指Java编译器在基本数据类型和其对应的包装类之间进行转换,反之就是自动拆箱

Lambda表达式的优缺点:

优点:1.简洁,2.非常容易计算,3.可能代表未来的编程趋势
缺点:1.不用并行计算的化,很多时候计算速度没有传统的for循环块
2.不容易调试
3.若其他程序员没有学过,就会导致其他人看不懂该表达式代码

为什么重写equals还要重写hashcode:

在hashMap中,存储值是比较key值是否相等,那么判断key是根据本地方法返回一个对象的内存地址Hashcode值,这个值为默认值,这个hashcode值如果相等,就再比较equals方法,若相等就代表他们相等的,反之则不相等。如果我们只覆写了hashcode方法,equals方法没有覆写,当equals比较的时候就只会判断他们的内存地址是否相等,所以两个方法都需要覆写
重载hashCode()是为了对同一个key,能得到相同的Hash Code,这样HashMap就可以定位到我们指定的key上。重载equals()是为了向HashMap表明当前对象和key上所保存的对象是相等的,这样我们才真正地获得了这个key所对应的这个键值对。