两个关于字符串的经典例子
时间:2022-04-25
本文章向大家介绍两个关于字符串的经典例子,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
示例1:
==运算符
public static void test(){
String x = "hello";
String y = "world";
String a = "helloworld";
System.out.println("x==hello:"+(x=="hello"));
System.out.println("a==helloworld:"+(a=="hello"+"world"));
System.out.println("a==x+y:"+(a==(x+y)));
}
结果:
x == hello:true a == helloworld:true a == x+y:false
双引号内的字符串是放在常量池里的,当双引号内再次出现与原来字符串相同内容时,jvm不会创建新对象,只是将引用指向了常量池里原来就存在的那个String对象,这与用new创建不同,用new的话将在堆中创建一个新对象,不管在堆中有没有相同内容的对象。因此,对System.out.println("x==hello:"+(x=="hello"));“hello”所在的地址与x引用所指向的地址相同,输出true;
hello”+“world“在编译器内就已经确定了,即为已存在常量池中的以a作为引用的对象,仍输出true;
而x+y属引用相加,这在编译时是不能确定的,在执行期间将由x+y得出的“helloworld”放入堆中(而不是常量池),因此输出false。
示例2:
对象引用
public class TestRef{
public static void main(String[] args){
StirngBuffer a = new StringBuffer("a");
StringBuffer b = new StringBuffer("b");
append(a,b);
System.out.println(a.toString()+","+b.toString());
b = a;
System.out.println(a.toString()+","+b.toString());
}
public static void append(StringBuffer a,StringBuffer b){
a.append(b);
b = a;
}
}
结果: ab,b ab,ab 第一个为什么输出的为什么不是ab,ab呢,根据有关值传递与引用传递的理论,得出这样的结论:两个StringBuffer对象的引用传递到append方法中,方法中的a,b其实是不同于main()方法中的a,b引用的,但他们都分别指向同一个对象,通过append()方法中的a.append(b),使a指向的对象变成ab,而方法中b=a只是将append()中的b引用指向ab,而main()方法中的b引用仍指向原来的对象,即b,需要在main()中通过b=a,使main()中b引用指向ab,方能输出ab,ab。
- java基础:所有参数皆是按值参数
- 使用Hystrix提高系统可用性
- Spring Security笔记:解决CsrfFilter与Rest服务Post方式的矛盾
- GitHub新开放项目FoolNLTK:一个便捷的中文处理工具包
- hessian学习
- 制作WordPress侧边栏“博客统计”小工具并集成在主题中的方法
- Struts2、Spring MVC4 框架下的ajax统一异常处理
- 前11月网游收入1341亿元同比增超两成 你贡献了多少?
- struts2: config-browser-plugin 与 convention-plugin 学习
- 千万级规模高性能、高并发的网络架构经验分享
- UE4新手之编程指南
- redis 学习笔记(5)-Spring与Jedis的集成
- Linq to SQL 查询Tips
- SQLite 预写式日志
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python多进程及多线程基础
- Python字符串三种格式化输出
- 你需要知道的Python代码规范性检查(pylint和flake8)
- Linux下安装python环境
- 【5】进大厂必须掌握的面试题-Java面试-spring
- Python 3.7 自动化接口测试简单实例
- 从 0 开始构建一个亿级请求的微服务架构
- ruby+cucumber+watir环境搭建
- Python常用模块os和shutil学习
- Python简单实现批量下载无版权图片
- Pycharm自动添加文件头注释和函数注释参数
- ClickHouse TTL for Columns and Tables
- Sentence-BERT详解
- 分布式文件系统(HDFS和FastDFS)
- Springboot集成JUnit5优雅进行单元测试