Java学习过程(二)

版权声明:CSDN著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 https://blog.csdn.net/qq_38647878/article/details/88595248

Java的基础知识学习

数据的转换

隐式转换:系统可以自动接收小数据类型转换大数据类型

§ 赋值时:
	□ byte->short->int->long->float->double
	□ char->int->long->float->double
运算时:
	□ 小于等于int类型的整数进行运算,会自动升级为int再进行运算。
	□ 小于等于long类型整数与long进行运算,会自动升级为long再进行运算
	□ 如果和float运算,升级为float
	□ 如果和double运算,升级为double。
	□ 如果=左边的变量类型小于=右边的类型,要进行强制转换。

强制转化:系统对于范围较大的数据类型转换为小数据类型不能直接接收,需要将其强制转换为所要转的类型

§ 格式:变量 = (指定的类型)数值,指定的类型要与变量类型一致
	□ 例如: int num = 100;
	short num2 = num;	
有上篇文章我们知道short范围为-128~127;按理说是可以存下100的,但由于系统在数据类
型转换时是先转换再存入内存,因此系统在大类型转小类型是并不会知道所转换的数据是否
超出了小类型所能存储的范围,故而直接报错。这时需要我们加入强制转换告诉计算机这个
数可以转换。
short num2 = (short) num;

运算符

  • 赋值运算符:=

    • § 这个比较简单,就是把一个值赋给一个变量,例如:

        int num = 12;
        String str = "hello";
      
  • 算术运算符:+ - * / %(模) ++ –

      § int m = 12;
      § int n = 8;
      § int sum = m + n;
      § int result = m - n;
      § int res = m * n;
      § res = m / n;
      	□ 注意:整数与整数相除,结果取整(抹掉小数部分)
      § 除法里,除数不能为0
      § res = m / 0; --->结果报错
      § int x = 100;
      double b10 = 4;
      b10 = x / b10;   --->结果为小数
      § %用于求余数。
      	□ int a1 = 15;
      	□ int b1 = 4;
      	□ int c = a1 % b1;
      	□ int d = a1 / b1;
      § float e1 = 13.5f;
      float f1 = e1 % b1;   --->结果为1.5
      § 求余数的时候,余数始终与被除数符号一致。
      	□ int x1 = -8;
      	□ int y1 = 5;
      	□ int z1 = x1 % y1;
      § 自增运算符:
      	□ num++;         等价于num = num + 1;
      	□ ++num;       等价于num = num + 1;
      	□ ++在变量前面,先增1,再使用便令。
      	□ ++在变量后面,先使用变量,在增1
      	□ --运算符用法与++类似
    
  • 复合运算符 += -= *= /= %=

     § result += number1;
     	□ 等价于 result  = result + number1;
     § result -= number2;
     	□ 等价于 result = result - number2;
     § result *= number2;
     	□ 等价于 result = result * number2;
     § result /= number1;
     	□ 等价于 result = result / number1;
     § result %= number2;
     	□ 等价于 result = result % number2;
    
  • 关系运算符:> >= < <= == !=

      § 关系运算符的运算结果一定是一个boolean
    
  • 逻辑运算符:&&、|| 、!

      § &&:逻辑与(读and),表示并且,用来连接2个表达式
      	□ &&两侧的表达式都为真,结果才为真
      	□ 注意:如果&&前面的表达式为假,后面的条件就不再执行(这个被称为短路现象)
      § || :逻辑或(读或),表示或者,
      	□ ||左侧或右侧有一个为true结果为true
      	□ 只有在2者都为false时结果才为false
      	□ 如果||左侧的表达式为true,就不再执行右侧条件(同样被称为短路现象)	
      § !:逻辑非,作用就是取反,!右侧是个表达式
      	□ 如果表达式值是true,则结果为false
    
  • 三目运算符 :?:

      § 格式:表达式1?表达式2:表达式3
      § 若表达式1为true则整个表达式结果为表达式2的值
      § 若表达式1为false则整个表达式结果为表达式3的值
      例如:int x=28,y=32;   
      int result=x>y? x*2+1 : x+y;
    
  • 位运算符:& | ~ ^ << >>

      计算机里面存放数据以补码的方式存放	
      位运算符	符号	计算规则(通过补码方式计算,最后结果转为原码)	示例
      按位与		&				有0则为0,同1则为1					3&2=2
      按位或		|				有1则为1,同0则为0					3|2=3
      按位非		~				按位取反,公式:~x=-(x+1)			~3=-4
      按位异或	^			相同为0,相异为一						3^2=1
      左移		<<			整体往左高位移动,左移n位相当于乘2*n次方	2<<1=4
      右移		>>			整体往左低位移动,右移n位相当于除2*n次方	2>>1=1
    

    注:关于位运算符涉及的进制(原反补码)详解请看下方博主的文章。

    原码, 反码, 补码 详解
    作者:张子秋
    出处:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

猜你喜欢

转载自blog.csdn.net/qq_38647878/article/details/88595248