null в Java похож на / похож на nullptr в C ++.
Программа на C ++:
class Point
{
private:
int x;
int y;
public:
Point(int ix, int iy)
{
x = ix;
y = iy;
}
void print() { std::cout << '(' << x << ',' << y << ')'; }
};
int main()
{
Point* p = new Point(3,5);
if (p != nullptr)
{
p->print();
p = nullptr;
}
else
{
std::cout << "p is null" << std::endl;
}
return 0;
}
Та же программа на Java:
public class Point {
private int x;
private int y;
public Point(int ix, int iy) {
x = ix;
y = iy;
}
public void print() { System.out.print("(" + x + "," + y + ")"); }
}
class Program
{
public static void main(String[] args) {
Point p = new Point(3,5);
if (p != null)
{
p.print();
p = null;
}
else
{
System.out.println("p is null");
}
}
}
Теперь вы понимаете из приведенных выше кодов, что является нулевым в Java? Если нет, то я рекомендую вам изучить указатели на C / C ++, и тогда вы поймете.
Обратите внимание, что в C, в отличие от C ++, nullptr не определен, но вместо него используется NULL, что также можно использовать и в C ++, но в C ++ nullptr предпочтительнее, чем просто NULL, потому что NULL в C всегда связан с указатели и все, так что в C ++ к концу слова добавлен суффикс «ptr», а также все буквы теперь строчные, но это менее важно.
В Java каждая переменная класса non-primitive класса всегда является ссылкой на объект этого типа или наследуется, и null является ссылкой на объект класса null, но не указателем null, потому что в Java нет такой вещи как «указатель», но Вместо этого используются ссылки на объекты класса, а в Java нуль связан с ссылками на объекты класса, так что вы также можете называть его как «nullref» или «nullrefobj», но это долго, поэтому просто назовите его «null».
В C ++ вы можете использовать указатели и значение nullptr для необязательные члены / переменные, то есть член / переменная, которая не имеет значения, и если она не имеет значения, то она равна нулюptr, так как null в Java можно использовать, например.