大家好,今天小编关注到一个比较有意思的话题,就是关于java语言运算符是什么的问题,于是小编就整理了2个相关介绍j***a语言运算符是什么的解答,让我们一起看看吧。

  1. 如果java支持操作符重载和auto等方便的特性,会发生什么?
  2. java不支持无符号整数,作为一名C程序员怎么解?

如果j***a支持操作符重载和auto等方便的特性,会发生什么?

J***a语言在设计之初就是为了简单,才会去掉了C++中大多数难以使用的特性,这些特性对于懂的人来说确实是很方便,但是对于新手来说不太容易理解和掌握,所以J***a面向的开发人员和C++是有一定区别的。

java语言运算符是什么-java语言的运算符有哪些
(图片来源网络,侵删)

现阶段JDK的版本更新越来越快,每次的新特性都是为了让J***a更容易使用,只要是方便的特性,说不定哪一天就会加入到J***a之中了,但是J***a中的语法一定会比C++更容易使用。

j***a不支持无符号整数,作为一名C程序员怎么解?

题主没有理解J***a的设计意图。

java语言运算符是什么-java语言的运算符有哪些
(图片来源网络,侵删)

J***a的主要设计目标之一是使代码在语言层面尽量减少隐患,规避业界已知的常见问题。体现在具体设计上,题主提到了两个例子。

第一个,J***a的数据类型中没有无符号整数类型,是为了规避无符号整数类型带来的隐患。即便是C语言,长者常常告诫新学者,尽量别用无符号整数。经过几十年的实用经验,公认的看法是无符号整数类型弊大于利。所以,J***a弃之不用。

java语言运算符是什么-java语言的运算符有哪些
(图片来源网络,侵删)

第二,J***a语言中不见指针。J***a设计师决定将指针“隐藏”起来,不给编程者直接使用。取而代之是用建立了抽象层来间接使用“指针”。J***a的动机是通过“消灭”指针来规避相当数量的常见程序错误和隐患。

既然用J***a,那就用J***a来思维,不能看着碗里,想着锅里。C语言纵有千般好,可你在用J***a了,千万别试图去写C味的J***a代码。


喜欢就点赞。 更多精彩,请关注我

今日头条号/西瓜***/抖音:IT之州

问出这个问题来说明你这个C程序员是不合格的。

你只知道C里有"unsigned"类型,却不知道这种数据的存储方式。

事实上,不论unsigned还是signed,整型数据的存储方式都是完全一样的,都是补码表示法,是不是signed无关,跟±运算也无关。

比如简单一点,一个8位整数,unsigned是0-255,signed是-128~127。两者的存储方式完全相同,±运算也完全相同。区别是你看数据时的理解方式,比如8位全1,unsigned 理解为255(再+1变成0),而signed理解为-1(再+1也是0)。这就是补码表示法的精髓,有无符号无差别,甚至加减法也几乎无差别:补码表示下,减法就是取反+1。你可以在C或j***a代码里验证:a-b,和a+(~b)+1,二者是一样的。

回到题主的问题,当然先要明确程序员需要unsigned类型的原因和用途,不过据我的经验,通常都只是用来计数,也只涉及到加减法和比较(比大小就是减法)。一般来说,直接改成signed就好,加减法照常使用,唯一的,在做比较时,需要稍稍处理一下,比如:

两个整数a,b用int存储(实际是unsigned,可能超2³¹,此时int会理解为负数),两者比大小不要直接if(a<b),要改成:

int c=a-b;

if(c<0)

理解了面向对象,就解了这个问题。你为什么需要一个无符号整数。记录年龄?那应该是个Age对象。计数器?那应该是个Counter对象。。C的无符号整型更多是在内存受限(C诞生的年代背景,以及在嵌入式开发的广泛使用)情况下提供更精细的空间控制。但对于J***a来说这些就没有那么强烈。业务场景不能接受负值应该用封装来解决,数据范围不够换成long就好了。

到此,以上就是小编对于j***a语言运算符是什么的问题就介绍到这了,希望介绍关于j***a语言运算符是什么的2点解答对大家有用。