zoukankan      html  css  js  c++  java
  • Java String 类

    JavaString类概述

    字符串广泛应用在Java编程中,在java中字符串属于对象,java提供了String类来创建和操作字符串。

    Java String类的常用构造方法

    public String() 空构造
    public String(byte[] bytes) 将字节数组转化为字符串
    public String(byte[] bytes,int index,int length) 将字节数组的一部分转化为字符串
    public String(char[] value) 将字符数组转换为字符串
    public String(char[] value,int index,int count) 将字符数组的一部分转换为字符串

    public class test {
        public static void main(String[] args) {
            String s1=new String();
            System.out.println(s1);
            
            byte[] a={97,98,99,100};
            String s2=new String(a);
            String s3=new String(a,1,3);
            System.out.println(s2);
            System.out.println(s3);
            
            char[] b={'a','b','c','d'};
            String s4=new String(b);
            String s5=new String(b,0,2);
            System.out.println(s4);
            System.out.println(s5);
            
            String s6=new String("Lily");
            System.out.println(s6);
        }
    }
    输出:
    abcd
    bcd
    abcd
    ab
    Lily
    

    Java String类的判断功能

    boolean equals(Object obj) 比较字符串的内容是否相同,区分大小写
    boolean equalsIgnoreCase(String str) 比较字符串的内容是否相同,忽略大小写
    boolean contains(String str) 判断大字符串中是否包含小字符串
    boolean startWith(String str) 判断字符串是否以某个指定的字符串开头
    boolean endWith(String str) 判断字符串是否以某个指定的字符串结尾
    boolean isEmpty() 判断字符串是否为空

    Java String类的获取功能

    int length() 获取字符串的长度
    char charAt(int index) 获取指定索引位置的字符
    int indexOf(char ch) 返回指定字符在此字符串中第一次出现处的索引
    int indexOf(String str) 返回指定字符串在此字符串中第一次出现处的索引
    int indexOf(char ch,int fromIndex) 返回指定字符在此字符串中从指定位置后第一次出现处的索引
    int indexOf(String str,int fromIndex) 返回指定字符串在此字符串中从指定位置后第一次出现处的索引
    String substring(int start) 从指定位置开始截取字符串,默认到末尾
    String substring(int start,int end) 从指定位置开始到指定位置结束截取字符串

    public class test {
        public static void main(String[] args) {
            String s="Lily";
            for(int i=0;i<s.length();i++)
                System.out.println(s.charAt(i));
        }
    }
    
    输出:
    L
    i
    l
    y
    

    Java String类的转换功能

    byte[] getBytes() 把字符串转换为字节数组
    char[] toCharArray() 把字符串转换为字符数组
    static String valueOf(char[] ch) 把字符数组转换为字符串
    static String valueOf(int i) 把int类型的数据转换为字符串 注意:String类的valueOf方法可以把任意类型的数据转换成字符串
    String toLowerCase() 把字符串转成小写
    String toUpperCase() 把字符串转成大写
    String concat(String str) 把字符串拼接

    Java String类的替换功能

    String replace(char old,char new)
    String replace(String old,String new)

    Java String类的去除字符串空格的功能

    String trim()

    模拟用户登录

    需求:模拟登录,给三次机会,并提示还有几次
    用户名和密码都是admin

    import java.util.Scanner;
    public class test {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            for(int i=0;i<3;i++){
                System.out.println("请输入用户名:");
                String admin=sc.nextLine();
                System.out.println("请输入密码:");
                String passwd=sc.nextLine();
                if(admin.equals("admin")&&passwd.equals("admin")){
                    System.out.println("登录成功!");
                    break;
                }
                else{
                    if(i==2)
                        System.out.println("登录失败,请改天再来!");
                    else
                        System.out.println("登录失败,还有"+(2-i)+"次机会!");
                }
            }
        }
    }
    输出:
    请输入用户名:
    lily
    请输入密码:
    123456
    登录失败,还有2次机会!
    请输入用户名:
    ll
    请输入密码:
    ll
    登录失败,还有1次机会!
    请输入用户名:
    ee
    请输入密码:
    ee
    登录失败,请改天再来!
    

    面试题

    问题1:判断定义为String类型的s1和s2是否相等

    public class test {
        public static void main(String[] args) {
            String s1="abc";  //常量池中没有这个字符串对象,就创建一个,如果有直接用即可
            String s2="abc";   
            System.out.println(s1.equals(s2));  //true
            System.out.println(s1==s2);        //true
            
        }
    }
    

    都输出ture ,因为常量池中当没有对应常量时会创建一个常量,当常量池中有这个常量时,将会直接拿来用这个常量而不会重新创建。
    问题2:下面这句话在内存中创建了几个对象

    String s1=new String("abc");
    

    创建了两个对象,一个在堆中,一个在常量池中。
    问题3:判断定义为String类型的s1和s2是否相等

    public class test {
        public static void main(String[] args) {
            String s1=new String("abc");  //记录的是在堆内存对象的地址值
            String s2="abc";                //记录的是常量池中的地址值
            System.out.println(s1.equals(s2));  //true
            System.out.println(s1==s2);        //false
            
        }
    }
    
    

    问题4:判断定义为String类型的s1和s2是否相等

    public class test {
        public static void main(String[] args) {
            String s1="a"+"b"+"c";  
            String s2="abc";                
            System.out.println(s1.equals(s2));  //true
            System.out.println(s1==s2);        //true  java中有常量优化机制
            
        }
    }
    

    问题5:判断定义为String类型的s1和s2是否相等

    public class test {
        public static void main(String[] args) {
            String s1="ab";     //记录的是在常量池中的地址值
            String s2="abc";     //记录的是在常量池中的地址值
            String s3=s1+"c";    //记录的是在堆内存中的地址值
            System.out.println(s3.equals(s2));  //true
            System.out.println(s3==s2);        //false  
        }
    }
    
    

    内存图如下:

  • 相关阅读:
    《Spring in action 4》(十一)SSM + Redis
    git 上传时报文件已存在的错
    JQuery--find与filter
    初识mysql
    并发--模块整理
    守护进程与守护线程
    用string模块生成随机验证码
    loggin 模块及其单例模式
    TCP协议--黏包现象
    网络编程---tcp/udp协议
  • 原文地址:https://www.cnblogs.com/bbn0111/p/7493663.html
Copyright © 2011-2022 走看看