Java知识点总结(一)

Java知识点总结

前序

这是我多年学习的Java经验,对自己学习的Java知识点和一些资料进行总结,如果有不对的地方,希望大家能提出来。

Java中包含的模块

本文大概分为19个模块,分别是Java基础,容器,多线程,反射,对象拷贝,Javaweb,异常,网络,设计模式,Spring/SpringMvc,Spring Boot/Spring Cloud,Hibernate,MyBatis,RabbitMQ,Kafka,
Zookeeper,Mysql,Redis,JVM,具体关系如下图:在这里插入图片描述

java基础

1.JavaSE部分

1.1Java和PHP的区别?

PHP暂时还不支持像Java那样JIT运行时编译热点代码,但是PHP具有opcache机制,能够吧脚本对应的 opcode缓存在内存,PHP7中还支持配置opcache.file_cache导出opcode到文件,第三方的Facebook HHVM也支持JIT,另外PHP官方基于LLVM围绕opcache机制构建的Zend JIT 分支也在开发测试,在php-src/Zend/bench.php测试显示,php JIT分支速度是PHP5.4的10倍。
PHP的库函数是用C实现的,而java核心运行时库(jdk/jre/lib/rt.jar,大于60MB)用java编写(jdk/src.zip),所以Java应用运行的时候,用户编写的代码以及引用的类库和框架都要在JVM.上解释执行.Java的HotSpot机制,直到有方法被执行10000次才会触发JIT编译,在此之前运行在解释模式下,以避免出现JIT编译花费的时间比方法解释执行消耗的时间还要多的情况.
PHP内置模板引擎,自身就是模板语言.而Java Web需要使用JSP容器如Tomcat或第三方模板引擎.
PHP也可以运行在多线程模式下,比如Apache的
event MPM和Facebook的HHVM都是多线程架构.不管是多进程还是多线程的PHP Web运行模式,都不需要PHP开发者关心和控制,也就是说PHP开发者不需要写代码参与进程和线程的管理这些都由PHP-
FPM/HHVM/ Apache实现. PHP-FPM进程管理和并发实现并不需要PHP开发者关心,而Java多线程编程需要Java开发者编码参与.PHP一个worker进程 崩 溃,master进程会自动新建一个新的worker进程 ,并不会导致PHP服务崩溃.而Java多线程编程稍有不慎(比如没有捕获异常)就会导致JVM崩溃退出,对于PHP-FPM和Apache MOD. _PHP来说,服务进程常驻内存,但一-次请求释放一-次资源,这种内存释放非常彻底. PHP基于引用计数的GC甚至都还没发挥作用程序就已经结束了。

1.2Java中如何支持正则表达式操作的?

Java中的string类提供了支持正则表达式操作的方法,包括:matches(),replaceAll(),replaceFirst(),split()。此外Java中可以用Pattern类表示正则表达式对象,它提供了丰富的API进行各种正则表达式操作,如:

import java.util.regex.Matcher;
import java.util.regex.pattern;
class RegExpText{
    public static void main(string[] arges){
         string str="长春市(高新区)(绿园区)(宽城区)";
         Pattern p=attern.compile(".*?(?=\\())");
         Matcher m=p.matcher(str);
         if(m.find()){
              System.out.println(m.group());
         }
    }
}
1.3正则表达式的用途?

在编写处理字符串的程序时,经常会查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。计算机处理信息更多的实惠不是数值而是字符串,正则表达式就是在进行字符串匹配和处理的时候最强大的工具,绝大多数语言都提供了对正则表达式的支持。
详情请点击该链接

1.4JDK和JRE有什么区别?

jdk : java Development kit 的简称,Java开发工具包,提供了Java的开发环境和运行环境。
jre : java Runtime Environment 的简称,Java运行环境,为Java的运行提供了所需的环境。

1.5==和equals的区别是什么?

==解读
对于基本类型和引用类型==的作用效果是不同的,如下所示:
*基本类型:比较的是值是否相同;
*引用类型:比较的是引用石佛相同;
代码示例:

String x="string";
String y="string";
String z=new String("string");
System.out.println(x==y);//true
System.out.println(x==z);//flase
System.out.println(x.equals(y));//true
System.out.println(x.equals(z));//flase

代码解读:因为x和y指向的是一个引用,所以==也是true,而new String ()方法则重写开辟了内存空间,所以 ==的结果为flase,而equals比较的一直是值,所以结果都是true。
equals解读
equals本质上就是 ==,只不过String和Integer等重写了equals方法,把它变成了值比较,例如下列代码:
首先来看默认情况下equals比较的是一个相同值的对象:

class Cat{
   public Cat(Steing name){
        this.name=name;
   }
   private String name:
   public String getname(){
        return name;
   }
   public void setname(String name){
        this.name=name;
   }
}
Cat c1=new Cat("刘志");
Cat c2=new Cat"刘志");
System.out.println(c1.equals(c2));//false
weixin151云匹面粉直供微信小程序+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值