Java 语法踩坑集合

类型转换

变量相加,首先提升类型,再做操作。
常量相加,它先做操作,然后判断结果是否在左边的范围内容,如果在就不报错。如果不在,报错。

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		byte b1=3,b2=4,b;
		// b = b1+b2; // 右边类型自动提升
		b = (byte)(b1+b2); // 显示类型转换
		b = 3+4;
	}

    (1)计算机中数据的存储和运算都是采用补码进行的。
    (2)数据的有符号表示法
        用0表示正号,1表示负号。
        A:原码
            正数:正常的二进制
            负数:符号为为1的二进制
        B:反码
            正数:和原码相同
            负数:和原码的区别是,符号位不变,数值位取反。1变0,0变1
        C:补码
            正数:和原码相同
            负数:反码+1

(3)补充:float浮点数在计算机中的表示
            符号位        指数位        底数位
            S        E        M

public static void main(String[] args) {
		// byte b = 130;

		// 解决方案
		// 方案1
		// int a  = 130;
	
		// 方案2
		byte b = (byte) 130;
		System.out.println(b); // -126
	}
/*
	十进制:130

	A:第一步,先把十进制转换为二进制
		二进制:00000000 00000000 00000000 10000010
		由于此二进制是一个正数,所以,补码也是00000000 00000000 00000000 10000010。

	B:做强制类型转换
		二进制:00000000 00000000 00000000 10000010
		截取后就变成了:10000010

	C:操作后的数据是补码,你看到的是原码
				符号位		数值位
		补码:	1			00000010
		反码:	1			00000001
		原码:	1			11111110
*/

算术运算符

    // %的最终结果和第一个数据的符号相关。
	// 用%,如果余数为0,说明整除。
	System.out.println(5%3); //2
	System.out.println(5%-3);//2
	System.out.println(-5%3);//-2
	System.out.println(-5%3);//-2

++,--:自增自减运算符。
A:单独使用
    放在操作数据的前后,效果一样。
B:参与操作使用
    放在操作数前面,先自增或者自减,然后再参与运算
    放在操作数后面,先参与运算,然后再自增或者自减

int a = 10;
int b = a++;
System.out.println(a);//11
System.out.println(b);//10
System.out.println("------------");

int c = 10;
int d = ++c;
System.out.println(c);//11
System.out.println(d);//11

System.out.println("------------");
int e = 10;
//e++;
++e;
System.out.println(e); //11

int i = 1;
System.out.println(i++ + ++i + i++ + ++i);//1+3+3+5

赋值运算符

// short s = 1;
// s = s + 1; 
// 有问题,可能损失精度

short s = 1;
s += 1; //s = s + 1;
// 这个是没有问题的。
// 因为这个式子等价于:
// s = (s的数据类型)(s + 1);

关系运算符与逻辑运算符

&&和&的区别? 前者为关系运算符,有短路效果,只要左边是false,右边不执行。而后者为逻辑运算符,全部执行。
||和|的区别? 前者为关系运算符,有短路效果,只要左边是true,右边不执行。而后者为逻辑运算符,全部执行。

位运算符

A:计算出3,4的二进制
	3的二进制:00000000 00000000 00000000 00000011
	4的二进制:00000000 00000000 00000000 00000100
B:位&运算	有0则0
	00000000 00000000 00000000 00000011
   &00000000 00000000 00000000 00000100
   ------------------------------------
	00000000 00000000 00000000 00000000
C:位|运算	有1则1
	00000000 00000000 00000000 00000011
   &00000000 00000000 00000000 00000100
   ------------------------------------
	00000000 00000000 00000000 00000111
D:位^运算	相同则0,不同则1
	00000000 00000000 00000000 00000011
   &00000000 00000000 00000000 00000100
   ------------------------------------
	00000000 00000000 00000000 00000111
E:位~运算 把数据每个位都按位取反
	00000000 00000000 00000000 00000011
   ~11111111 11111111 11111111 11111100
 反:11111111 11111111 11111111 11111011
 原:10000000 00000000 00000000 00000100
F:<<
	4的二进制:
		00000000 00000000 00000000 00000100
	(00)000000 00000000 00000000 0000010000

G:>>>
	原:10000000 00000000 00000000 00100000
	反:11111111 11111111 11111111 11011111
	补:11111111 11111111 11111111 11100000

	>>>
		11111111 11111111 11111111 11100000
		0011111111 11111111 11111111 111000(00)

参考或转载

https://github.com/DuGuQiuBai/Java

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值