2022-7-20 顾宇佳 学习笔记

学习目标:

掌握今日所学内容并复习以前的内容


学习内容:

1.String方法

2.包装器的类型


学习时间:

2022.7.20


学习产出:

  • 技术笔记 1 遍
  • CSDN 技术博客 1 篇
  • 案例2个

String方法

String字符串, String是一个类。
String一旦声明不可改变!!!
String s1 = "abcdefg";
 // String既然是一个类,s1应该叫做String类的对象
        // 类如果要创建对象,new,s1并没有new,s1也可以叫做对象

String s2 = new String("abcdefg");
 //s2是通过new创建出来的String类的对象
        // 创建对象是要调用构造器
 //s1指向的abcdefg和s2指向的abcdefg不在同一个区域内
         */
        // 双等号比较的是虚地址
        // 虚地址:对象在内存中的存储位置
        System.out.println(s1 == s2);
 =赋值,无论怎么比较,都是true
            new赋值,用双等号比较,就是false

1.比较字符串内容

equals方法

1.需要传参,传String类型的参数
2.有返回值,返回值是boolean类型
3.访问权限public
 Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串1:");
        String s3 = sc.next();
        System.out.println("请输入字符串2:");
        String s4 = sc.next();
 System.out.println(s3.equals(s4));

2.字符串获取长度的方法

length方法
1.不需要传参
2.有返回值,整型int
3.访问权限public
 String s1 = "abcdefg";
System.out.println(s1.length());

字符串是由字符拼接成的串

面试题:
字符串获取长度的方法和数组获取长度有什么区别?
1.数组的length是属性,字符串的length()是方法

3.取出指定下标位置的字符

charAt()方法

 String s1="abcdefg";
        System.out.println(s1.charAt(0));

4.判断字符串是否存在

1.判断指定字符串是否存在,返回值为字符串在s1的下标,返回的是int类型,返回从左到右遇到的第一个匹配的下标,如果不存在返回-1
2. indexOf(String,int)代表从int位置开始查找,包括当前位置
* 下标就是从左向右
   String s1="abcdefg";
       System.out.println(s1.indexOf("a"));
//        从后向前找
        System.out.println(s1.lastIndexOf("a",12));

案例一:

统计一个字符串在另一个字符串中出现的次数!!!
 
public class Ch05_Demo {

    public int sum(String target,String str) {
        int count = 0;
         b在s1中出现了多少次?
       
        int i = 0;
        while(i < str.length()) {
            int i1 = str.indexOf(target,i);
            if(i1 != -1){
                count++;
                i = i1 + 1;
            } else {
                i++;
            }
        }
        return count;
    }

    public static void main(String[] args) {
        Ch05_Demo c = new Ch05_Demo();
        System.out.println(c.sum("b", "abcdefgabcdaaa"));

5.字符串的截取 


            如果传一个参数,从指定位置开始截取,直到字符串的末尾,包括起始位置的字符
            生成一个新的字符串,不会改变原有数据
   

String str = "abcdefghijklmn";
      
        String s = str.substring(1);
        // bc or b
        // 包含起始位置,不包含终止位置
        s = str.substring(1,2);
        System.out.println(s);
    }

案例二 

键盘上输入身份证号,
    性别,生日。
 public String getGender(String cardId){
        String gender = "男";
        int genderNum =cardId.charAt(16);
        if(genderNum % 2 == 0){
            gender = "女";
        }
        return gender;
    }

    public String getBirthday(String cardId) {
        return cardId.substring(6, 14);
    }

    public static void main(String[] args) {
        Ch06_Demo c = new Ch06_Demo();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入身份证号:");
        String cardId = sc.next();
        if(cardId.length() == 18) {
//            String birthday = c.getBirthday(cardId);
//            String gender = c.getGender(cardId);
//            String birthday = cardId.substring(6,14);
//            String gender = "男";
//            int genderNum =cardId.charAt(16);
//            if(genderNum % 2 == 0){
//                gender = "女";
//            }
            System.out.println("身份证号为:" + cardId + ",生日:"
                    + c.getBirthday(cardId) + ",性别:" + c.getGender(cardId));
        }else{
            System.out.println("输入有误,请重新输入!");
        }
    }

String类的其他方法

 String str = "abcdEFG";
        String str1 = "        ABCDEFG          ";
        String str2 = "123,456,789,00";
        /*
            下面所有的方法都是返回一个新的字符串
         */
        // 转大写
        System.out.println(str.toUpperCase());
        // 转小写
        System.out.println(str.toLowerCase());
        // 判断是否以xxxx开头
        System.out.println(str.startsWith("a",2));
        // 判断是否以xxxx结尾
        System.out.println(str.endsWith("F"));
        // 忽略大小写进行比较内容
        // 验证码
        System.out.println(str.equalsIgnoreCase(str1));
        // 去掉字符串前后的空格
        System.out.println(str1.trim());
        // 根据指定的字符分割,分割之后,分割条件是消失
        String [] strings = str2.split(",");
//        System.out.println(Arrays.toString(strings));
        for (String string : strings) {
            System.out.println(string);
        }
    }

6.字符串的替换

String str = "hello";
//        System.out.println(str.replace('e', 'c'));
        System.out.println(str.replaceAll("l", "i"));

 7.字符串和数组的转换

转成字符型的数组
       char[] array = str.toCharArray();
        for (char c : array) {
           System.out.println(c);
        }
转成字节型数组
        一般情况下,字节型数组在操作文件的时候常用的IO流
        byte[] bytes = str.getBytes();
        for (byte b : bytes) {
            System.out.println(b);
字符串和其他数据类型的转换
        int i = 10;
        // 把int类型转成字符串(推荐)
        String s = String.valueOf(i);
//        s = new String(i);
        // 任何数据类型和字符串类型做加法,结果都是字符串
//        System.out.println(s);
    }

包装器类型(包装类,封装类)

byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
 
原理:
    自动装箱:把int类型包装成了包装器Integer类型
        基本数据类型转换成对应的包装器类型
    自动拆箱:把Integer类型转换int类型
        包装器类型转换成对应的基本数据类型

    JDK5之后的新功能:
    1.自动装箱和自动拆箱
    2.增强for循环(foreach)
    3.枚举
    JDK7以后的新功能:
1.switch...case 可以用String
 String s = "a";
        // 自动装箱
        Integer i = Integer.parseInt(s);
        Integer.toString(i);
        System.out.println(2022 - 1990);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值