Java的一些细节语法(不定时更新。。。)
可信考试Java相关题目
ConcurrentHashMap
不允许key为null,但是HashMap
是可以的。TreeMap
key不支持null。以下代码里面,请注意:
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
Process
类有输出流,输入流,错误流。关于nio里面
Buffer
的duplicate
方法: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();
Java Stream
的数据源有容器,数组和I/O,Stream的中间操作(intermediate function)
并不会直接执行,只有遇到终端操作(terminal function)
才会开始执行。在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
前后的区别。Java的栈帧包括:局部变量表,操作数,动态链接,方法返回地址(注意,不包含本地方法栈)
通过
DataSource
对象访问的驱动程序本身不会向DriverManager
注册,且其对象属性是可以进行更改的,如果服务器配置发生了变化,可以通过更新DataSource
来进行对应的适配。关于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的一些细节语法(不定时更新。。。)的更多相关文章
- Java专业技能面试问题(不定时更新)
刚看到园友五月的仓颉<面试感悟----一名3年工作经验的程序员应该具备的技能>感觉很不错,不论是为面试跳槽准备,还是打算深化精进自己的技术都可以参考一下.面向工资编程多少也有点道理,虽然技 ...
- Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新
Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/7887449 ...
- Java应用集群下的定时任务处理方案(mysql)
Java应用集群下的定时任务处理方案(mysql) 因为自己有csdn和博客园两个博客, 所以两边都会发一下. csdn地址: http://blog.csdn.net/u012881584/ar ...
- java与c#的语法对比
1,命名空间与包 C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace) Java中与此对应的东西叫做包(package) 2,类的访问控制方面的不同 C#只有两种:publ ...
- [Android Traffic] 调整定时更新的频率(C2DM与退避算法)
转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[ ...
- Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段
在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...
- iOS 属性修饰符记录 --不定时更新
重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰 ...
- Eclipse中java向数据库中添加数据,更新数据,删除数据
前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据. 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的信息) package com.ning ...
- linux下svn定时更新项目
方法一.用shell脚本定时更新项目 1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test 2.建立脚本文件update.sh,分两步进行.首先利 ...
随机推荐
- mybaties longtext 类型不能映射到自动生成的文件
假设数据库里有 fun_detail 这样一个字段. 使用 MyBatis Generator 生成的 XXExample 文件,发现没有 fun_detail 这个字段. 需要加一行: <co ...
- 3.下载CentOS镜像
下载CentOS镜像 引子: 镜像可以看成是类似ZIP的压缩文件,与rar ZIP压缩包类似,镜像文件是无法直接使用的,需要利用一些虚拟光驱工具 进行解压后才能使用 我们这里就是CentOS系统的镜像 ...
- Win10屏幕亮度不能调节,调节无效怎么办?
Win10屏幕亮度不能调节,调节无效怎么办? 听语音 浏览:1027 | 更新:2019-11-22 11:43 1 2 3 4 5 6 7 分步阅读 一些用户在使用win10系统之后,出现了电脑屏幕 ...
- 搭建LAMP环境部署Nextcloud私人网盘
搭建 LAMP 环境部署 Nextcloud 私人网盘 前言 Nextcloudd 是一个开源的.基于本地的文件共享和协作平台,它允许您保存文件并通过多个设备(如PC.智能手机和平板电脑)访问它们. ...
- Boostrap bootstrap-table插件使用教程
bootstrap table 简介及特性 简介 Bootstrap table 是国人开发的一款基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选.多选.排序 ...
- Centos7.4 docker安装包下载以及离线安装
docker安装包下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 需要下载一个selinux包:dock ...
- Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] 错误(Day_25)
错误: 在maven项目,web启动的时候报这个错误 Failed to start component [StandardEngine[Tomcat].StandardHost[localho ...
- Windows 10正式版官方原版镜像!(备忘)
本文搜集整理微软官方发布的Windows 10正式版镜像下载链接,从RTM原始正式版开始,按照时间倒序排列,即越往上的越新. 注意:以下资源均来自于微软官方原版,ed2k可视为P2P下载链接.下载完成 ...
- 树莓派 PICO基础教程(基于MicroPython)
目录 1 树莓派 PICO 简介 1.1 简介 1.2 配置 [^2] 1.3 引脚图 1.4 尺寸 2 安装 2.1 烧录固件 2.2 安装IDE(Thonny IDE) 2.3 离线运行程序 3 ...
- Nacos源码结构和AP模式注册中心实现介绍
前言 NacosAP模式源码分析目录 微服务下的注册中心如何选择 Nacos使用和注册部分源码介绍 Nacos服务心跳和健康检查源码介绍 Nacos服务发现 Nacos源码结构介绍 Nacos版本基于 ...