String类

在开发和校招笔试中,字符串是常客,比如:

字符串转整形数字、字符串相加。String、StringBuff、StringBulider

目录

一、常用方法 

字符串的构造

 2.String对象的比较

 3.字符串的查找

 4.转化


一、常用方法 

  1. 字符串的构造

    //字符串的构造常用有以下三种方式
    public class ConstructString {
        public static void main(String[] args) {
            //使用常量串构造
            String s1="hello bit";
            System.out.println(s1);
            //直接newString对象(通过构造方法)
            String s2=new String("hello");
            System.out.println(s2);
            //使用字符数组进行构造
            char[] array={'H','e','l','l','o'};
            String s3=new String(array);
            System.out.println(s3);//Hello
    
        }
    }
    

    注意:Sting是引用类型,内部并不存储字符串本身,在string类的实现源码中,String类实例变量如下;

     在java中""引起来的也是String类型对象

    System.out.println("hello".length);

使用以下例子说明:

 String s1=new String("hello");//获取字符串的长度--输出5
        String s2=new String("world");
        String s3=s1;
        System.out.println(s1.length());
        System.out.println(s2.length());
        System.out.println(s1.isEmpty());//如果字符串长度为0,返回true,否则返回false

 2.String对象的比较

  1. ==比较是否引用同一个对象

 注意:对于内置类型,==比较的是变量中的值;对于引用类型==比较的是引用中的地址。

public static void main ( String [] args ) {
int a = 10 ;
int b = 20 ;
int c = 10 ;
// 对于基本类型变量, == 比较两个变量中存储的值是否相同
System . out . println ( a == b ); // false
System . out . println ( a == c ); // true
// 对于引用类型变量, == 比较两个引用变量引用的是否为同一个对象
String s1 = new String ( "hello" );
String s2 = new String ( "hello" );
String s3 = new String ( "world" );
String s4 = s1 ;
System . out . println ( s1 == s2 ); // false
System . out . println ( s2 == s3 ); // false
System . out . println ( s1 == s4 ); // true
}

2. boolean equals(Object anObject) 方法:按照字典序比较
字典序:字符大小的顺序
String 类重写了父类 Object equals 方法, Object equals 默认按照 == 比较, String 重写 equals 方法后,按照
如下规则进行比较,比如: s1.equals(s2)
public boolean equals ( Object anObject ) {
// 1. 先检测 this anObject 是否为同一个对象比较,如果是返回 true
if ( this == anObject ) {
return true ;
}
// 2. 检测 anObject 是否为 String 类型的对象,如果是继续比较,否则返回 false
if ( anObject instanceof String ) {
// anObject 向下转型为 String 类型对象
String anotherString = ( String ) anObject ;
int n = value . length ;
// 3. this anObject 两个字符串的长度是否相同,是继续比较,否则返回 false
if ( n == anotherString . value . length ) {
char v1 [] = value ;
char v2 [] = anotherString . value ;
int i = 0 ;
// 4. 按照字典序,从前往后逐个字符进行比较
while ( n -- != 0 ) {
if ( v1 [ i ] != v2 [ i ])
return false ;
i ++ ;
}
return true ;
}
}
return false ;
}
注意;equals是区分大小写的比较

3. int compareTo(String s) 方法 : 按照字典序进行比较
equals 不同的是, equals 返回的是 boolean 类型,而 compareTo 返回的是 int 类型。具体比较方式:
1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
2. 如果前 k 个字符相等 (k 为两个字符长度最小值 ) ,返回值两个字符串长度差值

3.int compareToIgnoreCase(String str) 方法:与compareTo方式相同,但是忽略大小写比较

public static void main ( String [] args ) {
String s1 = new String ( "abc" );
String s2 = new String ( "ac" );
String s3 = new String ( "abc" );
String s4 = new String ( "abcdef" );
System . out . println ( s1 . compareTo ( s2 )); // 不同输出字符差值 -1
System . out . println ( s1 . compareTo ( s3 )); // 相同输出 0
System . out . println ( s1 . compareTo ( s4 )); // k 个字符完全相同,输出长度差值 -3

 3.字符串的查找

public static void main ( String [] args ) {
String s = "aaabbbcccaaabbbccc" ;
System . out . println ( s . charAt ( 3 )); // 'b'
System . out . println ( s . indexOf ( 'c' )); // 6
System . out . println ( s . indexOf ( 'c' , 10 )); // 15
System . out . println ( s . indexOf ( "bbb" )); // 3
System . out . println ( s . indexOf ( "bbb" , 10 )); // 12
System . out . println ( s . lastIndexOf ( 'c' )); // 17
System . out . println ( s . lastIndexOf ( 'c' , 10 )); // 8
System . out . println ( s . lastIndexOf ( "bbb" )); // 12
System . out . println ( s . lastIndexOf ( "bbb" , 10 )); // 3

 4.转化

  1. 数值和和字符串的转化(其他类型转为字符串类型,调用valueof方法)

public class ConstructString {
    public static void main(String[] args) {
        //数值转为字符串
        String s1=String.valueOf(1234);
        String s2=String.valueOf(12.34);
        String s3=String.valueOf(true);
        String s4=String.valueOf(new Student("Haomeimei",18));
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);//true
        System.out.println(s4);//superstudy.Student@1b6d3586
    }
}
// 字符串转数字
// 注意: Integer Double 等是 Java 中的包装类型,这个后面会讲到
int data1 = Integer . parseInt ( "1234" );
double data2 = Double . parseDouble ( "12.34" );
System . out . println ( data1 );
System . out . println ( data2 );
2. 大小写转换
3. 字符串转数组
4. 格式化
2.5 字符串替换
使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:
System . out . println ( s3 );
System . out . println ( s4 );
System . out . println ( "=================================" );
// 字符串转数字
// 注意: Integer Double 等是 Java 中的包装类型,这个后面会讲到
int data1 = Integer . parseInt ( "1234" );
double data2 = Double . parseDouble ( "12.34" );
System . out . println ( data1 );
System . out . println ( data2 );
}
public static void main ( String [] args ) {
String s1 = "hello" ;
String s2 = "HELLO" ;
// 小写转大写
System . out . println ( s1 . toUpperCase ());
// 大写转小写
System . out . println ( s2 . toLowerCase ());
}
public static void main ( String [] args ) {
String s = "hello" ;
// 字符串转数组
char [] ch = s . toCharArray ();
for ( int i = 0 ; i < ch . length ; i ++ ) {
System . out . print ( ch [ i ]);
}
System . out . println ();
// 数组转字符串
String s2 = new String ( ch );
System . out . println ( s2 );
}
public static void main ( String [] args ) {
String s = String . format ( "%d-%d-%d" , 2019 , 9 , 14 );
System . out . println ( s );
}
//格式化
public static void main ( String [] args ) {
String s = String . format ( "%d-%d-%d" , 2019 , 9 , 14 );
System . out . println ( s );
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值