我正在寻求对此的澄清.我在下面写两个问题:
我们有一个员工姓名表,列ID,姓名,薪水
1. Select name from employee
where sum(salary) > 1000 ;
2. Select name from employee
where substring_index(name,' ',1) = 'nishant' ;
Run Code Online (Sandbox Code Playgroud)
查询1不起作用,但查询2确实有效.根据我的开发经验,我觉得可能的解释是:
sum()适用于参数中指定的一组值.这里'salary'列被传递,因此它必须将此列的所有值相加.但是在where子句中,记录是逐个检查的,就像检查第一个记录1一样,等等.因此,sum(salary)将不会被计算,因为它需要访问所有列值,然后只返回一个值.
查询2作为substring_index()工作在单个值上,因此它在提供给它的值上工作.
你能否证实我的理解.
我正在对Long和Integer类的成员进行静态导入:
import static java.lang.Integer.MAX_VALUE;
import static java.lang.Long.MAX_VALUE;
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试使用此变量MAX_VALUE并打印它,我将收到一个错误:
import static java.lang.Integer.MAX_VALUE;
import static java.lang.Long.MAX_VALUE;
public class StaticImportDemo2 {
public static void main(String[] args) {
//Error :: The field MAX_VALUE is ambiguous
System.out.println("Print without static import Integer.MAX_VALUE "+MAX_VALUE);
}
}
Run Code Online (Sandbox Code Playgroud)
这可以.要删除错误,我将不得不删除一个静态导入来解决这种歧义.
我得到的主要问题是,如果我使用*带有Integer类静态导入的通配符,则编译该类时没有错误:
import static java.lang.System.out;
import static java.lang.Integer.*;
import static java.lang.Long.MAX_VALUE;
public class StaticImportDemo2 {
public static void main(String[] args) {
System.out.println("Print without static import Integer.MAX_VALUE " + MAX_VALUE);
}
}
Run Code Online (Sandbox Code Playgroud)
模棱两可仍然存在.为什么这个编译没有问题?
我有以下两个课程,如下所示。为了简单起见,仅显示了 toString 重写方法。
public class Circle {
@Override
public String toString() {
return "Circle";
}
}
public class Cylinder extends Circle {
@Override
public String toString() {
// return "Cylinder"+this; // runs without explicitly calling toString() on this keyword
// return "Cylinder"+super; // throws error, asks to delete super token
return "Cylinder["+super.toString(); // runs without error after adding .toString() with super keyword
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我对 super 关键字的理解。super 关键字的 toString() 应该像 this 关键字一样隐式调用。事实上,大多数教程和书籍都将 super 关键字称为对超类的一种对象引用,因此它的行为必须与this 关键字与 toString() 内的“+”连接运算符一起使用。请帮助我理解这一点。
这个问题是OCP测试系列的一部分.
> Integer i=new Integer(100_00);
Run Code Online (Sandbox Code Playgroud)
我试图理解这是如何工作的,但到目前为止我只有这么多,这是一种消息格式.请详细说明我们如何使用下划线传递数值.请原谅我,如果这是一个简单的概念,但我有点想知道这一点.