java中的String类的不可变性的小例子

在java语言中,String类具有不可变性,即常量字符串不可更改。下面的一个小例子简单演示相关概念。

 1 public class test {
 2     public static void main(String []args){
 3         String str1="hello";
 4         System.out.println(str1);
 5         tell(str1);
 6         System.out.print(str1);
 7     }
 8
 9     public static void tell(String str)
10     {
11         str="main";
12     }
13
14 }

输出结果:

1 hello
2 hello

从输出可以看出,str1的值并没有改变,这是因为在java语言中,引用类型的数据作为函数参数传递时,虽然依然采用值传递的方法,但传递的数据是一个引用,即将str1指向的“hello”的地址传递给tell方法,在tell方法中更改的指向只是将str1的复制,在tell方法开始时,str1复制给str2,然后,str2指向“main”,这时str1的指向并没有改变,到tell方法结束后,str1 的输出结果仍然是“hello”;

 1 public class test {
 2
 3     public static void main(String []args){
 4         String str1="hello";
 5         System.out.println(str1);
 6
 7         str1="main";
 8         System.out.print(str1);
 9     }
10 }

输出结果

hello
main

从输出结果上来看,似乎str1的值被改变了,但是事实上只是将str1的指向由“hello”变成了“mian”,“hello”字符串并没有改变。

时间: 2024-10-01 06:30:58

java中的String类的不可变性的小例子的相关文章

java 中的String类

String a = "aaa"; 用这种方式的时候java首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它 如果没有则创建 String a = new String("aaa"); 是不管内存中有没有"aaa" 都开辟一块新内存保存它 可以用以下方法验证下 String a = "aaa"; String b = "aaa"; String c = new String

Java中的String类与StringBuffer类

String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值 (2)String类对象的性能远不如StringBuffer类. 具体解释如下: 在java中有3个类来负责字符的操作. 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作.不可变类. 3.StringB

java中的String类常量池详解

test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[] args){ String a = "a1"; String b = "a"+ 1; System.out.println(a==b); }//true } test2: package StringTest; public class test2 { /** *

Java中的String类

在Java中,字符串是对象,是描述字符的基本数据结构,也是程序设计中很重要的一类数据结构 Java专门为存储和处理字符串提供了两个类: String & StringBuffer String类型对象的创建常见的有三种方法 : 1. 通过初始化 String str = "hellow"; 2. 使用new关键字进行创建 String str = new String(); 3. 通过类型转换来创建 String str = Double.toString(123.45); S

Java 中的 String 类常用方法

字符串广泛应用在Java编程中,在Java中字符串属于对象,String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等. String 类的常用方法: 注意事项: 1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1 2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引:如果没有匹配结果,返回 -1 3. 使用 substring(beginIndex , endIndex

java中的String类的一点认识

这是学习中用到的一些基础知识 String 是经常会用到的一个类,学习的过程中发现的东西进行的汇总. 1. 初始化方面: String类是一个比较特别的类,初始化的时候有种简化的特殊语法. 1>String s = "abc"; 而按照正规的语法来说,应该是: 2>String s = new String ("abc"); 建议使用1>的方式,原因在于这样比较节省内存空间,从其他网站上照抄下来的说法是,[只是按照面向对象的标准语法,在内存使用上存

关于Java中的String类的不可变

此处,不再论述String的不可变,只说说为什么String是不可变的. 粗暴点,直接来了,String的不可变原因有三: 1).String类是final的 用final修饰的类是不可被继承的,用在了String类就代表它不可被继承,不可被后来的程序员用新类继承然后修改它. 这一招,意在让String "断子绝孙",我认为和阉割有异曲同工之妙. 2).String的值是一个char数组,是被final和private修饰的 贴一下String的源代码: 1 public final

第4篇 Java中的String类

JAVA String类 字符串是常量:它们的值在创建之后不能改变.字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以可以共享它们.例如: String str = "abc"; 等效于: char data[] = {'a', 'b', 'c'}; String str = new String(data); 注意事项 常用方法 equals()            判断值是否相等 equalsIgnoreCase() 忽略大小写进行对比 toLowerCase

java中的String类 字符串拆分成字符串数组 判定邮箱地址 字符串比较 看结果?

看结果1? package com.swift; class ArrayString { public static void main(String[] args) { String str = "swift:30|sunny:28|Ben:32"; String str1[] = str.split("\\|"); for (int i = 0; i <= str1.length - 1; i++) { String str2[] = str1[i].sp