可信考试Java相关题目

  1. ConcurrentHashMap不允许key为null,但是HashMap是可以的。TreeMap key不支持null。

  2. 以下代码里面,请注意:

    Integer a = 150;
    Integer b = 150;
    Integer c = 100;
    Integer d = 100;
    Integer e = new Integer(100);
    System.out.println(a == b); //false
    System.out.println(a == 150); //true 这种是真正的在对比值的大小
    System.out.println(c == d); //true
    System.out.println(c == e); //false
  3. Process类有输出流,输入流,错误流。

  4. 关于nio里面Bufferduplicate方法:

    ByteBuffer buf = ByteBuffer.allocate(100);
    /**
    * duplicate函数的官方注释,并不是真正的复制。
    * Creates a new byte buffer that shares this buffer's content.
    *
    * <p> The content of the new buffer will be that of this buffer. Changes
    * to this buffer's content will be visible in the new buffer, and vice
    * versa; the two buffers' position, limit, and mark values will be
    * independent.
    * */
    ByteBuffer buf2 = buf.duplicate();
  5. Java Stream的数据源有容器,数组和I/O,Stream的中间操作(intermediate function)并不会直接执行,只有遇到终端操作(terminal function)才会开始执行。

  6. 在Java里面, count = count++,会导致count++没有效果,这个从字节码层面是可以解释的。

    	     0: iconst_0
    1: istore_1 // 将0存入到参数1的位置
    2: iload_1 //将参数1的位置,也就是0,读取到操作数栈
    3: iinc 1, 1 //给参数1的位置的参数直接+1
    6: istore_1 //将操作数栈顶,也就是0,存储在参数1的位置
    7: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
    10: iload_1 //将参数1的位置,也就是0,读取到操作数栈
    11: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
    14: return

    相对的,count = ++count的字节码如下:

             0: iconst_0
    1: istore_1 // 将0存入到参数1的位置
    2: iinc 1, 1 // 将参数1的位置,也就是0,直接+1,
    5: iload_1 // 读取参数1的位置,也就是1,放在操作数栈
    6: istore_1 // 将操作数栈顶的值,也就是1,存储在参数1的位置
    7: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
    10: iload_1 // 将参数1的位置,也就是1,读取到操作数1栈
    11: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
    14: return

    注意观察两段代码iinc前后的区别。

  7. Java的栈帧包括:局部变量表,操作数,动态链接,方法返回地址(注意,不包含本地方法栈)

  8. 通过DataSource对象访问的驱动程序本身不会向DriverManager注册,且其对象属性是可以进行更改的,如果服务器配置发生了变化,可以通过更新DataSource来进行对应的适配。

  9. 关于Java里面的<? extends Obj> 协变和<? super Obj>逆变的详细解释:

        static class Parent{
    } static class FirstChild extends Parent{
    } static class SecondChild extends Parent{ } static class FirstGrandChild extends FirstChild{ } static class FirstGrand2Child extends FirstChild{
    } static class SecondGrandChild extends SecondChild{ } static class SecondGrand2Child extends SecondChild{ } public static void main(String[] args) {
    //指定了上界
    List<? extends FirstChild> parentList = new ArrayList<>();
    List<FirstChild> firstChildList = new ArrayList<>();
    firstChildList.add(new FirstGrandChild());
    firstChildList.add(new FirstGrandChild());
    //Parent没有继承FirstChild
    // parentList = new ArrayList<Parent>();
    //这个是可以的,因为parentList表示该list存储了Parent或者其子类
    parentList = firstChildList;
    //下面这个是不可以的,因为该list存储了Parent或者其子类,那么尝试添加FirstChild就会出错,因为继承了Parent的不仅有FirstChild还有SecondChild。
    // 上面把List<FirstChild>赋值给List<? extends Parent>后,如果添加可以成功的话,那么根据Java泛型实现的方式,就可以添加SecondChild及其子类,
    // 这明显是违背Java的语法规则的,所以这种情况下只能添加null。这称之为协变
    // parentList.add(new FirstChild()); //但是get是可以的,因为指定了上界,所以可以确定成员一定可以转换为FirstChild
    FirstChild c = parentList.get(0); //指定了下界
    List<? super SecondChild> secondList = new ArrayList<>();
    List<Parent> pList = new ArrayList<>();
    secondList = pList; //不是SecondChild的父类
    // secondGrandList = new ArrayList<SecondGrand2Child>(); //但是不同于协变,add是可以的,因为可以确定的是,secondList里面成员,一定可以转换成SecondChild或者其父类,
    // 所以这里的add操作是可以的,这叫做逆变。比如说下面的SecondGrandChild和SecondGrand2Child都是可以转换成SecondChild或者其父类的
    secondList.add(new SecondGrandChild());
    secondList.add(new SecondGrand2Child()); //相反的,get操作只能返回Object,因为SecondChild的父类不确定,因此无法确定一个具体的类型,但是Object又是所有类的父类,
    //因此,get返回的只能是Object对象
    Object o = secondList.get(0);
    //这个操作是不可以的
    // SecondChild child = secondList.get(0); }

Java的一些细节语法(不定时更新。。。)的更多相关文章

  1. Java专业技能面试问题(不定时更新)

    刚看到园友五月的仓颉<面试感悟----一名3年工作经验的程序员应该具备的技能>感觉很不错,不论是为面试跳槽准备,还是打算深化精进自己的技术都可以参考一下.面向工资编程多少也有点道理,虽然技 ...

  2. Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新

    Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/7887449 ...

  3. Java应用集群下的定时任务处理方案(mysql)

    Java应用集群下的定时任务处理方案(mysql)   因为自己有csdn和博客园两个博客, 所以两边都会发一下. csdn地址: http://blog.csdn.net/u012881584/ar ...

  4. java与c#的语法对比

    1,命名空间与包 C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace) Java中与此对应的东西叫做包(package) 2,类的访问控制方面的不同 C#只有两种:publ ...

  5. [Android Traffic] 调整定时更新的频率(C2DM与退避算法)

    转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[ ...

  6. Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段

    在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...

  7. iOS 属性修饰符记录 --不定时更新

    重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰 ...

  8. Eclipse中java向数据库中添加数据,更新数据,删除数据

    前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据. 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的信息) package com.ning ...

  9. linux下svn定时更新项目

    方法一.用shell脚本定时更新项目   1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test   2.建立脚本文件update.sh,分两步进行.首先利 ...

随机推荐

  1. MySQL备份脚本,应该这么写

    前言: 数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果.所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库.在 MySQL 中,比较常用的逻辑备份工具是 ...

  2. IP子网划分与聚合

    一:IP地址: IP地址是由32位2进制数组成,每8位一组.由点分十进制表达. IP地址可以分为五类 A类(1.0.0.0-126.255.255.255),127.0.0.1 为本地回环地址. B类 ...

  3. “深度评测官”——记2020BUAA软工软件案例分析作业

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 完成一次完整的软件开发经历并以博客的方式记录开发 ...

  4. jQuery的入口和jQurey的对象切换

    jQuery jQuery的导入 通过script标签的src属性,link标签是导入层叠样式表 jQuery和原生JS的入口函数 1.jQ在页面结构加载完毕就会执行 原生JS的入口函数是等图片.层叠 ...

  5. 使用alpine为基础镜像Q&A

    作为go应用存在二进制文件却不能执行 明明镜像中有对应的二进制文件,但是执行时却提示 not found 或 no such file 或 standard_init_linux.go:211: ex ...

  6. css背景|列表样式

    背景样式 背景区包含内容.padding 和 boder 不包含外边距 background-color 设置元素的背景颜色 background-image 把图像设置为背景,包含内边距和边框,不包 ...

  7. tail -fn 1000 test.log | grep '关键字' 按照时间段 sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

    Linux 6种日志查看方法,不会看日志会被鄙视的 2020-02-11阅读 7.3K0   作为一名后端程序员,和Linux打交道的地方很多,不会看Linux日志,非常容易受到来自同事和面试官的嘲讽 ...

  8. at在指定的时间执行命令+atq列出用户待处理作业(jobs)

    按下crtl+d取消定时任务 # at now+1hourat> echo"a">aat> <EOF>at> <EOT>job 4 ...

  9. Linux占用swap分区过高,物理内存还有剩余

    Linux占用swap分区过高,物理内存还有剩余 问题分析 Swap配置对性能的影响 分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误.如果系统的物理内存用光了,系统就会跑得 ...

  10. 攻防世界(二)Training-WWW-Robots

    攻防世界系列:Training-WWW-Robots 1.查看robots.txt的要求  补充: 什么是robots.txt协议? Robots.txt是放在网站根目录下的一个文件,也是搜索引擎在网 ...