文档章节

5,表达式中的陷阱

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

关于字符串的陷阱;

第一次使用某一个字符串直接量得时候,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
【编程能力不行?那就写啊!】Python由浅入深编程(概念)实战

正文之前 前两天Python这门课上机,本来没太认真听课的,但是Python我是真的有爱的,所以上机哪怕是风里来雨里去我也从西边到东边风雨无阻的准时上机了。结果一上就发现还挺有意思,由浅入深...

HustWolf
01/05
0
0
令人抓狂的代码 - 万能正则表达式.*陷阱

转载请注明joymufeng,欢迎访问PlayScala社区(http://www.playscala.cn) 原文链接:http://www.playscala.cn/article/view?id=10-59ee9f831d00000f0033a556 先尝试执行下面的代码: println(......

joymufeng
2017/10/24
0
1
小心别落入正则回溯陷阱

不知才哪儿看来的: 如果你有一个问题,你想到可以用正则来解决,那么你有两个问题了。 回溯 对于正则而言,回溯并不是必需的,这跟具体的正则引擎有关。简单地说,正则引擎分为NFA和DFA。这...

Hoyho
2016/07/13
17
0
Replace Conditional with Polymorphism (以多态取代条件表达式)

Summary: 你手上有个条件表达式,它根据对象类型的不同而选择不同的行为。将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始函数声明为抽象函数。 Motivation: 在面向对象...

忆瑶
2014/03/28
591
0
PostgreSQL CVE-2018-1058(search_path) - 暨数据库的那些陷阱与攻防指南

标签 PostgreSQL , search_path , 陷阱 , overload function 背景 PostgreSQL 元宵节对各个版本发布了小版本补丁,主要是解决一个search_path的功能,被攻击者利用来设置陷阱的问题。 https:...

德哥
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

切分log日志

新建logback.xml放到resource里面 <?xml version="1.0" encoding="utf-8"?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <......

talen
5分钟前
0
0
spring @Resource 和 @Autowired 的使用区别

这两个 注解 @Resource 和 @Autowired , 常识都知道 @Resource 是 JAVAEE 自带的,@Autowired 是 spring 的自定义注解。 一般情况下, 使用 bean的时候, 这两个注解 随便使用一个即可。 但...

之渊
10分钟前
0
0
崛起于Springboot2.X之集成MongoDB使用Repository增删改查(26)

1、pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency><dependency> <groupId>log4j</......

木九天
11分钟前
1
0
springboot集成elasticsearch客户端问题记录

1背景说明 服务端ES版本为5.5.2,springboot版本为1.5.6。 工程中添加如下依赖 2问题记录 2.1 NetworkPlugin类找不到 报错java.lang.ClassNotFoundException: org.elasticsearch.plugins.Net...

zjg23
11分钟前
1
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
12分钟前
0
0
Java构造器使用注意

public class 父类A {int age = 10;protected void say() {System.out.println("父类A");}public 父类A() {override();}public void override() {Syst...

咸鱼AI
12分钟前
0
0
TensorFlow 线性分类

构造直线 z = 2 * x - 3 * y + 4 x0*w0+x1*w1+b=0 x1=-x0* w0/w1-b/w1 斜率 k= -w0/w1 截距 -b/w1 随机生成数据,加入一定的偏差,用直线将二维平面分为两部分 使用线性模型拟合参数 损失函数...

阿豪boy
15分钟前
0
0
翻译冒泡排序测试

翻译一个冒泡排序: var a = [1,3,2,4,6,5];var f = 0;var n = a.length ;for( var i =1; i<= n; i++) { for( var j = n-1 ; j >= i; j --) { if(a[j] < a[j+1]) { ......

钟元OSS
16分钟前
0
0
maven父、子级版本号同时修改

命令: mvn versions:set -DnewVersion=0.0.2-SNAPSHOT

沉默的懒猫
18分钟前
0
0
Spring boot中的异常处理之注解响应

Controller层 return patientRepository.findById(id) .orElseThrow(() -> new NotFoundException(String.format("Patient %d not found", id))); Exception类 @ResponseS......

亚林瓜子
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部