那么他就会先根据 JLS 15.25 的规定,把返回值结果转换成基本类型。 参考资料: 【1】《Java 开发手册(泰山版)》 【2】http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25 【3】http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.25 【4】https://docs.oracle.com /javase/specs/jls/se8/html/jls-15.html#jls-15.2 【5】https://docs.oracle.com/javase/specs/jls/se7/html /jls-15.html#jls-15.12.2.7 【6】https://docs.oracle.com/javase/specs/jls/se8/html/jls-18.htm
docs.oracle.com/javase/specs/jvms/se8/html/index.html java语言规范 https://docs.oracle.com/javase/specs/jls specs/jvms/se8/html/jvms-4.html#jvms-4.7.12 constant variable: https://docs.oracle.com/javase/specs/jls /se8/html/jls-4.html#jls-4.12.4 常量表达式 https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls
* @jls 9.1.1 Interface Modifiers */ private static final int INTERFACE_MODIFIERS = * @jls 8.8.3 Constructor Modifiers */ private static final int CONSTRUCTOR_MODIFIERS = * @jls 8.4.1 Formal Parameters */ private static final int PARAMETER_MODIFIERS = * * @jls 8.1.1 Class Modifiers * @since 1.7 */ public static int classModifiers * * @jls 8.3.1 Field Modifiers * @since 1.7 */ public static int fieldModifiers
conversion may include boxing or unboxing conversion (§5.1.7, §5.1.8). https://docs.oracle.com/javase/specs/jls /se17/html/jls-15.html#jls-15.25 其它规则:比如原生类型的类型不同,会发生类型自动转换,基本都是范围小的类型转换为范围大的类型。
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2
原理分析 关于为什么编辑器会在代码编译阶段对于三目运算符中的表达式进行自动拆箱,其实在《The Java Language Specification》(后文简称 JLS,是Java 语言规范,是一切 我们直接看 Java SE 1.7 JLS 中关于这部分的描述(因为 1.7 的表述更加简洁一些),原文地址 -> https://docs.oracle.com/javase/specs/jls/se7 /html/jls-15.html#jls-15.25: 看我框出来的两句话: If the second and third operands have the same type (which may 理解下这句话,JLS 的规范是如果第二和第三位操作数分别是基本类型和包装类型,那么要求返回值是基本类型。 那如果你自己写的代码返回值是包装类型,那么编译器为了满足 JLS 规范,其实是会自动做一个拆箱的 简单总结:只要表达式 1 和表达式 2 的类型有一个是基本类型一个是包装类型,就会做触发类型对齐的拆箱操作
1;byte b = 2;b = (byte) (a + b);// 写法二(这种写法是上面写法的一种简化写法,具体可以见:https://docs.oracle.com/javase/specs/jls /se8/html/jls-15.html#jls-15.26.2byte a = 1;byte b = 2;b += a;问题原理首先根据 Java 语言规范的描述,在执行加法或者减法运算时,会对操作数进行类型提升
Java官方文档(https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1)原文如下: ? 类型举例: ?
根据https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html, java的break语句不仅可以跳出循环,还可以中止label标记的代码块
System.out.println(null instanceof Object);//false 关于 null 类型的描述在官方文档:https://docs.oracle.com/javase/specs/jls /se7/html/jls-4.html#jls-4.1 有一些介绍。 7、深究原理 我们可以看Java语言规范Java SE 8 版:https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.20.2
mfrbuaa/p/4713799.htmlhttps://www.cnblogs.com/keeya/p/12780847.htmlhttps://docs.oracle.com/javase/specs/jls /se8/html/jls-15.html#jls-15.12.2
NoClassDefFoundError 异常究竟是怎么来的了,打开Oracle 文档便开始全局搜索这个,果不其然,有了新的发现: (文档地址:https://docs.oracle.com/javase/specs/jls /se7/html/jls-12.html#jls-12.4.2) ?
\left ( \mathbf{ x}_i\right )-y_i \right )^2 二、最小二乘学习法 最小二乘法是对LossLoss函数为最小时的参数进行学习,即: θ^LS=argminθJLS 此时,损失函数的形式为: JLS(Θ)=12∥ΦΘ−y∥2 J_{LS}\left ( \Theta \right )=\frac{1}{2}\left \| \Phi \Theta -\mathbf 1\left ( \mathbf{x}_n \right ) & \cdots & \phi _b\left ( \mathbf{x}_n \right ) \end{pmatrix} 为了能够求出JLS (Θ)J_{LS}\left ( \Theta \right )最小值时对应的参数Θ \Theta : ▽ΘJLS=(∂JLS∂θ1,⋯,∂JLS∂θb)T=ΦTΦΘ−ΦTy \bigtriangledown
此外,JLS §13.5.7条目还指出: 添加或删除注释不会影响 Java 编程语言中程序二进制表示的正确链接。 底线是,运行时不会因缺少注释而引发异常,因为 JLS 允许这样做。 3.3. 168) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 1 more 根据 JLS
在类文字(class literal)中必须使用原生态类型,规范不允许使用参数化类型(但允许数组类型和基本类型)[JLS,15.8.2] ClassLiteral: TypeName {[ ] or the pseudo-type void, followed by a '.' and the token class. https://docs.oracle.com/javase/specs/jls /se8/html/jls-15.html#jls-15.8.2 instanceof 操作符对“无限制通配符”的参数化类型是无效非法的。
ps JSP Unicode解析特性 在JSP文件中,在除开头部声明处,其他的代码内容均可以使用Unicode代码进行替换 https://docs.oracle.com/javase/specs/jls /se8/html/jls-3.html#jls-UnicodeEscape 免杀马制作: 先正常的免杀马,绕过进行unicode编码。
identity semantics of autoboxing for values between * -128 and 127 (inclusive) as required by JLS +) cache[k] = new Integer(j++); // range [-128, 127] must be interned (JLS7
-成功 JSP Unicode解析特性 在JSP文件中,在除开头部声明处,其他的代码内容均可以使用Unicode代码进行替换 https://docs.oracle.com/javase/specs/jls /se8/html/jls-3.html#jls-UnicodeEscape 免杀马制作 先正常的免杀马,然后进行unicode编码。
/* @jls 4.3.2. The Class Object * @jls 9.8 Functional Interfaces * @jls 9.4.3 Interface Method Body * @since 1.8 */ * * @jls 4.3.2. The Class Object * @jls 9.8 Functional Interfaces * @jls 9.4.3 Interface Method Body * @since 1.8
扩展阅读(jdk10): https://docs.oracle.com/javase/specs/jls/se10/html/jls-17.html#jls-17.7 咦?怎么有11个?