文档章节

5,表达式中的陷阱

7
 761218914
发布于 2015/10/13 10:09
字数 473
阅读 33
收藏 1

关于字符串的陷阱;

第一次使用某一个字符串直接量得时候,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制表符。

© 著作权归作者所有

共有 人打赏支持
7
粉丝 5
博文 133
码字总数 47263
作品 0
南昌
程序员
JavaScript 中的陷阱

全局变量 JavaScript 通过函数管理作用域。在函数内部声明的变量只在这个函数内部,函数外面不可用。另一方面,全局变量就是在任何函数外面声明的或是未声明直接简单使用的。 “未声明直接简...

cd_ing
2014/02/17
0
0
七、基本语句和运算

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 一、基本语句 C语言...

长平狐
2013/03/28
26
0
AngularJS: 使用Scope时的6个陷阱

在使用AngularJS中的scope时,会有6个主要陷阱。如果你理解AngularJS背后的概念的话,这6个点其实非常的简单。但是在具体讲述这6个陷阱之前我们先要讲两个其它的概念。 概念1: 双向数据绑定...

WolfX
2016/02/20
4
0
【面试笔记】js面试25题笔记

自测链接>> 在js25题、js21题或者js85题测验你的知识掌握。 js25题笔记 1. 使用 可能遇到的陷阱和解决方法 在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,...

JSAL
2016/08/13
85
0
Learning Typescript读书笔记2

Chap 3 函数 1.函数定义包括函数声明和函数表达式,函数声明能力提升,可以使用在定义之前。 2.函数参数支持可选(?),必须是最后一个参数;支持默认值(参数类型后加=),必须是最后一个;支持...

GunnerAha
06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

GO 数组相关操作

package mainimport("fmt""math/rand""time")func main() {//数组的几种定义方式var arr1 [3]int = [3]int{1,2,3}var arr2 = [3]int{4,5,6}arr3 := [3]string{"h", "w", ......

汤汤圆圆
23分钟前
0
0
JAVA 中interrupt、interrupted和isInterrupted的区别

首先,我们说明下三个方法的功能 interrupt() 向当前调用者线程发出中断信号 isinterrupted() 查看当前中断信号是true还是false interrupted() 是静态方法,查看返回当前中断信号并将中断信号...

我爱春天的毛毛雨
28分钟前
0
0
Coding and Paper Letter(二十二)

资源整理。 1 Coding: 1.开源项目openeo api。oponEO开发了一个开放的API,以简单统一的方式将R,python和javascript客户端连接到对地观测大数据云平台的后台。 此存储库包含此API,即oponE...

胖胖雕
53分钟前
1
0
RxJS的另外四种实现方式(三)——性能最高的库

接上篇 RxJS的另外四种实现方式(二)——代码最小的库(续) 代码最小的库rx4rx-lite虽然在性能测试中超过了callbag,但和most库较量的时候却落败了,于是我下载了most库,要解开most库性能...

一个灰
今天
4
0
马太效应

马太效应

yizhichao
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部