Java基础2

数据类型转换

自动类型转换:

将一个小的数据类型,放入到大的数据类型空间中。

强制类型转换:

将一个大的数据类型变量放入到了一个小的数据类型空间中

/*
语法:
小数据类型 变量 = (小数据类型)大数据类型变量
*/

计算机识别产生的是补码

源码 反码 补码:正数不变

负数源码 = 正数 高位变1

反码 = 负数源码高位不变 其余位按位取反

补码 = 反码 + 1

/*
0000 0000 0000 0000 0000 0000 1001 0110
1001 0110(补码)
1001 0101(反码)
1110 1010(源码)==》 0110 1010(106)
*/

170

1010 1010(补码)

1010 1001(反码)

1101 0110(源码)

​ 64 + 16 + 4 + 2 = -86

int的是32位bit

byte是8位bit

把int的数据变量赋值给byte的数据变量,即只用把int后面的8位bit放进byte里面,但是byte的高位为符号位,所以强制转换就换产生数值的变换。

转换规则:

范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int 。

byteshortchar‐‐>int‐‐>long‐‐>float‐‐>double

在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。char类型提升为了int类型。char类型内存2个字节,int类型内存4个字节。

如果A与a的转换,就直接在其值上面加减32,并强制转换为char

字符数值
048
957
A65
Z90
a97
z122

运算符

自增自减运算符

前++/–,先自增

后++/–,先赋值后自增

混合运算

z=10

(z++)+10+(++z)+1········10+10+12+1

加号

当左右两边变量或者值为数字类型是是加法

当左右两边变量或者任意一个是字符串时是连接符

程序流程控制大体上是从上往下

===(JavaScript中比较类型和值都相等才返回true)

逻辑运算符

注意:逻辑与(&&)和逻辑或(||)有短路操作(前面的表达式能决定整个表达式的结果,后面的表达式将不执行)

& (|)做逻辑运算时,没有短路操作;

位运算符

(二进制补码运算)

& (与):有0则0

| (或):有1则1

^ (异或):有同则0,不同则1
:按位取反

byte当中高位为1则是负数,即要按照负数的补码推反码再推源码的出的才是结果。

一个数异或另外一个数两次会得到该数本身

位运算是直接对二进制补码进行运算。(了解)
结论:
			&:有0则0
			|:有1则1
			^:相同则0,不同则1
			~:按位取反

        <<:左移			空位补0,被移除的高位丢弃。
			注:当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
			
		>>:右移			被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1空位1(高位为1则补成1)
		
		>>>:无符号右移	被移位二进制最高位无论是0或者是1,空缺位都用0补。

方法入门

作用:

将业务或者逻辑抽取到一个花括号内,形成单独的功能。以后要使用的时候直接调用即可,这样就解决了代码的重复编写过程。

访问修饰符 [状态修饰符] 有无返回值 方法名称(方法参数列表){

}

方法定义注意事项:

  • 方法必须定义在一类中方法外

  • 方法不能定义在另一个方法的里面

扩展

+=有强制转换的特点。

常量与变量的运算

 public static void main(String[] args){
        byte b1=1;
        byte b2=2;
        byte b3=1 + 2;
        byte b4=b1 + b2;
        System.out.println(b3);
        System.out.println(b4);
    }

分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。
反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值