Java后端
·04-20 17:04Day 1
✅ 今天做了:
1.回顾cmd基本的dos命令:dir/cd/md/rd/del/ren/java/javac/java/cls/echo
——————————————————————
2.java注释://单行注释、/*多行注释*/
文档注释:/**@return long 注册成功返回用户唯一ID,注册失败返回-1*/
①类接口,标注核心功能业务场景设计目标
②方法,标注核心功能参数含义约束规则返回值说明异常抛出说明
javadoc -d doc UserService.java 生成文档
——————————————————————————
3.java程序最小单元:变量 = 数据类型+变量名+变量值
数据类型:约束数据种类,分配内存大小
变量名:映射内存实际物理地址的代号
变量值:存储在里面的具体数据
————————————————————————————
4.数据类型→基本数据类型+引用数据类型
①基本数据类型:整型byte(1)/short(2)/int(4)/long(8);整型赋值常量默认为int,long类赋值需要声明L
浮点型:float(4)/double(8);浮点赋值常量默认double,float赋值需要声明F
字符型:char(2):单个英文字母占1,单个汉字占2
布尔型:boolean(1):true or false
包装类:基本数据类型的实例化工具
②引用数据类型:类、接口、数组……
————————————————————————
5.浮点数比较常见误区:2.7==8.1/3(?)
结论:因为十进制转换二进制问题,小数转为二进制的无限循环小数后被有限的物理空间截断为近似值
2.7实际存储数值为2.70000000000000018...;8.1/3实际存储数值为2.6999999999999997...
float和double对于小数的存储是近似存储,不能用于要求精度的场景,两小数比较相加等
解决方案:创建BigDecimal对象,传入字符串形式小数,再进行处理。
——————————————————————————
6.数据类型转换:自动转换/强制转换/String转基本数据类型
6.1自动转换,条件:小转大(小杯的水倒入大水杯)byte<short<char<int<long<float<double
①赋值时的自动转换:int score = 95; double newScore = score;
②运算时的自动转换(坑点):byte、short、char的混合运算会先全部转成int再运算,最后结果只能用int接收
③传参时的自动转换:类似①,满足方法参数是大范围,传入值是小范围
易发生问题的自动转换:
①int转float/long转double时,可能会丢失精度
虽然float范围比int大,但float的有效位数只有 6~7 位,当int数值超过有效位数时,会丢失精度
int bigInt = 2147483647; // int的最大值
float f = bigInt;
System.out.println(f); // 输出2.14748365E9(和原int值2147483647不一致,精度损失)
同理,long的大数值转double也可能丢失精度。
②byte/short不能自动转char(符号问题)
byte/short是有符号类型(范围包含负数),char是无符号类型(范围 0~65535),所以不能自动转换:
byte b = 97;
// char c = b; // 报错!byte是有符号,不能自动转无符号的char
char c = (char)b; // 必须强制转换,此时c='a'(正确)
③布尔类型不参与自动类型转换
6.2强制转换,大转小(大杯的水倒入小杯),不安全有可能数据溢出导致精度损失,需要手动设置显式声明
格式:(目标数据类型) 待转换的变量/数值;double num = 5.5; int numInt = (int) num;
强制转换的几个雷区:
①数值溢出:
例如:Java 整数采用 “补码” 存储,int是 32 位,最大值 + 1 后二进制位全部翻转,最高位(符号位)变成 1,结果变成int最小值(循环溢出)。
安全方案:转换前先判断范围,避免溢出
②浮点→整型的强制转换只会直接丢弃小数部分,不会做任何四舍五入处理。
安全方案:先用Math.round()实现四舍五入,再强制转换
③char 与 byte/short 的符号问题
char是无符号类型(0~65535),byte是有符号类型(-128~127),强制转换时保留二进制位,超出范围后符号位变为 1,结果成负数
安全方案:获取真实Unicode值再判断是否超出强转的类型范围
④byte/short 运算后强制转换的顺序问题
byte a = 10; byte b = 20;
byte c = (byte) a + b; // 报错:不兼容的类型
byte/short运算时会先自动转int,(byte) a只是把 a 转成 byte,但 b 还是会转 int,最终结果是 int,无法直接赋值给 byte。
解决方案:byte c = (byte) (a + b);
⑤浮点数强制转换,本身浮点存储就是近似存储,强制转换只会进一步放大精度损失
安全方案:用BigDecimal避免精度丢失,绝对不能用浮点强制转换
6.3基本数据类型与 String 的相互转换
基本数据类型→String:①空字符串 + " " ②String.valueOf()
推荐使用②,可以避免空指针问题
String→基本数据类型
使用其对应包装类的parseXxx()方法(返回基本类型),或valueOf()方法(返回包装类,推荐使用,可兼容 null)
注意事项:
①优先用String.valueOf()转 String:语义清晰,避免拼接空字符串的 “魔法操作”,团队协作更易理解;
②转换数值类型必加异常处理:用try-catch捕获NumberFormatException,并设置兜底值,避免程序崩溃;
③转换前先校验空值 / 格式:先判断String是否为 null / 空,再转换,减少异常触发;
④boolean 转换适配业务场景:不要依赖Boolean.parseBoolean()的默认规则,根据业务(比如 1 = 真 / 0 = 假)自定义判断;
⑤包装类 vs 基本类型:常用包装类(Integer/Double)接收转换结果,方便处理 null 值(比如数据库字段为 null 的场景)。
——————————————————————————————————————————————————————
7.变量名称:标识符、关键字、保留字
7.1标识符:程序员给变量起的名称
需要按照命名规则,遵守命名规范
命名规则:1.由26字母,0-9,_或$组成 2.不能数字开头 3.不能使用关键字和保留字 4.严格区分大小写 5.不能有空格
命名规范:1.包名全小写 2.类、接口首字母大写 3.变量、方法名首字母小写(驼峰命名法) 4.常量全大写
7.2关键字:在java中有特定用途的标识符,全小写
7.3保留字:在当前版本未作为关键字使用但后续版本有可能变成关键字
📚 今日总结:dos命令、java注释、java变量三要素、数据类型、数据类型转换、变量名称
2
1
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
