Java中如何正确定义字符串

 更新时间:2023年10月11日 08:47:16   作者:程序员小橙  
这篇文章主要给大家介绍了关于Java中如何正确定义字符串的相关资料,在Java中定义一个字符串最简单的方法是用双引号把它包围起来,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

字符串是 Java 中特殊的类,使用方法像一般的基本数据类型,被广泛应用在 Java 编程中。Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个 String 类来创建和操作字符串。

在 Java 中定义一个字符串最简单的方法是用双引号把它包围起来。这种用双引号括起来的一串字符实际上都是 String 对象,如字符串“Hello”在编译后即成为 String 对象。因此也可以通过创建 String 类的实例来定义字符串。

不论使用哪种形式创建字符串,字符串对象一旦被创建,其值是不能改变的,但可以使用其他变量重新赋值的方式进行更改。

一、直接定义字符串

直接定义字符串是指使用双引号表示字符串中的内容,例如“Hello Java”、“Java 编程”等。具体方法是用字符串常量直接初始化一个 String 对象,示例如下:

String str = "Hello Java";
String str;
str = "Hello Java";

举例说明:

String str = "我是一只小小鸟"; // 结果:我是一只小小鸟
String word;
word = "I am a bird"; // 结果:I am a bird
word = "<h1>to fly</h1>"; // 结果:<h1>to fly</h1>
word = "Let\'s say that it\'s true"; // 结果:Let's say that it's true
System.out.println(word);
word = "北京\\上海\\广州"; // 结果:北京\上海\广州

二、使用 String 类定义

String 类的构造方法有多种重载形式,每种形式都可以定义字符串。下面介绍最常用的几种形式。

1. String()

初始化一个新创建的 String 对象,表示一个空字符序列。

2. String(String original)

初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列。换句话说,新创建的字符串是该参数字符串的副本。例如:

String str1 = new String("Hello Java");
String str2 = new String(str1);

这里 str1 和 str2 的值是相等的。

3. String(char[ ]value)

分配一个新的字符串,将参数中的字符数组元素全部变为字符串。该字符数组的内容已被复制,后续对字符数组的修改不会影响新创建的字符串。例如:

char a[] = {'H','e','l','l','0'};
String sChar = new String(a);
a[1] = 's';

上述 sChar 变量的值是字符串“Hello”。 即使在创建字符串之后,对 a 数组中的第 2 个元素进行了修改,但未影响 sChar 的值。

4. String(char[] value,int offset,int count)

分配一个新的 String,它包含来自该字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被赋值,后续对字符数组的修改不会影响新创建的字符串。例如:

char a[]={'H','e','l','l','o'};
String sChar=new String(a,1,4);
a[1]='s';

上述 sChar 变量的值是字符串“ello”。该构造方法使用字符数组中的部分连续元素来创建字符串对象。offset 参数指定起始索引值,count 指定截取元素的个数。创建字符串对象后,即使在后面修改了 a 数组中第 2 个元素的值,对 sChar 的值也没有任何影响。

附:字符串转换与截取

字符串拼接的底层原理

1)如果没有变量参与,都是字符串直接相加,编译之后就是拼接的结果,会复用串池中的字符串。

2)如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。

public class Test{
	public static void main(String[] args){
		String s1 = "abc";
		String s2 = "ab";
		String s3 = s2+"c";
		String s4 = "a"+"b"+"c";
		System.out.println(s1 == s3); //false,因为s3有变量相加,会创建新的字符串
		System.out.println(s1 == s4); //true, s4没有变量参与,会复用已存在的字符串,与s1地址一样
	} 
}

字符转换成int型

char ch = str.charAt(i);
int n = ch -48;  //48代表字符‘0'

修改字符串内容

1)使用subString截取

String s = "abcd";
char ch = s.charAt(0); //拿到第一个字符
String se = s.subString(1); //拿到从1开始的字符串至结尾
return se + ch; //拼接成新的字符串

2)将字符串变为字符数组,操作完再将其转化为字符串

String s = "abcd";
char[] cs = s.toCharArray();
char first = cs[0]; //拿到第一个字符
for(int i = 1; i < cs.length; i++ ){
	cs[i-1] = cs[i]; //将后面的字符依次前移
}
cs[cs.length-1] = first; //将第一个字符放到最后
String str = new String(cs); //创建新字符串
return str;

总结

到此这篇关于Java中如何正确定义字符串的文章就介绍到这了,更多相关Java定义字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 详解SpringBoot实现JPA的save方法不更新null属性

    详解SpringBoot实现JPA的save方法不更新null属性

    直接调用原生Save方法会导致null属性覆盖到数据库,使用起来十分不方便。本文详细的介绍了如何解决这个问题,非常具有实用价值,需要的朋友可以参考下
    2018-12-12
  • 简单实现Spring的IOC原理详解

    简单实现Spring的IOC原理详解

    这篇文章主要介绍了简单实现Spring的IOC原理详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 解决java连接zookeeper很慢的问题

    解决java连接zookeeper很慢的问题

    这篇文章主要介绍了解决java连接zookeeper很慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java抛出异常与finally实例解析

    java抛出异常与finally实例解析

    这篇文章主要介绍了java抛出异常与finally实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java实现对象按照其属性排序的两种方法示例

    Java实现对象按照其属性排序的两种方法示例

    这篇文章主要介绍了Java实现对象按照其属性排序的两种方法,结合实例形式详细分析了Java对象按照其属性排序的两种实现方法与相关注意事项,需要的朋友可以参考下
    2020-05-05
  • Java实现图片拼接

    Java实现图片拼接

    这篇文章主要为大家详细介绍了Java实现图片拼接的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Spring如何使用AOP实现声明式事务管理

    Spring如何使用AOP实现声明式事务管理

    Spring 使用 AOP 实现声明式事务管理是其最强大的功能之一,这篇文章小编将详细拆解这个过程,从高层概念到底层原理,感兴趣的小伙伴可以参考一下
    2025-06-06
  • 实例解析Java中的构造器初始化

    实例解析Java中的构造器初始化

    这篇文章主要通过实例解析Java中的构造器初始化,代码很简单,叙述很明确,需要的朋友可以了解下。
    2017-09-09
  • Spring boot事务无效报错:Transaction not enabled问题排查解决

    Spring boot事务无效报错:Transaction not enabled问题排查解决

    在业务代码中经常需要保证事务的原子性,但是有的时候确实是出现事务没有生效,这篇文章主要给大家介绍了关于Spring boot事务无效报错:Transaction not enabled问题排查的相关资料,需要的朋友可以参考下
    2023-11-11
  • Redis工具类封装RedisUtils的使用示例

    Redis工具类封装RedisUtils的使用示例

    本文主要介绍了Redis工具类封装RedisUtils的使用示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论