Java基础——String类

1.String是什么,可以做什么?
        字符串类型,可以定义字符串变量指向字符串对象。
2.String是不可变字符串的原因?
        String变量每次的修改其实都是产生并指向了新的字符串对象。
         原来的字符串对象都是没有改变的,所以称不可变字符串。
3.创建字符串对象的2种方式
        1)直接使用""定义
                String name = "小明";
        2)通过String类的构造器创建对象
                详细方法见API官方文档。
4.字符串对象的特点有哪些?
        以""方式给出的字符串对象,在字符串串常量池中存储,而且相同内容只会在其中存储一份。
        通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。

实例:

public class StringDemo {
    public static void main(String[] args) {
        //直接双引号
        String name = "我爱你";
        System.out.println(name);


        //1.public String():创建一个空白字符串
        String s1= new String();
        System.out.println(s1);

        //2.public String(String)
        String s2 = new String("祥鸿");
        System.out.println(s2);

        //3.public String(char[] c)根据字符数组的内容,来创建字符串对象
        char[] chars = {'a','b','c'};
        String s3 = new String(chars);
        System.out.println(s3);

        //4.public String(byte[] b)根据字节数组的内容,来创建字符串对象
        byte[] bytes = {97,98,99,66,77};
        String s4 = new String(bytes);
        System.out.println(s4);
    }
}


5.如果是字符串比较应该使用什么方式进行比较,为什么?
        使用String提供的equals方法
        只关心内容一样就返回true
6.开发中什么时候用==进行比较?
        基本数据类型比较时。

实例:

public class StringDemo1 {
    public static void main(String[] args) {
        //1.正确登录名和密码
        String okName = "hehe";
        String okPassword = "123456";

        //请您输入登录名称和密码
        Scanner sc = new Scanner(System.in);
        System.out.println("登录名称:");
        String name = sc.next();
        System.out.println("登录密码:");
        String password = sc.next();

        //判断用户输入的登录名称和密码
        //字符串的内容比较不适合用“==”比较
        if (okName.equals(name) && okPassword.equals(password)){
            System.out.println("登录成功");
        }else {
            System.out.println("用户名或者密码错误");
        }

        //忽略大小写比较内容的API:一般用于验证码的业务
        String yz = "aaaa";
        String yz1 = "AAAA";

        System.out.println(yz.equalsIgnoreCase(yz1));
    }
}

常用API实例:

//String常用的API
public class StringDemo2 {
    public static void main(String[] args) {
        //获取字符串长度
        String name = "小红,我爱你";
        System.out.println(name.length());

        //获取某个索引位置处的字符
        char c = name.charAt(1);
        System.out.println(c);

        System.out.println("-------------遍历字符串中盯得每个字符---------");
        for (int i = 0; i < name.length(); i++) {
            char ch = name.charAt(i);
            System.out.print(ch);
        }
        System.out.println();

        //把字符串转化为字符数组
        char[] chars = name.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char ch = chars[i];
            System.out.print(ch);
        }
        System.out.println();

        //截取内容,包前不包后
        String name2 = "Java 真好用";
        String s = name2.substring(0, 4);
        System.out.println(s);

        //从当前索引一直截取到末尾
        String rs = name2.substring(5);
        System.out.println(rs);

        //替换敏感词
        String name3 = "金三胖是最厉害的80后,金三胖厉害";
        String rs1 = name3.replace("金三胖","***");
        System.out.println(rs1);

        //判断是否包含语句
        System.out.println(name3.contains("金"));    //返回true 或 false

        //按照某个内容把字符串分隔成字符串数组并返回
        String name4 = "小红,小亮,小明,小华";
        String[] names = name4.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.print(names[i] + "\t");
        }
    }
}

简易验证码案例:

//使用String完成随机验证码
public class StringExec {
    public static void main(String[] args) {
        //1.定义可能出现的字符
        String data="abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWSYZ0123456789";

        //循环五次,每次生成一个随机索引,提取对应的字符
        Random r = new Random();
        String code = "";
        for (int i = 0; i < 5; i++) {
            //随机一个索引
            int index = r.nextInt(data.length());
            char c = data.charAt(index);
            code += c;
        }

        //输出生成的验证码
        System.out.println(code);
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值