java中的String类的不可变性的小例子
在java语言中,String类具有不可变性,即常量字符串不可更改。下面的一个小例子简单演示相关概念。
public class test {
public static void main(String []args){
String str1="hello";
System.out.println(str1);
tell(str1);
System.out.print(str1);
}
public static void tell(String str)
{
str="main";
}
}
输出结果:
hello
hello

从输出可以看出,str1的值并没有改变,这是因为在java语言中,引用类型的数据作为函数参数传递时,虽然依然采用值传递的方法,但传递的数据是一个引用,即将str1指向的“hello”的地址传递给tell方法,在tell方法中更改的指向只是将str1的复制,在tell方法开始时,str1复制给str2,然后,str2指向“main”,这时str1的指向并没有改变,到tell方法结束后,str1 的输出结果仍然是“hello”;
public class test {
public static void main(String []args){
String str1="hello";
System.out.println(str1);
str1="main";
System.out.print(str1);
}
}
输出结果
hello
main
从输出结果上来看,似乎str1的值被改变了,但是事实上只是将str1的指向由“hello”变成了“mian”,“hello”字符串并没有改变。
java中的String类的不可变性的小例子的更多相关文章
- 关于Java中的String类知识点小总结
Java中的String类知识点 前言 在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 如何创建字符串 最简单的方式 String str = "he ...
- JAVA中的String类(详解)
Java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.String是一个类不属于基本数据类型. 可以从源码中看到,String是一个final类型. String ...
- 为什么Java中的String类是不可变的?
String类是Java中的一个不可变类(immutable class). 简单来说,不可变类就是实例在被创建之后不可修改. 在<Effective Java> Item 15 中提到了 ...
- Java中的String类
/*String类用于描述字符串事物的那么它就提供了多个方法对字符串进行操作 方法都会用,字符串这块就结束了常见的操作有哪些?“abcd”它应该具备什么功能,我们才能更好得操作它?1.获取(必须要掌握 ...
- java中的String类常量池详解
test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[ ...
- Java 中的 String 类常用方法
字符串广泛应用在Java编程中,在Java中字符串属于对象,String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等. Strin ...
- Java中的String类能否被继承?为什么?
不能被继承,因为String类有final修饰符,而final修饰的类是不能被继承的. Java对String类的定义: public final class String implements ja ...
- Java学习笔记(一)——关于java中的String类
[前面的话] 毕业将近6个月了,试用期也快要过去了,期待接下来的日子.在金融类性质的机构,最痛苦的是也许就是大部分系统外包,所以比较少写代码,在这六个月中只写了1个月左右的代码,然后每天都在做一些比较 ...
- java中关于string类和常量池的一点猜想
public class StringTest { /** * @param args */ public static void main(String[] args) { test1 ...
随机推荐
- linux之后台运行程序 nohup和& 的区别
1.nohup 用途:不挂断地运行命令,即使终端ssh关闭了也一直运行. 语法:nohup Command [ Arg … ] [ & ] 例:nohup start.sh & 无论是 ...
- linux编译找不到aprt apr-util
Linux很多地方编译的时候都会用到apr 如果找不到apr就会报错 configure: WARNING: APR not found The Apache Portable Runtime (AP ...
- 【K8S学习笔记】Part1:使用端口转发访问集群内的应用
本文介绍如何使用kubectl port-forward命令连接K8S集群中运行的Redis服务.这种连接方式有助于数据库的调试工作. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同 ...
- gradle 转 maven
1. 预备 1.1. java 环境 验证 java -version 1.2. gradle 安装, 参考, 这里列举下windows下的安装 b.1 下载包:https://gradle.org/ ...
- android开发学习笔记系列(5)--fragment与viewpage
前言 在前面的博客写到我针对一个项目完成了动态布局的效果,顿时感觉很爽,那么下面我针对我在前文中所讲的tabhost的实现做出一个新的方法,tabhost基本已经被启用,现在基本使用Fragment与 ...
- MVC实现删除数据库记录
本次MVC练习,我们想实现对数据库的记录进行删除.在网页的记录列表上,点击删除,将带到另外一个详细页面,显示详细的信息,让用户对删除的信息进行确认,再点击删除动作.不管怎样,得先在数据库创建一个删除的 ...
- android studio 断网使用
- VB.NET文件读写(C#可以改写)
VB.NET也可以用using 先FileStream,再StreamReader(写用StreamWriter) Using fs As New FileStream(p1, FileMode.Op ...
- Gson 使用和原理
使用教程: http://blog.csdn.net/axuanqq/article/details/51441590 http://www.jianshu.com/p/fc5c9cdf3aab 源码 ...
- Java - HashSet源码解析
java提高篇(二四)-----HashSet 一.定义 public class HashSet<E> extends AbstractSet<E> implements S ...