Java SE 知识点

  1. 数组(Array)和列表(ArrayList)的区别?什么时候应该使用Array而不是ArrayList?

    • Array和ArrayList的不同点: Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
    • Array大小是固定的,ArrayList的大小是动态变化的。
    • ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
    • 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。
  2. 解释什么是值传递和引用传递?
    值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量. 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 所以对引用对象进行操作会同时改变原对象. 一般认为,java内的传递都是值传递.

  3. 什么是自动拆装箱?
    自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成Double,等等。反之就是自动拆箱。
    如: Integer a = 3; 编译器将 int 类型的 3 自动转换成 Integer 类型

  4. 解释为什么会出现4.0-3.6=0.40000001这种现象?
    2进制的小数无法精确的表达10进制小数,计算机在计算10进制小数的过程中要先转换为2进制进行计算,这个过程中出现了误差。

  5. 说明符号“”比较的是什么?
    ”对比两个对象基于内存引用,如果两个对象的引用完全相同(指向同一个对象)时,“”操作将返回true,否则返回false。“”如果两边是基本类型,就是比较数值是否相等。

  6. 解释Object若不重写hashCode()的话,hashCode()如何计算出来的?
    Object 的 hashcode 方法是本地方法,也就是用 c 语言或 c++ 实现的,该方法直接返回对象的 内存地址

  7. 解释为什么重写equals还要重写hashcode?
    HashMap中,如果要比较key是否相等,要同时使用这两个函数!因为自定义的类的hashcode()方法继承于Object类,其hashcode码为默认的内存地址,这样即便有相同含义的两个对象,比较也是不相等的。HashMap中的比较key是这样的,先求出key的hashcode(),比较其值是否相等,若相等再比较equals(),若相等则认为他们是相等的。若equals()不相等则认为他们不相等。如果只重写hashcode()不重写equals()方法,当比较equals()时只是看他们是否为同一对象(即进行内存地址的比较),所以必定要两个方法一起重写。HashMap用来判断key是否相等的方法,其实是调用了HashSet判断加入元素 是否相等。重载hashCode()是为了对同一个key,能得到相同的Hash Code,这样HashMap就可以定位到我们指定的key上。重载equals()是为了向HashMap表明当前对象和key上所保存的对象是相等的,这样我们才真正地获得了这个key所对应的这个键值对。

  8. Syncronized锁,如果用这个关键字修饰一个静态方法,锁住了什么?如果修饰成员方法,锁住了什么?
    synchronized修饰静态方法以及同步代码块的synchronized (类.class)用法锁的是类,线程想要执行对应同步代码,需要获得类锁。 synchronized修饰成员方法,线程获取的是当前调用该方法的对象实例的对象锁。

  9. Query接口的list方法和iterate方法有什么区别?
    ①list()方法无法利用一级缓存和二级缓存(对缓存只写不读),它只能在开启查询缓存的前提下使用查询缓存;iterate()方法可以充分利用缓存,如果目标数据只读或者读取频繁,使用iterate()方法可以减少性能开销。
    ② list()方法不会引起N+1查询问题,而iterate()方法可能引起N+1查询问题

  10. 解释hashCode()和equals()方法有什么联系?
    Java对象的eqauls方法和hashCode方法是这样规定的:
    ➀相等(相同)的对象必须具有相等的哈希码(或者散列码)。
    ➁如果两个对象的hashCode相同,它们并不一定相同。

  11. 说明JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
    在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。
    。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。用try来指定一块预防所有”异常”的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的”异常”的类型。throw语句用来明确地抛出一个”异常”。throws用来标明一个成员函数可能抛出的各种”异常”。Finally为确保一段代码不管发生什么”异常”都被执行一段代码。可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,”异常“的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种”异常”进行处理,堆栈就会展开,直到遇到有处理这种”异常”的try语句。

  12. 谈谈StringBuffer和StringBuilder有什么区别,底层实现上呢?
    StringBuffer线程安全,StringBuilder线程不安全,底层实现上的话,StringBuffer其实就是比StringBuilder多了Synchronized修饰符。

  13. 说明Collection 和 Collections的区别
    Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot定制启动图案

转载自 Spring Boot定制启动图案启动图案 Spring Boot在启动的时候会显示一个默认的Spring的图案,对应的类为SpringBootBanner。. ____ _ __ _ _ /\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | _ | _| | _ \/ _ | \ \ \ \ \\/ ___)| |…

servlet设置cookie实验

【README】 本文旨在 通过servlet 设置cookie ,查看cookie长什么样子,来达到了解cookie的目的; cookie作用: 因为http协议是无状态的,要想维护web访问的状态,就需要使用专门的技术解决。cookie 是一种在客…

Java 集合类

List:一种有序列表的集合Set:一种保证没有重复元素的集合Map:一种通过键值(key-value)查找的映射表集合 Java集合的设计有几个特点:一是实现了接口和实现类相分离,例如,有序表的接口…

Spring MVC常用注解,你会几个?

转载自 Spring MVC常用注解,你会几个?常用注解 Controller 注解一个类表示控制器,Spring MVC会自动扫描标注了这个注解的类。 RequestMapping 请求路径映射,可以标注类,也可以是方法,可以指定请求类型&…

转:常用的几种加密算法以及java实现

转自: https://blog.csdn.net/wqwqwqwq403/article/details/103948952 工作中经常会接触到一些加密算法,比如说base64、MD5、DES、AES等等,那么这些算法到底有什么区别以及具体的应用场景是什么呢,下面就做个简要的梳理。 一、什…

JAVA 实现 JWT

引入JWT依赖,由于是基于Java&#xff0c;所以需要的是java-jwt <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version> </dependency>自定义注解用于判断是否需要验证 用来跳…

SaaS,PaaS,IaaS都是什么鬼

转载自 SaaS,PaaS,IaaS都是什么鬼IaaS Infrastructure as a Service&#xff0c;基础设施即服务。 假如你现在要做一个网站&#xff0c;你肯定要有一台服务器或者虚拟机&#xff0c;要么自己搭建&#xff0c;要么买服务器运营商的。说白了&#xff0c;IaaS就是解决企业硬件问题…

转:什么是 Base64编码

转&#xff1a; https://developer.aliyun.com/article/763589 一、定义 Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。为什么会有 Base64 编码呢&#xff1f;&#xff08;Base…

什么是Spring Boot?

转载自 什么是Spring Boot? 什么是Spring Boot? Spring Boot是Spring开源组织下的子项目&#xff0c;是Spring组件一站式解决方案&#xff0c;主要是简化了使用Spring的难度&#xff0c;简省了繁重的配置&#xff0c;提供了各种启动器&#xff0c;开发者能快速上手。 官方网站…

JAVA并发知识

JAVA并发知识一、什么是线程和进程&#xff1f;二、线程与进程的关系&#xff0c;区别及优缺点&#xff1f;三、并发和并行有什么区别&#xff1f;四、为什么要使用多线程&#xff1f;五、使用多线程可能会带来什么问题&#xff1f;六、说说线程的生命周期和状态。七、java 中如…

servlet session持久化

1、 session持久化是什么&#xff1f; web服务器把 session中存储的属性存储到本地磁盘或数据库中&#xff1b; 2、为什么需要持久化&#xff1f; 因为 session是服务器维护会话状态的对象&#xff0c;即便客户端关闭连接或客户端长时间没有访问&#xff0c;服务器还依然存储…

高并发解决方案

扩容 垂直扩容&#xff1a;提高系统部件能力水平扩容&#xff1a;增加更多系统成员&#xff08;增加服务器数量&#xff09; 数据库扩容系统属于 读操作 频繁型&#xff0c;可采用垂直扩容 采用 memcache&#xff0c; redis&#xff0c; CDN等缓存系统属于 写操作 频繁型&#…

servlet session 跟踪用户上次访问时间

1、是什么&#xff1f; 上次访问时间&#xff1b;即用户最近一次登录时间&#xff1b; 2、为什么&#xff1f; 为了提示用户登录或访问记录&#xff0c;提高安全性&#xff0c;如qq登录提示&#xff1b; 3、怎么做&#xff1f; 通过cookie 实现&#xff1b; 用户第1次登录&…

Spring MVC表单防重复提交

转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交。 创建注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface Token {boolean create() default false;boolean remove() default f…

SpringMvc @RequestParam、 @RequestBody、@RequestPart 的区别

注解RequestParam接收的参数是来自requestHeader中&#xff0c;即请求头。 RequestParam可以接受简单类型的属性&#xff0c;也可以接受对象类型。 RequestParam有三个配置参数&#xff1a; required 表示是否必须&#xff0c;默认为 true&#xff0c;必须。defaultValue 可…

利用session防止表单重复提交

1、是什么&#xff1f;一个表单不能多次提交&#xff1b; 2、为什么&#xff1f; 在网络不好或者并发请求时会导致多次重复提交数据的问题。防止重复提交&#xff0c;可以维护数据一致性&#xff1b; 3、怎么做&#xff1f; 把 session的编号和当前时间戳经过 MD5 加密得到to…

Druid-目前最好的连接池

转载自 Druid-目前最好的连接池 Druid是什么 Druid是阿里开源的连接池&#xff0c;是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能&#xff0c;是为监控而生的数据库连接池&#xff01; GitHub&#xff1a;https://github.com/alibaba/druid/ 添加依赖 &l…

Nginx 部署 Vue 项目刷新页面出现404

问题 使用Vue.框架&#xff0c;利用vue-route编写了一个单页路由项目&#xff0c;运维协助在服务器端配置nginx。部署完成后&#xff0c;访问首页没问题&#xff0c;从首页里打开二级页面没问题&#xff0c;但是所有的二级页面打开后&#xff0c;再次刷新&#xff0c;就会出现…

repost: intro2token

repost 4 https://blog.csdn.net/Jason_Fangh/article/details/55113627 对于初学者来说&#xff0c;对Token和Session的使用难免会限于困境&#xff0c;开发过程中知道有这个东西&#xff0c;但却不知道为什么要用他&#xff1f;更不知道其原理&#xff0c;今天我就带大家一…

vue - resource 使用过程的坑

一. get 传参的坑&#xff1a;加params对象传参&#xff08;不能直接get(url, params)!!!&#xff09; this.$http.get(url, {params: { offset: this.offset, label: this.categray }})二. 使用post请求&#xff1a; 知识点 post参数的形式 form data(表单&#xff0c;通过url…