Java (六、String类和StringBuffer)
Java String 类
// ==比较的是字符串在栈中存放的首地址,而equals()比较的是两个字符串的内容是否相同
//普通的声明字符串的方法,只会在字符串常量池里开辟空间,并且开辟空间之前,会检查字符串常量池里是否已存在
//相同的数据,如果有,直接指向已存在的数据,如果没有会在字符串常量池里开辟一个新的空间
String s = "ccy";
String s2 ="ccy";
System.out.println(s == s2);
System.out.println(s.equals(s2)); //实例化声明字符串的方法,会先在堆中存放数据,将数据的首地址保存在栈内,然后检查字符串常量池是否存在
//相同的数据,如果没有则会在字符串常量池中开辟一个新的空间来存放字符串数据,如果有则声明完毕。
String s3 = new String("jredu");
String s4 = new String("jredu");
System.out.println(s3 == s4);
System.out.println(s3.equals(s4)); String s5 = "jereh";
String s6 = new String("jereh");
System.out.println(s5 == s6);
System.out.println(s5.equals(s6));
运行图:
关于字符串在内存空间中存放的示例图:
String 方法:
1、字符串长度
String string = new String("字符串长度");
int length = string.length();
System.out.println(length);
运行图:
2、连接字符串
下面是一个例子:
public class Demo06 {
public static void main(String[] args) {
String s = new String("张三,");
String hello = new String("你好!");
String sentence = s.concat(hello);
System.out.println(sentence);
}
}
运行图:
3、分割字符串成数组
package day6;
import java.util.Arrays;
public class Demo09 {
public static void main(String[] args) {
String sing = "长亭外 古道边 芳草碧连天 晚风拂柳笛声残 夕阳山外山 ";
String[] printsing;
printsing = sing.split(" ");
System.out.println(Arrays.toString(printsing));
}
}
运行图:
4、 toUpperCase()让小写的字符串变为大写的字符串
toLowerCase()让大写的字符串变为小写的字符串
equalsIgnoreCase()字符串忽略大小写进行比较
例子:
public class test {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "ABC";
String s3 = s1.toUpperCase();
String s4 = s2.toLowerCase();
System.out.println(s3);
System.out.println(s4);
System.out.println(s1.equals(s4));
System.out.println(s2.equals(s3));
System.out.println(s1.equalsIgnoreCase(s2));
}
}
运行图:
5、其他常用的方法
public class Demo08 {
public static void main(String[] args) {
String s = "我爱北京天安门!天安门上太阳升!";
//indexOf()获取字符串中某个字符或字符串首次出现的位置,若没有出现则返回-1
System.out.println(s.indexOf("天"));
//lastIndexOf()获取字符串中某个字符或字符串最后一次出现的位置,若没有出现则返回-1
System.out.println(s.lastIndexOf("天"));
//substring()从字符串的那个索引开始截取,获得一个新的字符串
String newS = s.substring(8);
System.out.println(newS);
//两个参数的第一个参数是截取开始的位置(包含),第二个参数是结束的位置(不包含)
String newS3 = s.substring(2, 4);
System.out.println(newS3);
//trim()去掉字符串或者字符前后的空格
String s2 = " 杰 瑞 教 育 ";
String newS4 = s2.trim();
System.out.println(s2);
System.out.println(newS4);
}
}
运行图:
StringBuffer 类
StringBuffer的创建
StringBuffer sBuffer = new StringBuffer("青春无悔");
System.out.println(sBuffer);
运行图:
StringBuffer和String的区别:
public static void main(String[] args) {
String s = "conversion"
//String ---> StringBuffer
StringBuffer sb = new StringBuffer(s);
//StringBuffer ---> String
String s2 = sb.toString();
System.out.println(sb);
System.out.println(s2);
scanner.close();
}
运行图:
StringBuffer的常用方法:
a、append(string s)将指定的字符串追加到此字符序列。
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer("abcde");
buffer.append("f");
System.out.println(buffer);
}
运行图:
b、 reverse() 将此字符序列用其反转形式取代。
public static void main(String[] args) {
StringBuffer sBuffer = new StringBuffer("abcde");
sBuffer.reverse();
System.out.println(sBuffer);
}
运行图:
c、 delete(int start, int end) 移除此序列的子字符串中的字符。
public class Demo04 {
public static void main(String[] args) {
StringBuffer sBuffer = new StringBuffer("abcde");
sBuffer.delete(1, 3);
System.out.println(sBuffer);
}

d、 insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。
public static void main(String[] args) {
StringBuffer sBuffer = new StringBuffer("abcde");
sBuffer.insert(2,"!");
System.out.println(sBuffer);
}
运行图:
e、replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。
public static void main(String[] args) {
StringBuffer sBuffer = new StringBuffer("abcde");
sBuffer.replace(1, 4,"*");
System.out.println(sBuffer);
}
运行图:
Java (六、String类和StringBuffer)的更多相关文章
- 【java】String类和StringBuffer类常用操作
String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于Stri ...
- 1.2 JAVA的String类和StringBuffer类
一.String 1.String概念 String不属于基本类型,String是final修饰的是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了如果要对String修改使用 ...
- Java 常用类String类、StringBuffer类
常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...
- java.lang.String 类的所有方法
java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...
- 深入分析Java的String类的方法与特点
字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 ...
- java 中String类的常用方法总结,带你玩转String类。
String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...
- String类,StringBuffer类转字符数组
String不可变类型和StringBuffer可变类型 String类和StringBuffer类都是字符串表示类,区别在于String对象引用变量是不可变的,而StringBuffer类对象引用变 ...
- java中String类为什么不可变?
在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...
- 在java中String类为什么要设计成final?
大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...
- java 中String类的常用方法总结,玩转String类
String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...
随机推荐
- C++对象模型(四):class成员初始化列表(Member Initialization List)
本文是Inside C++ Object Model Chapter 2 部分的读书笔记. 编译器如何处理初始化成员列表的. 下列情况中,必须要使用member initialization list ...
- WebStorm开发工具设置React Native智能提示
最近在做React Native开发的时候,相信大家一般会使用WebStorm,Sublime,Atom等等开发工具.二之前搞前端的对WebStorm会很熟悉,WebStorm最新版是WebStorm ...
- Android调试工具之ADB
Android调试工具之ADB 1. 什么是ADB adb的全称为Android Debug Bridge,顾名思义,这个是PC机与Android设备的连接桥.简单的说,就是通过adb ,PC ...
- startService与bindService的区别
转自:http://www.devdiv.com/thread-52226-1-1.html Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDes ...
- 【生活随笔】Introspection of my life in 2014
2014年已过去两星期,有写年度总结的必要了.今天特意看了看去年1月5日写的2013年度总结,看看都有些什么变化.我发现每年作一次总结是很有必要的,无赖恰逢考试周,连元旦都不能好好过,更不用说写 ...
- 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含着CPU的生产日期,版本号,型号等等,那么,在我们的这款友善之臂Tiny4412的板子上,我的这个CPU的ID又是多少呢?从我 ...
- 记——加快gradle 构建速度的经验
Gradle作为一个新的构建系统,无疑在灵活,扩展,跨平台等各方面都表现得非常优秀,然而,它也有一点备受吐槽,就是速度慢.以下为本人使用gradle过程中,几次加快gradle构建速度的经验之谈. 本 ...
- java--加强之 类加载器,动态代理
转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9944561 ***************************************** ...
- C语言算法---求鞍点
题目:有一个3X4矩阵,要求输出其鞍点(行列均最大的值),以及它的行号和列号. int a[3][4] = {{123,94,-10,218}, {3 ...
- obj-c编程18:多对多的观察者模式
我们知道使用委托的设计模式可以实现一对一的通知关系,但是如果需要通知多个观察者状态变化又该如何呢?此时,需要实现观察者模式之类的内容,而不是实现委托者一对一的模式. 观察者模式定义了一个对象可以将另一 ...