Java中的变量与运算符

Java中的变量其实与C语言中的变量还是有些许差别的;原因就是Java是静态强类型语言,而C语言为静态弱类型语言。

强/弱类型语言的区别主要在于类型之间的转换上。强类型的语言中不同类型之间的转换限制的很严格,而弱类型的语言则不严格。

如基本类型之间的区别:

int / double 之间的转换问题

    int a = 10;
	int c = 15;
	double b = 20.0;

	a = b;
	b = c;

	printf("%d\n",a);
	printf("%d\n",b);

	system("pause");
	return 0;

上述是C语言的代码,其中包括了int向double赋值与double向Int赋值;其中double向int赋值属于范围大的向范围小的赋值,这时候就存在因为存储大小不同(除了个别机器int存在16位情况,大部分是32位的),其中int大部分是4字节,double是8字节;大的转换成小的就存在截断的问题,即大的高范围高位部分,小范围没有该范围,就无法表示出来,这时候C语言就会截断并发出警告,注意这里是警告而不是异常或者直接出错,结果是截断后的结果。

而Java就不会出现上面的截断问题,Java一旦发现,高范围的赋值给低范围变量的情况出现就会直接报出异常,而不是如C语言继续运行。

        int a = 10;
        double b = 20.0;
        
        a = b;
        System.out.println(a);


异常部分:
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
        Type mismatch: cannot convert from double to int
        

其中低范围向高范围赋值不存在异常问题。

 

Java的变量:

Java的数据类型基本分为:基本数据类型和引用数据类型

其中数据类型包括:数值型、字符型、布尔型

                        数值型可以分为:整形和浮点型

                                    整形包含:byte、short、int、long

                                    浮点型包含:float、double

                       字符型:char(默认值为'\u0000') 其中\u0000 表示的是unicode码表中的nul

                       布尔型:boolean(默认值为false)

引用数据类型包括:数组、类、接口等(默认值为null)

变量部分主要需要注意的就是隐式类型转换与类型提升的问题;

隐式类型转换:

    就是在基本的同一个小框架下,如数值型之间不同范围的类型之间的隐式转换,这里的转换基本是向着范围更大的方向发展;如double 与 int  两个类型相加其结果暗中就变成了double类型,如果这个时候结果输出给了一个int类型那么就会出现类型错误的问题。

        int a = 10;
        double b = 20.0;
        
        int c = a + b;
        System.out.println(c);



异常:
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
        Type mismatch: cannot convert from double to int

类型提升:

   类型提升问题只存在于小于int范围的数值型类型,即byte、short存在该种情况

  这时候如果两个byte类型或者两个short类型相加减乘除的时候,最终结果就会变成int的类型,这就是类型提升;因为数据的取大部分都是以4个字节的方式进行的。

 

Java的运算符

运算符包含:算术运算符、逻辑运算符、关系运算符、位运算符、条件运算符、移位运算符等

算术运算符:基本四则运算、增量赋值运算符、自增/自减运算符

     基本四则运算包含:+ - * / %         其中%与C语言略微不同,其它相同;Java中的%,不仅可以对int求模也可以对double求模运算。

     逻辑运算符:&& ||  ! 这里的逻辑运算与C语言的逻辑运算不同;Java中的逻辑运算操作数和返回值类型都是boolean类型的。相同点在于&& || 具有短路求值的属性。

     关系运算符:==    !=    <  >   <=    >=   操作符与C语言类似,而返回值类型就是boolean类型

      位运算符:&   |     ~    ^    位运算是按照二进制位进行的;这里需要注意的是按位与 与 按位或 ,其可以视作按位操作也可以视作逻辑运算,区别在于他们的操作数的类型;如果操作数的类型是Boolean的类型,那么可以看作是逻辑与 或者  逻辑或运算,不过此时不具有短路求值的属性。当然,如果操作数是整形,那么就看作是按位运算,这个时候按位运算是按照二进制位进行的。

     条件运算符:条件运算符只有一个三目运算符;  表达式1  ?  表达式2  : 表达式3

     移位运算符:左移操作 与  右移操作

           左移操作  << : 做左侧位不要,最右侧补0;即 最高为扔掉,最低为补0

           右移操作分为   逻辑右移(无符号右移) 与 算术右移(右移)

                     逻辑右移  >>>:最右侧位不要,做左侧补0

                     算术右移  >>:  最右侧位不要,最左侧补符号位(正数补0,负数补1)

     

     

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值