第二天
重要(一个byte由八个位组成,如00000000,其中,前7位表示数值,第8位是符号位(0为正,1为负)。这样+1就是00000001,-1就是10000001。最大的正数就是0 1111111,即2^0+2^1+……+2^6=127;最小的负数,同理,为1 1111111,即-127。
到这里应该是许多人不明白的地方,为什么负数会到-128。
上述的描述会出现一个问题,就是0,会出现一个+0和一个-0。印度人他们规定-0为-128,这样就与计算机的补码(程序都是按补码运行的)完美的结合在一起。
以此类推,int,short,long都可以推出他们的取值范围。)
自动类型提升顺序
--小容量的数据类型可以赋值给大容量的数据类型
//基本类型提升的顺序1 :
byte-->short-->int-->long-->float-->double
//基本类型提升的顺序2 :
char-->int-->long-->float-->double
强制类型转换
语法格式:
类型1 变量a = (类型1) 变量b
类型1 变量a = (类型1) (表达式)
与大类型运算时 结果要定义为大类型
笔试题之short的疑惑
public class ShortDemo{
public static void main(String[] ags)
{
short s1 = 1;
//等价于s1 = (short)((int)s1+1)
s1 += 1;
//先判断赋值符两端的类型,如果为同一类型,则编译通过,反之,则看右端表达式的类型是否能通过赋值转换被转换为变量的类型(java语言规范5.2)。
short s2 = s1;
//等价于s2 = (int)s2+1,即s2+1结果为int型,int型(大)转为short(小)必须经过显示类型转换(cast)
s2 = s2 + 1;//error
//正确
s2 = (short)(s2+1);
//同理等价于s3 = (int)s1 + (int)s2;
short s3 = s1 + s2;//error
//正确
s3 = (short)(s1+s2);
System.out.println(s3);
* 总结:对于short,byte,char 比int 字节数小的变量类型来说,运算结果会自动转换为int类型。
*/
}
}
运算符的使用
- -算术运算符 + - * / %
+的作用:实现加法运算,实现字符串的拼接
扩展后的赋值运算符
扩展后的赋值运算符中包含强制类型转换操作
item += 3;不完全等于item = item +3;
而是等于item = (item的类型)(item +3);
-位运算符
--左移 双目运算符 案例 : 8向左移动一位,低位补0
--有符号右移 高位补符号位
--无符号右移 高位补0
比较运算符(短路和非短路的概念)
> < >= <= == !=
逻辑运算符
-短路与 如果前面的表达式为假,则后面不需要在判断,直接短路
--短路或 前面为真,则直接短路,不执行后面的逻辑判断
三目运算符(三个操作元素,相当于判断语句)
// (逻辑表达式)?数值1:数值2
// 如果表达式为真 则赋值数值1,为假则赋值数值2
自增自减操作
如果自增或自减符号和其他运算符一起操作时,会有顺序的先后:
++在变量的后面,所以先进行算术运算(包括赋值运算)再进行自增操作
++在变量的前面,所以先进行进行自增操作再算术运算(包括赋值运算)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结