think in java读书笔记--字符串

本文通过两个示例说明了在Java中如何传递String和Person对象。对于String对象,当作为方法参数传递时,实际上传递的是其引用的副本;而对于Person对象,由于其可变性,直接传递引用会导致原始对象被修改。
每当把String对象作为方法的参数传递时,都会复制一份引用。而该引用所指的对象其实一直待在单一的物理位置上,从未动过。
public static void main(String[] args) {
		String a = "abc";
<pre name="code" class="java"><span style="white-space:pre">		</span>System.out.println(a);
String b = upper(a); // 传递的是String对应的一个引用副本复制一份引用System.out.println(b);System.out.println(a);Person p = new Person();p.setName("zzzzzzz");System.out.println(p);Person q = changePerson(p); // 传递的是p的引用地址值System.out.println(q);System.out.println(p);}private static String upper(String str) {return str.toUpperCase();}private static Person changePerson(Person person) {person.setName("aaaaaaaaaaa");return person;}}class Person {private String name;public Person() {}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Person [name=" + name + "]";}

//运行结果:
abc
ABC
abc
Person [name=zzzzzzz]
Person [name=aaaaaaaaaaa]
Person [name=aaaaaaaaaaa]

<think>根据用户的问题,他想要了解如何在Java中使用变量操作字符串的示例。用户的问题为:“请问java string using variable example”。结合之前的对话历史,用户之前询问了字符串分割并保留分隔符,现在转向字符串变量操作。 我将提供几个常见的Java字符串变量操作示例: 1. **字符串插值(变量嵌入)**:使用`String.format()`或`+`运算符将变量值插入到字符串中。 2. **字符串连接**:使用`+`或`StringBuilder`连接多个字符串变量。 3. **字符串长度**:使用`length()`方法获取字符串变量的长度。 4. **子字符串**:使用`substring()`方法从字符串变量中提取部分内容。 5. **字符串替换**:使用`replace()`方法替换字符串变量中的部分内容。 6. **字符串分割**:使用`split()`方法分割字符串变量(结合之前的问题)。 此外,我会参考引用中的内容: - 引用[1]提到从字符串中获取名字的最后一个字符的索引,这涉及字符串索引操作。 - 引用[2]关于字符串对齐,使用`String.format()`。 - 引用[3]关于字符串转整数,但用户当前问题不涉及转换,所以可能不直接相关。 因此,我会设计包含这些操作的示例代码。</think>### Java 字符串变量操作示例 在 Java 中使用变量操作字符串是常见需求,以下是 6 种典型场景的代码示例: #### 1. **基础字符串插值(变量嵌入)** ```java String name = "Alice"; int age = 28; // 使用 + 运算符 String message1 = "姓名: " + name + ", 年龄: " + age; // 使用 String.format() String message2 = String.format("姓名: %s, 年龄: %d", name, age); System.out.println(message1); // 姓名: Alice, 年龄: 28 System.out.println(message2); // 姓名: Alice, 年龄: 28 ``` #### 2. **多变量字符串对齐**[^2] ```java String item = "笔记本"; double price = 15.99; int quantity = 3; // 固定宽度格式化 String receipt = String.format( "%-10s %8.2f %5d %10.2f", // 格式说明符 item, // 左对齐10字符 price, // 右对齐8字符(保留2位小数) quantity, // 右对齐5字符 price * quantity // 右对齐10字符 ); System.out.println("商品     单价  数量  小计"); System.out.println(receipt); // 输出:笔记本  15.99   3    47.97 ``` #### 3. **动态字符串操作** ```java String base = "用户"; int id = 1024; // 动态生成字符串 String username = base + id; // 用户1024 String email = username + "@example.com"; // 用户1024@example.com // 字符串长度计算 int nameLength = username.length(); // 6 (汉字算1字符) // 子字符串提取 String prefix = username.substring(0, 2); // "用户" ``` #### 4. **字符串分割与位置定位**[^1] ```java String fullName = "张 三"; Scanner scanner = new Scanner(fullName); // 获取名字结束位置 int firstNameEndIndex = fullName.indexOf(' '); String firstName = fullName.substring(0, firstNameEndIndex); System.out.println("名字结束位置: " + firstNameEndIndex); // 1 System.out.println("名字: " + firstName); // 张 ``` #### 5. **类型转换与字符串操作**[^3] ```java String strNum = "1234"; int num = 100; // 字符串转整数 int parsedNum = Integer.parseInt(strNum); // 数值运算后转回字符串 String result = String.valueOf(num + parsedNum); System.out.println(result); // 1334 ``` #### 6. **正则表达式与变量结合** ```java String input = "苹果;香蕉,橙子"; String delimiter = "[,;]"; // 动态分隔符 // 分割并保留分隔符 String regex = "(?<=" + delimiter + ")|(?=" + delimiter + ")"; String[] parts = input.split(regex); System.out.println(Arrays.toString(parts)); // [苹果, ;, 香蕉, ,, 橙子] ``` ### 关键技巧总结 1. **插值选择**: - 简单拼接:`+` 运算符 - 复杂格式:`String.format()` - 高性能场景:`StringBuilder` 2. **类型转换**: ```java // 字符串 → 数值 int num = Integer.parseInt("42"); double val = Double.parseDouble("3.14"); // 数值 → 字符串 String s1 = String.valueOf(42); String s2 = Integer.toString(42); ``` 3. **动态正则**: - 将变量嵌入正则表达式:`"(?<=" + userDelimiter + ")"` - 处理特殊字符:`Pattern.quote(userInput)` 4. **性能优化**: - 循环内操作使用 `StringBuilder` - 预编译正则:`Pattern.compile()` 复用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值