j***a语言取消了指针,j***a语言取消了指针怎么办

kodinid 7 0

大家好,今天小编关注到一个比较意思的话题,就是关于java语言取消了指针问题,于是小编就整理了3个相关介绍Java语言取消了指针的解答,让我们一起看看吧。

  1. 为什么会空指针异常?
  2. java中的语法错误指什么?
  3. C语言为什么要引入指针?

什么会空指针异常

1.所谓的指针,就是j***a中的对象引用。比如String s;这个s就是指针。

2.所谓的空指针,就是指针的内容为空,比如上面的s,如果令它指向null,就是空指针。

java语言取消了指针,java语言取消了指针怎么办-第1张图片-安济编程网
图片来源网络,侵删)

3.所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s***如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。

j***a中的语法错误指什么?

还是蛮有意思的,别人跟你说运行时错误就是语法错误,就又来问什么是语法错误了。不过他的说法是错的,语法错误是编译期错误,逻辑错误才是运行期错误。

语法错误当然就是不符合语法规则出现的问题,比如说你拿两个字符串进行乘法运算,当然就不对了,就是通常所说的病句。

java语言取消了指针,java语言取消了指针怎么办-第2张图片-安济编程网
(图片来源网络,侵删)

这是它们的区别

编译错误就是程序在编译阶段,此时程序还没有运行,编译器根据语法规则进行检查会发现错误,并给出错误提示,一般是语法上的错误;运行错误就是程序在语法上没有错误,但是随着时间的推移,在程序的运行阶段发生了错误,比如数组越界了,空指针等。

C语言为什么要引入指针?

首先,指针就是内存地址。而内存地址计算机中自然存在的东西,所以不存在c语言引进指针这种说法。

java语言取消了指针,java语言取消了指针怎么办-第3张图片-安济编程网
(图片来源网络,侵删)

那其它语言中没有指针呢?那是因为在这些语言中指针被抽象了、屏蔽了计算硬件相关的概念,比如J***a、C#。这使得这些语言更安全、更容易使用。但同时也使得这些语言丢失了直接操作硬件的便利。

C语言之所以保留指针,是为了它满足它的设计需求:重写unix操作系统。而操作系统需要直接操作硬件的,同时也需要程序直接反映内存或寄存器中的数据。这使得c语言直观并且高效,非常适合底层的、高效的程序。

几乎所有的编程语言都需要对内存地址进行操作,只不过C语言是显式,其他语言是隐式的。可以机械运算的原理和实际的应用方法两个方面来理解这个问题。

机械运算需要地址操作

打个比方,给你一排计算器。每个计算器上都有一个内存,用M,MR,MC进行内存的读写擦除。在不同的计算器上进行分步计算,利用内存传递中间结果,就可以完成复杂的计算任务。不停地切换计算器的动作就相当于地址操作了。一台计算机相当于由大量的计算器组成的,而程序则规定了在计算器之间切换的步骤。从图灵机到冯氏架构,都可以理解为这样的方式。计算机程序必须得有地址操作,编程语言中出现代表地址的指针也就不足为奇了。但是,地址操作不符合我们的思考习惯,人们还是希望能够隐藏地址操作,赋予地址操作比较接近自然语言的意义。

被隐藏了的指针

在C#中,用ByRef关键字定义指针,而用ByVal关键字定义值。而J***a则刻意隐藏了指针的概念。但下面这个例子中还是漏出了马脚:

String str=“Hello”;

String ptr=new String(“Hello”);

一行中的变量是值,用它传参相当于复制自己也就是值传递。而第二行的参数是一个指针,用它传参虽然也会***自己,但是由于它是字符串的首地址,相当于引用传递。如果你留意一下几乎每种语言里都能找到指针的影子。能完全无视指针的语言大概只有SQL吧。这种语言是迄今为止最高级的语言,有人把它称为第五代语言。

到此,以上就是小编对于j***a语言取消了指针的问题就介绍到这了,希望介绍关于j***a语言取消了指针的3点解答对大家有用。

标签: 指针 语言 错误

上一个乐高 与编程教程,乐高 与编程教程的区别

下一个零基础学习python靠谱吗,零基础能学python