Является ли CROSS JOIN синонимом INNER JOIN без предложения ON?

В Java существует два основных типа в JVM. 1) Типы примитивов и 2) Ссылочные типы. интервал является типом примитива, и Целое число является типом класса (который является видом ссылочного типа).

Примитивные значения не совместно используют состояние с другими примитивными значениями. Переменная, тип которой является типом примитива всегда, содержит примитивное значение того типа.

int aNumber = 4;
int anotherNum = aNumber;
aNumber += 6;
System.out.println(anotherNum); // Prints 4

объект является динамично созданным экземпляром класса или массивом. Ссылочные значения (часто просто ссылки) являются указателями на эти объекты и специальную нулевую ссылку, которая не относится ни к какому объекту. Может быть много ссылок на тот же объект.

Integer aNumber = Integer.valueOf(4);
Integer anotherNumber = aNumber; // anotherNumber references the 
                                 // same object as aNumber

Также в Java все передается значением. С объектами значение, которое передается, является ссылкой на объект. Так другое различие между интервалом и Целым числом в Java то, как они передаются в вызовах метода. Например, в [1 115]

public int add(int a, int b) {
    return a + b;
}
final int two = 2;
int sum = add(1, two);

переменная два передается как примитивный целый тип 2. Принимая во внимание, что в [1 116]

public int add(Integer a, Integer b) {
    return a.intValue() + b.intValue();
}
final Integer two = Integer.valueOf(2);
int sum = add(Integer.valueOf(1), two);

переменная два передается как ссылка на объект, который содержит целочисленное значение 2.

@WolfmanDragon: Передача ссылкой работала бы как так:

public void increment(int x) {
  x = x + 1;
}
int a = 1;
increment(a);
// a is now 2

, Когда инкремент называют, он передает ссылку (указатель) на переменную . И инкремент функция непосредственно изменяет переменную .

И для типов объектов это работало бы следующим образом:

public void increment(Integer x) {
  x = Integer.valueOf(x.intValue() + 1);
}
Integer a = Integer.valueOf(1);
increment(a);
// a is now 2

Вы видите различие теперь?

27
задан Benoit 21 April 2011 в 09:34
поделиться

1 ответ

Необработанное перекрестное объединение - это такое, которое не имеет предложения where, означающего, что создается одна запись для каждой комбинации левой и правой таблиц, объединяемых с нулями, вставленными там, где нет данных левой или правой стороны.

Если вы добавляете предложение where к перекрестному соединению, это делает его эквивалентным внутреннему соединению, поскольку предложение where делает то же самое, что и ON во внутреннем соединении.

Тем не менее, внутренние объединения, как правило, лучше использовать, так как это отделяет условие ON от остальных ваших предложений where, облегчая понимание.

2
ответ дан 28 November 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: