首页 > 编程语言 >Java基础(二)

Java基础(二)

时间:2024-07-12 20:57:34浏览次数:15  
标签:Java String StringBuilder 31 基础 字符串 231 BigDecimal

一、BigDecimal 等值比较

  • compareTo()
    • 忽略精度
  • equals()
    • 比较值和精度(1.0,1.00比较结果为false)
  • ==
    • BigDecimal是对象,不能用==比较值
  • BigDecimal(Double)创建是损失精度的
  • BigDecimal(String)创建是精确的

二、对负数取绝对值不一定是正数

  • Math.abs()
    • int: − 2 31 —— 2 31 − 1 -2^{31}——2^{31} - 1 −231——231−1
    • − 2 31 -2^{31} −231取负数越上界,取补码还是负数
    • 所以在取绝对值之前int转为long即可

三、String、StringBuilder、StringBuffer

  • String
    • 不可变(String类被声明为final,不可被继承,方法无法被覆盖。且其中没有提供修改字符串的方法,要“修改”则创建新的对象)
    • “+” 拼接字符串实际是语法糖。将String转为了StringBuilder然后append
    • 不建议在for循环中用“+”拼接字符串(每次都实际上新建了对象)
  • StringBuilder
    • 可变
    • 非线程安全
    • 其中的char[] 不是final,所以可以修改
    • 循环体内用StringBuilder。append扩展字符串
  • StringBuffer
    • 可变
    • 线程安全(append方法用synchronized声明)

String a = “ab”; String b = “a” + “b”; a == b ?

  • "=="比较字符串对象的引用地址是否相同
  • a == b为true(分别都是字面量【固定值】)

String长度

  • 编译期:counstant_utf8_info结构来表示字符串常量的值:65535(即在使用String a = xxx时会有限制)
  • 运行期 :String的length是int类型, 2 31 − 1 2^{31} - 1 231−1

语法糖

  • java虚拟机实际上不支持,编译阶段会还原为简单写法
  • switch支持String与枚举
    • switch “hello”实际上是switch 哈希值,然后用equals进行检查(万一哈希碰撞)
  • 泛型
    • 如:Map<String, String> map会进行类型擦除:Map map = new Hashmap()
  • 条件编译
  • 断言
    • assert,底层是if,true则继续执行,false则抛出asserterror打断程序
  • 可变参数
    • public static void xxx(String… strs){ }
    • 会建立一个数组,长度为调用该方法时传递的实参个数,然后把这个数组作为参数传到被调用函数里
  • 自动拆、装箱
    • 之前提过,响应数据类型包装类的ValueOf()
  • 枚举
    • enum,final修饰,不可被继承
  • 内部类
    • 嵌套类,内部类为外部类的一个成员class里套一个class
  • 增强for循环
    • for-each:for循环 +迭代器
    • for(String s : strs)
  • try-with-resources
    • try-catch-finally(里面关闭资源)
    • 如今变为try-catch

四、RPC接口返回的数据类型

  • 应该使用包装类而不是基本数据类型(如果接口异常可能返回默认值,float是0.0,Float是null。看到null知道明确出错,减少歧义)
  • 定义字段表示成功建议使用:Boolean success(首先作为接口的返回对象参数,不应该有不确定的值,Boolean默认值为null,boolean是false【会有歧义】)
  • POJO类中任何布尔变量都不要加is(success而不是issuccess),否则部分框架解析会引起序列化错误【boolean isSuccess是属性,有方法为isSuccess(),RPC框架在反向解析时,会认为属性名称是success,导致属性获取失败,抛出异常】

五、常见字符编码

  • ASCII:英文字符
  • Unicode:UTF-8之类
    • Unicode规定了编码,但没规定存储
    • utf-8:使用1-4个字节为每个字符编码
  • GBK:中文编码

标签:Java,String,StringBuilder,31,基础,字符串,231,BigDecimal
From: https://blog.csdn.net/qq_53083744/article/details/140336093

相关文章

  • Java-笔试强训(1~12)
    大家好,我是普通一本的在校大学生一枚,目前在学习java。之前也学了一段时间,本人现在已经大二结束了,开学就大三了,时间过的真的很快。我会利用好这个暑假,来复习之前学过的内容,并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区进行讨论!!!......
  • java日期格式化
    java日期格式化1.一代日期类Date结合SimpleDateFormat格式化(不推荐)/***@authorshui*@description一代日期类Date结合SimpleDateFormat格式化(SimpleDateFormat只能格式化Date类型)*@created2024/7/11*/publicclassSimpleDateFormatExample{publicstati......
  • Docker 使用基础(3)—容器
                         ......
  • 计算机Java项目|基于SpringBoot的学生选课系统的设计与实现
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......
  • 计算机Java项目|基于SpringBoot的企业人事管理系统
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......
  • 0基础_永磁同步电机FOC(矢量控制)实践快速入门(一)——通过DSP28335配置SPI与AD2S1210通信
    AD2S1210.cADSP28335配置SPA模块与AD2S1210通信读取旋转变压器反馈的位置、速度信息欢迎大家进群领取电机控制,嵌入式学习资料!程序文件也在群里哦目录文章目录前言一、位置角是什么,为什么要获取位置角?二、如何获取位置角?三、AD2S1210介绍四、如何通过AD2S1210进行旋......
  • 动态条件实现java
    提交页面设计 json数据格式[{"name":"规则1","action":{"with":[{"type":"SHOW","targets":[......
  • Java三剑客:封装、继承、多态的魔法世界
    第一章:封装的艺术——保护你的宝藏案例分析:银行账户系统想象一下,你正在构建一个银行账户系统。每个账户都有一个余额,这个余额需要受到严格的保护,不能被随意修改。我们可以通过封装来实现这一目标。示例代码:publicclassBankAccount{privatedoublebalance;//......
  • JAVA利用HttpClient进行POST请求(HTTPS)
    finalHttpClientUtilhttpClientUtil=newHttpClientUtil();finalMap<String,String>map=Maps.newHashMap();map.put("username",workNo);map.put("password",passwd);finalStringresultStr......
  • java将小写金额转换为大写的工具类
    摘自:http://www.cnblogs.com/niuyaoBolg/p/5654113.htmlpublicclassTool{privatestaticfinalStringUNIT="万千佰拾亿千佰拾万千佰拾元角分";privatestaticfinalStringDIGIT="零壹贰叁肆伍陆柒捌玖";privatestaticfinaldoub......