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

Java---String类

String 类的理解和创建对象

        1)String 对象用于保存字符串,也就是一组字符序列

        2)字符串常量对象是用双引号括起的字符序列。例如:"你好"、"12.97"、"luck"等

        3)字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节

        4)String 类较常用构造方法(其他看手册):

  •   String s1 = new String(); //
  •   String s2 = new String(String original);
  •   String s3 = new String(char[] a);
  •   String s4 = new String(char[] a,int startIndex,int count)

        

package com.heima.Hello.String_;public class String01 {public static void main(String[] args) {/*1.String 对象用于保存字符串,也就是一组字符序列2.字符串常量对象是用双引号括起的字符序列。例如:"你好"、"12.97"、"luck"等3.字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节4.String 类较常用构造方法(其他看手册):String s1 = new String(); //String s2 = new String(String original);String s3 = new String(char[] a);String s4 = new String(char[] a,int startIndex,int count)String s5 = new String(byte[] b)5.String 类实现了接口 Serializable [String 可以串行化: 可以在网络传输]接口 Comparable [String 对象可以比较大小]6.String 是 final类,不能被其他的类继承7.String 有属性 private final char value[]; 用于存放字符串内容8.一定要注意: value 是一个final类型,不可以修改(需要功力):即value不能指向新的地址,但是单个字符内容是可以变化的*/String name = "jack";name = "Tom";final char[] value ={'a','b','c'};char[] v2 = {'t','o','m'};value[0] = 'H'; // 单独的修改不会报错// value = v2;  不可以修改 value 地址}
}

两种创建 String 对象的区别

方式一:直接赋值 String s = "edu";

        先从常量池查看是否有"edu"数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s 最终指向的是常量池的空间地址

方式二:调用构造器 String s2 = new String("edu");

        先在堆中创建空间,里面维护了value属性,指向常量池的edu空间。如果常量池没有“edu”,重新创建,如果有,直接通过value指向。最终指向的是堆中的空间地址。

字符串的特性

        1)String是一个 final 类,代表不可变的字符序列

        2)字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的

以上语句创建了两个对象,首先创建了一个 “hello” 对象,运行第二条语句时,会看常量池是否有 “haha”,没有则会创建,指向hello的 s1 指向haha

只创建了一个对象,String a = "hello" + "abc"; // ==> 优化等价 String a = "helloabc";编译器不傻,做一个优化,判断创建的常量池对象,是否有引用指向

package com.heima.Hello.String_;public class StringExercise01 {public static void main(String[] args) {String a = "hello";  // 创建 a 对象String b = "abc";    // 创建 b 对象String c = a + b;// 解读//1. 先创建一个 StringBuilder sb = StringBilider()//2. 执行 sb.append("hello")//3. sb.append("abc")//4. String c = sb.toString()//最后其实是 c 指向堆中的对象(String) value[] -> 池中 “helloabc”}
}

        答:一共有三个对象

String类的常见方法

说明

        String类是保存字符串常量的。每次更新都需要重新开辟空间,效率极低,因此,java设计者还提供了 StringBuilder StringBuffer 来增强String的功能,并提高效率

        常用方法举例

equals // 区分大小写,判断内容是否相等

package com.heima.Hello.String_;public class StringMethod01 {public static void main(String[] args) {String s1 = "hello";String s2 = "Hello";System.out.println(s1.equals(s2)); // 运行结果为 false ,说明区分大小写}
}

equalsgnoreCase //忽略大小写的判断内容是否相等

package com.heima.Hello.String_;public class StringMethod01 {public static void main(String[] args) {// 忽略大小写的判断内容是否相等String username = "john";if ("John".equalsIgnoreCase(username)) {System.out.println("Success");} else {System.out.println("Fail");}}
}

length //获取字符的个数,字符串的长度

package com.heima.Hello.String_;public class StringMethod01 {public static void main(String[] args) {String str1 = "abcdefg";System.out.println(str1.length()); // 返回字符串长度}
}

indexOf  //获取字符在字符串中第1次出现的索引,索引从0开始,如果找不到,返回 -1

package com.heima.Hello.String_;public class StringMethod01 {public static void main(String[] args) {// 忽略大小写的判断内容是否相等String str1 = "abcdefg";System.out.println(str1.length()); // 返回字符串长度}
}

lastIndexOf //获取字符在字符串中最后一次出现的索引,索引从0开始,如找不到,返回 -1

package com.heima.Hello.String_;public class StringMethod01 {public static void main(String[] args) {String s2 = "wer@ter@gmail@2";int index = s2.lastIndexOf('@');System.out.println("字符@在字符中最后一次出现的索引位置: " + index);}
}

substring //截取指定范围的字串

package com.heima.Hello.String_;public class StringMethod01 {public static void main(String[] args) {String name = "hello,张三";System.out.println(name.substring(6));// 截取后面的字符System.out.println(name.substring(0,5)); // 从索引0开始,截取到索引为5的位置,不包括5}
}

trim //去前后空格

charAt //获取某索引处的字符,注意不能使用 Str[index] 这种方式

        例:String str = "hello"  //要取其中的字符 “h” 

           //  String[0] 这种方式不对

           //  str.charAt(0) => h  这种方式才对

toUpperCase // 转换成大写,如果字符里本身就有大写字符,还是保持大写

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {String s = "hello";System.out.println(s.toUpperCase()); // HELLO}
}

toLowerCase // 转换成小写,如果字符里本身就有小写字符,还是保持小写

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {String s = "HELLO";System.out.println(s.toLowerCase()); // hello}
}

concat // 拼接字符串

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {String s1 = "宝玉";s1 = s1.concat("林黛玉").concat("薛宝钗").concat("together");System.out.println(s1);}
}

replace // 替换字符串中的字串(s1.replace() 方法执行后,返回的结果才是替换过的,注意:对s1没有任何影响,下面示例代码有影响是因为又用s1接收了一下)

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {String s1 = "宝玉 and 林黛玉 林黛玉 林黛玉";s1 = s1.replace("林黛玉","薛宝钗"); // 把原来字符串里的“林黛玉”替换为“薛宝钗”System.out.println(s1); // 结果: 宝玉 and 薛宝钗 薛宝钗 薛宝钗}
}

split  // 分割字符串,对于某些分割字符,我们需要转义,比如 | \\ 等

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {String poem1 = "锄禾日当午,汗滴禾下土,谁之盘中餐,粒粒皆辛苦";String poem2 = "E:\\aaa\\bbb";// 1.以,为标准对poem进行分割,返回一个数组// 2.在对字符串进行分割时,如果有特殊字符,需要加入 转义符 \String[] split = poem1.split(",");System.out.println("===分割后的诗句===");for (int i = 0; i < split.length; i++) {System.out.println(split[i]);}System.out.println("========================");String[] split2 = poem2.split("\\\\"); // \ 前加一个 转义字符 \ ,才能表示 \for (int j = 0; j < split2.length; j++) {System.out.println(split2[j]);}}
}

compareTo // 比较两个字符串的大小

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {// compareTo 比较两个字符串的大小,如果前者大// 则返回正数,后者大,则返回负数,如果相等,返回0String a = "jcck";String b = "jack";System.out.println(a.compareTo(b)); // 返回值是 'c' - 'a' = 2 的值}
}

toCharArray // 转换成字符数组

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {// compareTo 比较两个字符串的大小,如果前者大// 则返回正数,后者大,则返回负数,如果相等,返回0// (1) 如果长度相同,并且每个字符也相同,就返回 0// (2) 如果长度相同或者不相同,但是在进行比较时,可以区分大小//   就返回 if (c1 != c2) {//              return c1 - c2;//   }// (3) 如果前面的部分都相同,就返回 str1 - str2String a = "jcck";String b = "jack";System.out.println(a.compareTo(b)); // 返回值是 'c' - 'a' = 2 的值}
}

format // 格式字符串,%s 字符串 %c字符串 %d 整型 %.2f 浮点型

package com.heima.Hello.String_;public class StringMethod02 {public static void main(String[] args) {String name = "Henry";int age = 22;double score = 95.5;char gender = '男';// 将所有的信息都拼接在一个字符串String info ="我的姓名是" + name + ",年龄是" + ",成绩是" + score + ",性别是" + gender + "。希望大家喜欢我!";System.out.println(info);// 1. %s , %d , %.2f , %c 称为占位符// 2. 这些占位符由后面变量来替换// 3. %s 表示后面由字符串来替换// 4. %d 是整数来替换// 5. %.2f 表示使用小数来替换,替换后,只会保留小数点后两位,并且进行四舍五入的处理// 6. %c 使用char 类型来替换String formatStr = "我的姓名是%s 年龄是%d, 成绩是%.2f 性别是%c。希望大家喜欢我!";String info2 = String.format(formatStr, name, age, score, gender);System.out.println("info2 = " + info2);}
}

http://www.dtcms.com/a/528934.html

相关文章:

  • Flame 中使用 GameWidget(完整使用手册)
  • html5制作手机网站做淘宝代码的网站
  • P2216 [HAOI2007] 理想的正方形
  • 设计模式23种-C++实现
  • 涌现的架构:集体智能框架构建解析
  • 大模型技术的核心之“效率高”
  • 分类网站怎么做seo什么网站出项目找人做
  • Unity 3D笔记(进阶部分)——《B站阿发你好》
  • 怎样建设好网站如何评判一个网站建设的怎么样
  • 【017】旅游网
  • 两款实用电脑工具:屏幕监控与文件整理,提升工作效率
  • 用php做的网站有写软文怎么接单子
  • temu跨境电商厦门seo俱乐部
  • unity实现2D人物从上面踩踏敌人,敌人减血的简易方法(类似马里奥的攻击手段)
  • Spring AI 1.0 核心功能脉络
  • 【清除 Mac DNS 缓存】Mac 电脑能访问外网却无法加载特定页面?你的 DNS 缓存“发霉”了!
  • 局域网手机/平板无数据线传输文件-通过网络传输LocalSend
  • 网站开发时ie11的兼容网站开发的prd 怎么写
  • 电分:无功、有功,功率因数
  • Spring Bean作用域全解析
  • 网页制作与网站建设wordpress插件库
  • 【参赛心得】HarmonyOS创新赛获奖秘籍:如何用Stage模型和声明式UI打造高分作品
  • 我的班级网站模板糖果屋网站建设策划书
  • 【开题答辩实录分享】以《幼儿园信息管理系统设计与开发》为例进行答辩实录分享
  • C++ STL简介:从原理到入门使用指南
  • 青州网站建设公司页游平台排行榜
  • 哪些网站可以做设计软件重庆知名商城网站建设公司
  • 做预算查价格的网站是哪个好深圳做网站哪里好
  • 权重初始化方法详解
  • 三门峡建设环境局网站点击立即进入正能量网站