zoukankan      html  css  js  c++  java
  • 找工作String类(重点,背诵)(本质是一个类)

      一个顶层设计者眼中只有2个东西接口,类(属性,方法)

    无论String 类 , HashMap实现类 , Map接口

     

    String str = "Hello" ;    // 定义字符串,工作中就用这个方法,另外的一个方法不用

      对于String而言肯定是一个类,str应该就是这个类的对象,能够点出来这个类的方法。

    String毕竟是一个类,那么类之中一定会存在构造方法,String类的构造:public String(String str)

     String str = new String("Hello") ;   // 定义字符串

    可以通过构造方法为String类对象实例化。

     

     

    面试题:请解释字符串比较之中“==”和equals()的区别?

             · ==:比较的是两个字符串内存地址的数值是否相等,属于数值比较;

             · equals():比较的是两个字符串的内容,属于内容比较。

             以后进行字符串相等判断的时候都使用equals()

     

     

     

    public class StringDemo {

             public static void main(String args[]) {

                       String str = null ;          // 假设是输入的

                       if (str.equals("Hello")) {

                                System.out.println("条件满足。") ;

                       }

             }

    }

    Exception in thread "main" java.lang.NullPointerException

            at StringDemo.main(StringDemo.java:4)

             而如果说现在将代码反过来操作:

     

     

    public class StringDemo {

             public static void main(String args[]) {

                       String str = null ; // 假设是输入的

                       if ("Hello".equals(str)) {

                                System.out.println("条件满足。") ;

                       }

             }}

             因为字符串常量就是一个匿名对象,匿名对象永远不可能为null,这样的比较才更加的合理。

     

     

    String类的两种实例化方式的区别

    在String类进行设计的时候采用了一种称为共享设计模式的概念

    如果用户采用了直接赋值的方式,会将字符串的内容放入到池之中,以供其他继续使用直接赋值方式的String对象使用,如果新声明的字符串内容不再池之中,则会开辟一个新的,继续放到池,以供下次使用

       public static void main(String args[]) {

                       String str1 = new String("Hello") ;

                       String str2 = "Hello" ;  // 入池

                       String str3 = "Hello" ;  // 使用池对象

                       System.out.println(str1 == str2) ;    // false

                       System.out.println(str1 == str3) ;    // false

                       System.out.println(str2 == str3) ;    // true

             }

     

     

    面试题:请解释String类的两种对象实例化方式的区别?

             · 直接赋值:只开辟一块堆内存空间,字符串的内容可以自动入池,以供下次使用;

             · 构造方法:开辟两块堆内存空间,有一块将成为垃圾,并且不能自动入池,使用intern()手工入池。

             在日后的所有开发之中,String对象的实例化永远都采用直接赋值的方式完

     

    字符串的内容一旦声明则不可改变

    String str = "Hello " ;
    str += "World " ;
    str= str + "!!!" ;
    System.out.println(str) ;

    输出:

    Hello World !!!

    字符串内容的更改,实际上改变的是字符串对象的引用过程,并且会伴随有大量的垃圾出现

    3.2String类的常用方法(重点,背

             String类除了之前所介绍的两个方法之外,还存在着大量的其他操作,考虑到String类在实际的工作之中使用非常的广泛,那么就建议大家都背下来,以下所讲解的每一个方法:记住方法的名称、返回值类型、参数的类型及个数、方法的作用

     

    3.2.1 、字符串与字符

             在很多的语言之中,都强调,字符串由字符数组所组成,那么这一概念在Java的String类之中也有体现。

    No.

    方法名称

    类型

    描述

    1

    public String(char[] value)

    构造

    将全部的字符数组内容变为字符串

    2

    public String(char[] value, int offset, int count)

    构造

    将部分字符数组变为字符串,offset表示开始点,count表示要操作的长度

    3

    public char charAt(int index)

    普通

    取得指定索引位置上的字符

    4

    public char[] toCharArray()

    普通

    将字符串转换为字符数组

     

     

     

     

    范例:验证charAt()方法,这个方法是一个标志性方法

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "helloworld" ;

                       char c = str.charAt(7) ;

                       System.out.println(c) ;

             }

    }

     

     

     

    范例:字符串和字符数组转换,完成一个小写字符串变为大写字符串的操作,小写字母和大写字母差了32

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "helloworld" ;

                       char data [] = str.toCharArray() ;     // 字符串变为字符数组

                       for (int x = 0 ; x < data.length ; x ++) {

                                System.out.print(data[x] + "、") ;

                                data [x] -= 32 ;    // 变大写

                       }

                       System.out.println() ;

                       System.out.println("全部字符数组变为字符串:" + new String(data)) ;

                       System.out.println("部分字符数组变为字符串:" + new String(data,0,5)) ;

             }

    }

     

    char data [] = {76 , 79 , 86 , 69 , 'A'} ;
    System.out.println(new String(data)); //输出 : LOVEA

     

    2 、字符串与字节

    String str = "abc" ;
    byte data [] = str.getBytes() ; // 字符串变为字节数组
    System.out.println(Arrays.toString(data));

    // 输出  [97, 98, 99]

    人造字符串:

    byte data [] = {76 , 79 , 86 , 69} ;
    System.out.println(new String(data));  // 自己编程的,LOVE

             字符串除了与字符可以互相转换之外,还可以和字节互相转换,操作方法:

    No.

    方法名称

    类型

    描述

    1

    public String(byte[] bytes)

    构造

    将全部的字节数组变为字符串

    2

    public String(byte[] bytes, int offset, int length)

    构造

    将部分的字节数组变为字符串

    3

    public byte[] getBytes()

    普通

    将字符串变为字节数组

    4

    public byte[] getBytes(String charsetName) throws UnsupportedEncodingException

    普通

    字符串转码操作

     

             一般情况下,在程序之中如果要想操作字节数组只有两种情况:

     

                       · 情况一:需要进行编码的转换时;

                        情况二:数据要进行传输的时候。

     

     

     

    3 、字符串比较

          范例:equals()方法

    public class StringDemo {

             public static void main(String args[]) {

                       String str1 = "helloworld" ;

                       String str2 = "HELLOWORLD" ;

                       System.out.println(str1.equals(str2)) ;

                       System.out.println(str1.equalsIgnoreCase(str2)) ;

             }

    }

             如果现在要想比较两个字符串的大小关系,那么就必须使用compareTo()方法完成,而这个方法返回int型数据,而这个int型数据有三种结果:大于(返回结果大于0)、小于(返回结果小于0)、等于(返回结果为0

    范例:比较大小compareTo()方法,C语言方法同

    System.out.println("a".compareTo("b"));    //     输出-1

    public class StringDemo {

             public static void main(String args[]) {

                       String str1 = "Helloworld" ;

                       String str2 = "HELLOWORLD" ;

                       System.out.println(str1.compareTo(str2)) ;

                       System.out.println("Hello".compareTo("Hello")) ;

             }

    }

             对于compareTo()方法一定要记住其返回的类型,以后还会有其他的深入讲解。

     

     

     

     

     

    4 、字符串查找

          

    No.

    方法名称

    类型

    描述

    1

    public boolean contains(String s)

    普通

    查找指定的子字符串是否存在,JDK 1.5之后有

    2

    public int indexOf(String str)

    普通

    从头查找指定字符串的位置,找不到返回-1

    3

    public int indexOf(String str, int fromIndex)

    普通

    由指定位置向后查找字符串的位置,找不到返回-1

    4

    public int lastIndexOf(String str)

    普通

    由后向前查找字符串的位置,找不到返回-1

    5

    public int lastIndexOf(String str, int fromIndex)

    普通

    从指定位置由后向前查找

    6

    public boolean startsWith(String prefix)

    普通

    判断是否以指定的字符串开头

    7

    public boolean startsWith(String prefix, int toffset)

    普通

    从指定位置判断是否以指定字符串开头,JDK 1.7

    8

    public boolean endsWith(String suffix)

    普通

    判断是否以指定的字符串结尾

     

     

     

    范例:判断开头和结尾操作

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "**@@hello##" ;

                       System.out.println(str.startsWith("**")) ;

                       System.out.println(str.startsWith("@@",2)) ;

                       System.out.println(str.endsWith("##")) ;

             }

    }

     

     

     

    范例:使用contains()方法查找字符串是否存在,直接返回boolean,用于各种的执行判断

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "helloworld" ;

                       System.out.println(str.contains("hello")) ;

                       System.out.println(str.contains("xx")) ;

             }

    }

     

     

     

    3.2.5 、字符串替换操作

             Oracle中的替换函数是replace(),那么String类之中的替换操作有如下几个方法:

    No.

    方法名称

    类型

    描述

    1

    public String replaceAll(String regex, String replacement)

    普通

    全部替换

    2

    public String replaceFirst(String regex, String replacement)

    普通

    替换首个

    范例:验证两个替换操作

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "Hello World ." ;

                       System.out.println(str.replaceAll("l","_")) ;       // He__o Wor_d .

                       System.out.println(str.replaceFirst("l","_")) ;     // He_lo World .

             }

    }

     

     

     

    6 、字符串截取

             Oracle的截取是substr()函数,这个函数在使用的时候下标从0或1开始都是可以的,不过程序之中只能从0开始,而且不能设置为负数。

    No.

    方法名称

    类型

    描述

    1

    public String substring(int beginIndex)

    普通

    从指定位置截取到结尾

    2

    public String substring(int beginIndex, int endIndex)

    普通

    截取指定范围的内容

    范例:字符串截取

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "Hello World ." ;

                       System.out.println(str.substring(6)) ;       

                       System.out.println(str.substring(0,5)) ;    

             }

    }

     

    7 、字符串拆分

             所谓的拆分操作指的就是按照一个指定的字符串标记,对一个完整的字符串进行分割。如果要完成拆分操作,可以使用的方法如下:

    No.

    方法名称

    类型

    描述

    1

    public String[] split(String regex)

    普通

    按照指定的字符串全拆分

    2

    public String[] split(String regex, int limit)

    普通

    拆分为指定的长度

    范例:完成全拆分

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "Hello World !!!" ;

                       String result [] = str.split(" ") ;

                       for (int x = 0 ; x < result.length ; x ++) {

                                System.out.println(result[x]) ;

                       }

             }

    }

     

    范例:现在要求拆分IP地址

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "192.168.1.1" ;

                       String result []= str.split("\.") ;

                       for (int x = 0 ; x < result.length ; x ++) {

                                System.out.println(result[x]) ;

                       }

             }

    }

    提示:以后在进行字符串拆分的时候,如果遇见拆不开的问题,就使用“\”

     

     

     

     

     

     

     

    8 、其他方法

             以上是一些可以分类的功能性的方法,但是在String类中还有一些无法分类的方法,下面统一列出。

    No.

    方法名称

    类型

    描述

    1

    public boolean isEmpty()

    普通

    判断是否为空字符串(""

    2

    public int length()

    普通

    取得字符串长度

    3

    public String trim()

    普通

    去掉左右空格

    4

    public String toLowerCase()

    普通

    将全部字符串转小写

    5

    public String toUpperCase()

    普通

    将全部字符串转大写

    6

    public String intern()

    普通

    入池

    7

    public String concat(String str)

    普通

    字符串连接

    范例:取得字符串长度和是否为空

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "hello" ;

                       System.out.println(str.isEmpty()) ;  // false

                       System.out.println("".isEmpty()) ;  // true

                       System.out.println(str.length()) ;

                      System.out.println("  Hello  ".length()) ; // 空格也计算

             }

    }

    范例:使用trim()去掉空格

    public class StringDemo {

             public static void main(String args[]) {

                       String str = "   hello  " ;

                       System.out.println("字符串内容:〖" + str + "〗") ;

                       System.out.println("字符串内容:〖" + str.trim() + "〗") ;

                       // 对象.方法().方法().方法()...代码链,看每个方法的返回值

                       System.out.println("字符串长度:" + str.trim().length()) ;

             }

    }

                       String s = str.trim () ;

                       int len = s.length() ;

                       System.out.println("字符串长度:" + len) ;

     

  • 相关阅读:
    HDFS架构原理
    Hadoop集群搭建
    解决8080端口号占用问题
    基于SSM的Maven项目(Redis和Mysql)配置文件整合
    maven 集成SSM项目配置文件模版
    初识Spring笔记
    初识Mybatis一些总结
    将对数据库的增删改查封装为方法
    10分钟安装Elasticsearch
    ThreadLocal详解
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/8453318.html
Copyright © 2011-2022 走看看