博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5,表达式中的陷阱
阅读量:7009 次
发布时间:2019-06-28

本文共 939 字,大约阅读时间需要 3 分钟。

hot3.png

关于字符串的陷阱;

第一次使用某一个字符串直接量得时候,jvm会将它放入字符串池中进行缓存;

关于内存泄漏例子:

String str=“hello”

String str=str+“java”

由于String里包含得字符序列是不能被改变的。 所以第二个str是指向另外一个字符串对象,此时hello字符串就会一次在内存中,垃圾回收机制不会回收它,此时就会内存泄漏。

如果要使用String可变字符串一般使用StringBuffer和StringBuilder,但是StringBuffer中绝大部分方法都使用了synchronized修饰符,以保证线程安全,但是它会降低该方法得执行效率。在没有多线程的环境下所以尽量使用StringBuilder类来表示字符串。

表达式类型的自动提升规则;

1,所有byte,short。和char类型都将被提升为int型。

char(byte,short)_int_long_float_double

2,整个算术表达式的数据类型自动提升与表达式最高级操作数同样得类型。

short sValue=5;//定义了一个short类型变量,sValue将自动提升为int。sValue=sValue-2;// 讲一个int类型赋值给short类型变量时发生错误。sValue-=2却可以编译正常,因为他等价与sValue=(sValue)(sValue-2);它包含隐士类型转换。(几乎所以双目运算符都包含隐士转换)
int val=3; int result=20/val;System.out.println(""+result);//输出6,可见结果为int类型。
System.out.println("hello"+'a'+7); System.out.println('a'+7+"hello");输出  helloa7     104hello 当基本类型和String类型进行连接运算时,系统会将基本类型得值自动转化为String类型。

2,输入法也可能导致错误。

java程序通常不能包含全角字符,例如中文空格,tab制表符。

转载于:https://my.oschina.net/u/2480757/blog/516162

你可能感兴趣的文章
Laravel学习--关于Relation的坑
查看>>
mysql jdbc性能优化之mybatis/callablestatement调用存储过程mysql jdbc产生不必要的元数据查询(已解决,cpu负载减少20%)...
查看>>
Q_DECLARE_PRIVATE与Q_DECLARE_PUBLIC
查看>>
springboot数据库连接池使用策略
查看>>
eclipse定制化配置调优、初始化配置指南、可以解决启动慢等问题
查看>>
react实现多行文本超出加省略号
查看>>
回调函数
查看>>
DORIS-软件网址
查看>>
单例模式
查看>>
SICP 习题 (1.10)解题总结
查看>>
Windows 下OpenSSL 安装
查看>>
SpringBoot整合Kotlin构建Web服务
查看>>
基于Mixin Network的PHP比特币开发教程 之一:创建机器人
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
vuex实现及简略解析
查看>>
Docker 使用 supervisord 管理 lumen队列与crontab
查看>>
vue-router源码解析(二)插件实现
查看>>
危险 AI 花名册
查看>>
日常工作-处理Windows下PHPStudy中的Apache无法启动的解决方法
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>