当前位置: 首页 > wzjs >正文

怎么做网站的签约编辑代运营一家店铺多少钱

怎么做网站的签约编辑,代运营一家店铺多少钱,网站制作过程教程,哈尔滨门户网站设计报价文章目录 java中String字符串1. 不可变性(Immutable)示例原理 2. 字符串常量池(String Pool)示例intern () 方法 3. 字符串拼接常用方式 4. 常用方法5. 字符串格式化String.format()文本块(Java 15) 6. 编码…

文章目录

  • java中String字符串
    • 1. 不可变性(Immutable)
      • 示例
      • 原理
    • 2. 字符串常量池(String Pool)
      • 示例
        • intern () 方法
    • 3. 字符串拼接
        • 常用方式
    • 4. 常用方法
    • 5. 字符串格式化
      • String.format()
      • 文本块(Java 15+)
    • 6. 编码与解码
      • 字符串转字节数组
      • 字节数组转字符串
    • 7. 常见面试问题
      • `String` vs `StringBuilder` vs `StringBuffer`
      • `==` vs `equals()
      • 字符串常量池的作用
    • 总结

java中String字符串

在 Java 中,String是一个非常重要且特殊的类,用于表示不可变的字符序列。以下是关于String的核心特性和常见用法:

1. 不可变性(Immutable)

String对象一旦创建,其值不能被修改。任何对String的操作(如concat()substring())都会返回一个新的String对象。

示例

String s1 = "Hello";
s1 = s1 + " World"; // 实际上创建了新的String对象 "Hello World"

原理

String内部使用final char[]存储字符,且类被声明为final,禁止被继承和修改。

2. 字符串常量池(String Pool)

Java 为了节省内存,会将字面量字符串放入常量池。相同内容的字面量会复用同一个对象。

示例

String s1 = "Hello"; // 常量池创建 "Hello"
String s2 = "Hello"; // 复用常量池中的对象
System.out.println(s1 == s2); // true(引用相同)String s3 = new String("Hello"); // 堆中创建新对象
System.out.println(s1 == s3); // false(引用不同)
System.out.println(s1.equals(s3)); // true(值相同)
intern () 方法

手动将String对象加入常量池:

String s4 = new String("Java").intern(); // 将堆中的"Java"加入常量池
System.out.println(s4 == "Java"); // true

3. 字符串拼接

常用方式
  • +操作符:编译时优化为StringBuilder

    String result = "Hello" + " " + "World"; // 编译后等价于:
    // String result = new StringBuilder("Hello").append(" ").append("World").toString();
    
  • StringBuilder:非线程安全,性能高(推荐循环拼接)。

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 10; i++) {sb.append(i);
    }
    String result = sb.toString(); // "0123456789"
    
  • StringBuffer:线程安全(内部方法加synchronized),性能较低。

4. 常用方法

String str = "Hello World";// 长度
int length = str.length(); // 11// 子串
String sub = str.substring(6); // "World"// 查找
int index = str.indexOf("World"); // 6// 替换
String replaced = str.replace("World", "Java"); // "Hello Java"// 分割
String[] parts = str.split(" "); // ["Hello", "World"]// 大小写转换
String upper = str.toUpperCase(); // "HELLO WORLD"// 去除首尾空格
String trimmed = "  abc  ".trim(); // "abc"// 判断开头/结尾
boolean startsWith = str.startsWith("Hello"); // true// 比较
boolean equals = str.equals("Hello World"); // true
boolean equalsIgnoreCase = str.equalsIgnoreCase("HELLO WORLD"); // true

5. 字符串格式化

String.format()

String name = "Alice";
int age = 25;
String formatted = String.format("Name: %s, Age: %d", name, age);
// "Name: Alice, Age: 25"

文本块(Java 15+)

String html = """<html><body><p>Hello, World!</p></body></html>
""";

6. 编码与解码

字符串转字节数组

String str = "你好";
byte[] utf8Bytes = str.getBytes("UTF-8"); // UTF-8编码
byte[] gbkBytes = str.getBytes("GBK");    // GBK编码

字节数组转字符串

String utf8Str = new String(utf8Bytes, "UTF-8");
String gbkStr = new String(gbkBytes, "GBK");

7. 常见面试问题

String vs StringBuilder vs StringBuffer

  • String:不可变,适合少量拼接。
  • StringBuilder:可变,非线程安全,适合单线程大量拼接。
  • StringBuffer:可变,线程安全,适合多线程大量拼接。

== vs `equals()

  • ==:比较引用地址。
  • equals():比较字符串内容。

字符串常量池的作用

减少内存开销,避免重复创建相同内容的字符串。

总结

String的不可变性保证了线程安全和字符串常量池的实现,但频繁拼接会产生大量临时对象,此时应使用StringBuilderStringBuffer。理解字符串常量池和编码问题有助于写出高效且健壮的代码。

http://www.dtcms.com/wzjs/216381.html

相关文章:

  • 九江 网站建设公司合肥网站
  • 域名怎么做网站镇江抖音seo
  • 如何做私彩网站深圳外包网络推广
  • 化妆品网站建设推广学院seo教程
  • 山东超越建设集团网站查询网入口
  • vs2010做网站前台怎样注册个人网站
  • 邢路桥建设总公司网站厦门网
  • 重庆时时彩在线网站制作免费的行情网站app软件
  • 成都公司网站建设全网推广平台
  • 有趣的h5创意设计武汉关键词seo排名
  • 在线阅读小说网站怎么建设今日新闻最新事件
  • 网站开发项目 工作分解图线上营销方式6种
  • 网站建设的发展趋势常德seo
  • 上海品牌网站开发谷歌优化
  • 手机网站建设怎么做网址
  • 如何推广品牌知名度关键词优化是怎么弄的
  • 哪些网站首页做的好怎样做网络销售平台
  • 生产管理软件哪家好seo排名优化怎样
  • 网乐科技网站建设网站免费推广方式
  • 宝安做网站信科如何推广平台
  • WordPress放B站哈尔滨最新信息
  • 网站成功案例分析如何免费自己创建网站
  • 珠海市网络营销协会的官方网站软文推广系统
  • 做网站用什么ps软件sns营销
  • 自适应网站源码郑州新闻发布
  • 书画院网站建设方案漳州seo建站
  • 英语网站都可以做哪些内容买域名要多少钱一个
  • h5制作网站sem广告
  • 静态网站跟动态网站seo需要用到哪些工具
  • 商城网站建设怎么建设网络营销与直播电商专升本