文档章节

关于字面量字符串的效率问题

大海
 大海
发布于 2016/07/09 16:27
字数 396
阅读 13
收藏 0
点赞 0
评论 0
@RestController
public class FirstRestController {
	
	private String str1;
	private String str2;
	@RequestMapping("/rest")
	public String out(){
		str1 = "hello world";
		return str1;
	}
	
	@RequestMapping("/rest2")
	public String out2(){
		str2 = "hello world";
		return str2;
	}
	@RequestMapping("/comp")
	public Boolean comp(){
		return str1 == str2;
	}
}
@RestController
public class FirstRestController {
	private static final String str = "hell world";
	@RequestMapping("/rest")
	public String out(){
		return str;
	}
	
	@RequestMapping("/rest2")
	public String out2(){
		return str;
	}
}

第一个图中的源码,在每次收到请求的时候都会创建一个字面量的字符串hello world,根据字符串的常量池特性,每次变量被一个字面量字符串赋值时都会去字符串常量池看一下是否有这和这个字符串相同的字符串(equals),如果有的话直接返回该字符串,这个做法的好处就是不会重复创建相同的字符串,如果new的话就例外了,new会在堆中开辟一个空间用来存放这个字符串对象。

再来看看第二个图的源码,在控制器中定义了一个static final的字符串,说明该字符串是控制器的静态私有变量,类中的所有方法都可以直接使用这个字符串。好处在于,每次收到请求的时候都会直接返回这个私有字符串,而不会先去常量池里看看是否存在这个字面量字符串。效率要比第一个更高。所以在遇到一个方法调用某个固定字符串的时候,最好直接引用某个已经赋值的字符串变量,因为效率更高

© 著作权归作者所有

共有 人打赏支持
大海
粉丝 2
博文 83
码字总数 32431
作品 0
杭州
程序员
基本类型和操作之字面量

整数字面量 类型Int、Long、Short、Byte的整数字面量有三种格式:十进制、十六进制和八进制。 1. 十六进制 如果数开始于0x或0X,那它是十六进制,并且可能包含从0到9,及大写或小写的从A到F...

柳哥 ⋅ 2014/06/05 ⋅ 0

基本类型和操作之理解Symbol类型

相信很多人和我一样,在刚接触scala时,会觉得Symbol类型很奇怪,既然Scala中字符串都是不可变的,那么Symbol类型到底有什么作用呢?简单来说,相比较于String类型,Symbol类型有两个比较明显...

柳哥 ⋅ 2014/06/05 ⋅ 0

Android冷知识——Java中的字符串常量池

字符串常量池 JVM为了减少字符串对象的重复创建,其内部维护了一个特殊的内存,这段内存被成为字符串常量池(方法区中)。实际上还有整型常量池、浮点型常量池等等。字符串常量池存放的是对象...

qq_30379689 ⋅ 05/31 ⋅ 0

Java中关于乱码的认识和解决办法

前几天在使用中兴的MM7接口开发一个彩信的应用,可是在测试的时候,手机收到的文本内容总是一堆乱码,不管怎么修改参数问题都得不到解决,于是就狠狠的琢磨和研究了下关于编码的内容,最终成...

mybabe0312 ⋅ 2015/12/30 ⋅ 0

Javascript中数据类型转换那些事

在js中,总的来说数据类型分为两大类,一类是原始值类型的,一类是引用类型的。原始值类型的包括:字符串(String) 、数字(Number) 、布尔值(Boolean) 以及两个特殊的值 null 和 undefined 。...

Junn ⋅ 2014/09/26 ⋅ 0

深入理解ES6--2.字符串与正则表达式

主要知识点:新增的字符串处理方法、模板字面量以及正则表达式上的改动 1. 字符串处理方法 codePointAt()方法 ES6 为全面支持 UTF-16 而新增的方法之一是 ) ,它可以在给定字符串中按位 置提...

你听___ ⋅ 05/06 ⋅ 0

Python 2 与 Python 3 的差异对比

这篇文章总结了一些与Python2.6相比Python3.0中的新特性.Python3是一个不向后兼容的版本,有了很多的改变,这些对于Python开发者来说是非常重要的,虽然多数人说Python3真正流行起来还需要一...

xrzs ⋅ 2013/11/02 ⋅ 1

初探Java字符串

String印象 String是java中的无处不在的类,使用也很简单。初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是final的。 不过,String是有字面量这一说法的,这是其他类型所没有的...

天蚕宝衣 ⋅ 2016/02/24 ⋅ 0

Objective-C 之 Literals(字面量)

今天整理一下关于Objective-C Literals的内容,Literals翻译成字面量或者字面值,就是直接被写到源代码中的值。这不是一个陌生的概念,我们在写程序的时候能频繁的见到。我们很早就见过NSStr...

XMAN2017 ⋅ 2013/05/05 ⋅ 9

初探Java字符串

原文出处: 蔡晓建 String印象 String是java中的无处不在的类,使用也很简单。初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是final的。 不过,String是有字面量这一说法的,这...

Fico ⋅ 2016/03/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开启Swarm集群以及可视化管理

在搭建的两台coreos服务器上开启swarm集群 前置条件: docker均开启2375端口 同一个局域网内 主服务器上安装Portainer容器 安装Portainer容器执行: docker run -d -p 9000:9000 --restart=a...

ykbj ⋅ 6分钟前 ⋅ 0

单例设计模式

1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 2、饿汉式单例类 在这个类被加载时,静态变量instance会被初始化,此时类的私有构造子会被调用 饿汉式是典型...

职业搬砖20年 ⋅ 11分钟前 ⋅ 0

前端基础(四):前端国际规范收集

字数:1142 阅读时间:5分钟 前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,容易起到误导作用。所以,我对搜索到的解决方案往往是存疑态度。那么,如何...

老司机带你撸代码 ⋅ 13分钟前 ⋅ 0

Failed to open/create Network-VirtualBox Host-Only

虚拟机版本 : Oracle Vm VirtualBox 5.2.12 报错时机:开网卡二,重启虚拟机报错 "Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Ada......

p至尊宝 ⋅ 16分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

阿里云云栖社区 ⋅ 20分钟前 ⋅ 0

springMVC接收表单时 Bean对象有Double Int Char类型的处理

前台ajax提交表单price为double类型 后台controller就介绍不到 400错误 前台 实体类: public class ReleaseMapIconConfig{ private String id; private long maxValue; private long minVal......

废柴 ⋅ 22分钟前 ⋅ 0

ZOOKEEPER安装

工作需要在ubuntu上配置了一个zookeeper集群,有些问题记录下来。 1. zookeeper以来java,所以首先要安装java。但是ubuntu系统有自带的jdk,需要通过命令切换java版本: $ sudo update-alter...

恰东 ⋅ 25分钟前 ⋅ 0

linux 进程地址空间的一步步探究

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间...

HelloRookie ⋅ 25分钟前 ⋅ 0

myatis #{}与${}区别及原理

https://blog.csdn.net/wo541075754/article/details/54292751

李道福 ⋅ 28分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

猫耳m ⋅ 29分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部