Java 基础篇day06

发布时间 2023-11-04 21:06:16作者: 奕帆卷卷

String
字符串,可以用来创建对象封装字符串数据,并对其进行处理

创建字符串的方式

点击查看代码

//String 创建对象封装字符串数据的方式
Java程序中的所有字符串文字都为此类的对象
1.简单的方案
String name="xiaohei";
2.方式二:调用String类提供的构造器初始化字符串对象,封装数据
String s1=new String(); //" "
3.String s2 = new String("黑马");
System.out.println(s2);


//可以基于字符数组创建字符串对象
char[] chars  ={a,b.c.'我','爱;'中','国'};
String s3 = new String(chars);
System.out.println(s3);

//可以基于字节数组创建字符对象
byte[] bytes={97,98,99,'a','b','c'};
String s4 = new String(bytes);
     System.out.println(s4);

String使用时的注意事项?
String对象的内容不可改变,即被称为不可变字符串对象
//1.String字符串对象是不可变对象;

点击查看代码
  String name = "黑马";
        name += "程序员";
        name += "6666";
        System.out.println(name);//黑马程序员
//字符串对象是不可变的,定义时,在栈内存中的String name指向堆内存常量池中的”黑马“,在进行name+=程序员的时候,先在字符串常量池中产生新的"程序员" //然后在堆内存中进行拼接,产生新的对象 //总结 每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的
点击查看代码
String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);//true

//以" "创建字符串时,先在堆内存的常量池中创建字符串常量,下一次创建相同的变量时,地址会指向之前常量池中字符串常量
//== 比较的是两者的地址是否相同

点击查看代码
char[] chs = {'a', 'b', 'c'};
        String t1 = new String(chs);
        String t2 = new String(chs);
        System.out.println(t1);
        System.out.println(t2);
        System.out.println(t1 == t2);//false

//==比较的是地址值是否相同
//每次在进行new创建对象的时候会在堆内存中创建新的变量。所以地址值不同

点击查看代码
   String n1 = "abc";
        String n2 = "a" + "b" + "c";
        System.out.println(n1 == n2);
        //true
        //Java的内存改良机制

String提供的操作字符串数据的常用方法

String name = "abab黑马66";

    //1.获取字符串的长度(字符个数)
  System.out.println(name.length());
    //2.提取字符串中某个索引位置出的字符
    char c = name.charAt(2);
    System.out.println(c); //a

    for (int i = 0; i < name.length(); i++) {
        System.out.print(name.charAt(i));
    }
    //3.把字符串转换成字符数组,在进行遍历
    System.out.println("-----------");
    char[] charArray = name.toCharArray();
    for (int i = 0; i < charArray.length; i++) {
        System.out.println(charArray[i]);
    }


    //4.equals:判断字符串内容,内容一样就返回true(重点)
    String s1 = new String("abc");
    String s2 = new String("abc");
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));


    //5.忽略大小写比较字符串内容
    String r1 = "aBcF23";
    String r2 = "ABCF23";
    System.out.println(r1.equals(r2)); //false
    System.out.println(r1.equalsIgnoreCase(r2)); //true

    //6.截取字符串内容(包前不包后)
    String t1 = "黑马程序员Java入门";
    String rs2 = t1.substring(5, 11);
    System.out.println(rs2);

    //7.从当前索引位置一直截取到字符串的末尾
    String rs = t1.substring(5);//从当前索引截取到末尾
    System.out.println(rs);

    //8.把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
    //敏感词
    String info = "你个死老6,打的这么垃圾,垃圾队友,等我复活再来打死这个垃圾~~~,垃圾队友,快来救我~~";
    String rs3 = info.replace("垃圾", "**").replace("死", "*");
    System.out.println(rs3);

    //9.判断字符串中是否包含某个关键字
    String t2 = "黑马程序员Java入门课";
    System.out.println("黑马");
    System.out.println("黑马2");

    //10.判断字符串是否某个字符串开头
    //startswith 判断是否什么内容开头
    //endswith 判断是否什么内容结尾
    t2.startsWith("黑马程序员");
    t2.startsWith("黑马程序员2");
    t2.endsWith("门课");
    t2.endsWith("门课2");

    //11.把字符串按照某个指定内容分割成多个字符串
    //放到一个字符串数组中返回给我们
    String info2 = "王菲,蔡徐坤,易烊千玺";
    String[] names = info2.split(",");
    for (int i = 0; i < names.length; i++) {
        System.out.println(names[i]);
    }

面向对象高级部分
static修饰成员变量,成员方法

   //1.类名.静态变量(推荐)
    Student.name = "有幻化";
    System.out.println(Student.name);

    //2.对象.静态变量(不推荐)
    Student s1 = new Student();
    s1.name = "马冬鹏";

    Student s2 = new Student();
    s2.name = "秋雅";

    System.out.println(s1.name);
    System.out.println(s2.name);
    System.out.println(Student.name);

    //3.对象.实例变量(必须的)
    s1.age = 23;
    s2.age = 18;
    System.out.println(s1.age);