Java基础(变量,标识符,类型转换,赋值运算符,位运算符,进制转换)

变量

1.分类:
基本数据类型

整型:short byte int long
浮点型:float double
字符型:char
布尔型:boolean

引用数据类型

类 数组 接口 枚举 注解

2.注意事项:
a.变量不初始化(第一次赋值)不能直接使用
b.在同一个作用域中不能连续定义相同名字的变量

标识符

1.概述:给类,方法,变量取的名字
2.注意:
硬性要求(必须遵守):
a.标识符可以包含’英文字母’,‘数字’,“$和_”
b.标识符不能以数字开头 int i1 = 100(正确) int 1i = 100(错误)
c.标识符不能是关键字 int publicstatic = 10
软性建议(建议遵守):
a.给类取名字:遵循大驼峰式 -> 每个单词首字母大写
b.给方法和变量取名字:遵循小驼峰式 -> 从第二个单词开始往后首字母大写

类型转换

1.在等号两边数据类型不一致时发生数据类型转换
2.分类:
a.自动类型转换
大 = 小(取值范围小的赋值给取值范围大的数据类型)
b.强制类型转换
小 = 大
3.自动类型转换
a.取值范围大的数据类型 变量名 = 取值范围小的数据类型 -> 小的数据类型自动提升为大的数据类型
b.小类型遇到了大类型做运算 -> 小自动转大的类型

	    int num3 = 10;
		double num4 = 2.5;
	/*
	  double  = int+double
	  
	  double = double+double
	  
	  小类型和大类型做运算,小类型会自动提升为大类型
	*/
	double sum = num3+num4;
	System.out.println(sum);)

4.强制类型转换

​ 取值范围小的数据类型 变量名 = 取值范围大的数据类型 -> 报错

​ 怎么进行强转:

​ 取值范围小的数据类型 变量名 = (取值范围小的数据类型)取值范围大的数据类型

5.强转注意事项

​ a.不要故意写成强转,除非没办法

​ b.如果随意强转会容易出现:精度损失 数据溢出

​ c.byte,short 如果等号右边是常量,如果不超出范围,不会报错,jvm自动转型

​ byte,short 如果等号右边有变量参与运算,会自动提升为int,结果重新赋值给byte short变量,需要手动强转

public class Demo04DataType{
	public static void main(String[] args){
		byte num1 = 100;//等号右边是一个值,不超出范围,不会报错,jvm自动强转
		System.out.println(num1);
		
		byte num2 = (byte)200;//如果超出范围,需要我们自己强转
		System.out.println(num2);
		
		byte num3 = 10+1;
		System.out.println(num3);
		
		byte num4 = 1;
		
		/*
		  byte = byte+int
		  byte = int+int -> 需要手动转
		*/
		byte num5 = (byte)(num4+1);
		System.out.println(num5);
		
		System.out.println("=====================");
		
		char num6 = '0';
		System.out.println(num6+0);
		
		System.out.println('中'+0);//20013
		
		int num7 = '国';
		System.out.println(num7);
	}
}

​ d.char类型参与运算,会自动提升为int型,如果char类型提升为int型之后,会自动去ASCII码表查询字符对应的int值
如果ASCII码表中没有,会去unicode码表去查(万国码)

赋值运算符

+= -= *= /= %=
    针对于复合赋值运算符:
  byte short 参与运算,jvm会自动强转
        byte b = 10;
		//b = b+1;
		b+=1;//b = b+1
		System.out.println(b);

位运算符

在这里插入图片描述

1代表true 0代表false

我们要知道计算机在存储数据的时候都是存储的数据的补码,而计算的也是数据的补码

1.正数二进制最高位为0;负数二进制最高位是1

2.正数的原码,反码,补码一致

如:5的源码,反码,补码为:

​ 0000 0000 0000 0000 0000 0000 0000 0101->二进制最高位是0,因为是正数

3.负数的话原码,反码,补码就不一样了

反码是原码的基础上最高位不变,其他的0和1互变

补码是在反码的基础上+1

如:-9
原码:1000 0000 0000 0000 0000 0000 0000 1001

​ 反码:1111 1111 1111 1111 1111 1111 1111 0110

​ 补码:1111 1111 1111 1111 1111 1111 1111 0111

(1)左移:<<

运算规则:左移几位就相当于乘以2的几次方

​ **注意:**当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位

​ 2<<2 等于8

​ 相当于:2*(2的2次方)

在这里插入图片描述

​ -2<<2 等于-8

​ 相当于:-2*(2的2次方)

在这里插入图片描述

(2)右移:>>

快速运算:类似于除以2的n次,如果不能整除,向下取整

9>>2 等于 2

相当于:9除以(2的2次方)

在这里插入图片描述

-9>>2 等于-3

相当于:-9除以(2的2次方)

在这里插入图片描述

(3)无符号右移:>>>

运算规则:往右移动后,左边空出来的位直接补0,不管最高位是0还是1空出来的都拿0补

正数:和右移一样

9>>>2 等于 2

相当于:9除以(2的2次方)

负数:右边移出去几位,左边补几个0,结果变为正数

-9>>>2

结果为:1073741821

8>>>32位->相当于没有移动还是8

8>>>34位->相当于移动2位

(4)按位与:&

将0看成为false 将1看成true

运算规则:对应位都是1才为1,相当于符号左右两边都为true,结果才为true

​ 1 & 1 结果为1 相当于 true&true

​ 1 & 0 结果为0

​ 0 & 1 结果为0

​ 0 & 0 结果为0

比如: 5&3 结果为1

在这里插入图片描述

(5)按位或:|

运算规则:对应位只要有1即为1,相当于符号前后只要有一个为true,结果就是true

​ 1 | 1 结果为1

​ 1 | 0 结果为1

​ 0 | 1 结果为1

​ 0 | 0 结果为0

比如: 5|3 结果为:7

在这里插入图片描述

(6)按位异或:^

​ 运算规则:对应位一样的为0,不一样的为1

​ 1 ^ 1 结果为0 false

​ 1 ^ 0 结果为1 true

​ 0 ^ 1 结果为1 true

​ 0 ^ 0 结果为0 false

比如: 5^3 结果为6

在这里插入图片描述

(7)按位取反

运算规则:~0就是1

​ ~1就是0

~10 -> 结果为-11

在这里插入图片描述

进制的转换

十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012a或A
11101113b或B
12110014c或C
13110115d或D
14111016e或E
15111117f或F
16100002010

十进制转成二进制

辗转相除法-> 循环除以2,取余数

在这里插入图片描述

二进制转成十进制

8421规则

在这里插入图片描述

二进制转成八进制

将二进制分开(3位为一组)

在这里插入图片描述

二进制转成十六进制

将二进制分开(4位为一组)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值