Java基础学习第二天——(变量和运算符补充)

昨天文章中的字符型char,众所周知数和数能相加减,而我下方的代码段中给字符'c'加上了1,并没有报错,这就是数据类型中的转换,而在数据类型中只有布尔类型不能转换;c可以加1的原因是计算机把c用ASKII码转换为了数字97,c+1=98;(ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。)在(c+1)的前面加(char),这样的形式为强制类型转换,(c+1)=98,我们查ASKII码中98表示b,运行后结果为b,验证正确。

第四行代码中的强制类型转换为将整型数字129强制转换为比特型,这里就有个问题, 129转换为比特型会出现负数,数据会出现溢出。

		char c='a';
		System.out.println(c+1);		//ASKII码转换为数字,再加1

        System.out.println((char)(c+1));

    	System.out.println((byte)129);  //-127

数据类型转换:

自动数据类型(隐式数据类型):小空间自动转换为大空间,反之不行

强制数据类型(显示数据类型):强制转换就是用圆括号括起你要转换成的目的数据类型

以下代码段,e是比特型4个字节,在写e=d时,系统会体现错误,在其前加上强制类型转换,可以通过编译。把e赋值给1,可直接输出1。

		byte e;
		int d=1;   //变量
		e=(byte)d;
		e=1;    //值
		System.out.println(e);

运算符补充:

自增、自减 :

++a:a在参与其他操作前先将自己加1;
a++:先用原来的值参与其他操作后,再将自己加1;自减与其相同。

口诀:++在前,先运算后赋值;++在后,先赋值后运算。

		int m=8;
		m=m++;
		System.out.println(m);
		//8
		int n=8;
		n=++n;
		System.out.println(n);
		//9

		int a=6;
		for(int i=0;i<100;i++) {
			a=a++;
		}    //a依旧得6
		
		int a=6;
		int b=++a+ ++a;
		System.out.println(b);   //得15

		int o=6;
		int p=o++ + ++o;
		System.out.println(p);  //得14

 练习例子1:

		int o=6;
		int p=++o+--o/2%--o;
		System.out.println(p);//得10

 短位运算:

		int a=1;
		boolean b=a++<0 && a--<2;
		System.out.println(b);
		System.out.println(a);  //a此时为2,因为与运算左边为假(左边结果已定)a只运算到a++

		int a=1;
		boolean b=a++>0 || a--<2;
		System.out.println(b);   //true
		System.out.println(a);  //a此时为2,或运算有一个为真即为真

 练习例子2:

		int a=2;
		a%=3*--a;
		a=a%(3*--a);
		System.out.println(a);  //得2

运算符优先级:

运算符

优先级

      ++、--             高
            ! 
      *、/、% 
           +、- 
      >、>=、<、<= 
          ==、!= 
            & 
             | 
            && 
             || 
=、+=、-=、*=、/=                    低

 

一目   >    二目   >    三目。

 

如何用程序证明浮点数为什么不精确?

我们先看下面对代码段,发现a-b在我们正常算数中得数为55.233,而计算机算出为55.233000000000004,为什么会后面多出一个4呢

        double a=155.333;
		double b=100.10;
		//55.233   PC:55.233000000000004
		System.out.println(a-b);
		
	

末尾问题待解决。

 202103031704-------------------------(未完待续)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值