自学JAVA知识点总结 - 初级-第22页 - Aaron's Home -黄泽雨个人博客

记录与分享

自学JAVA知识点总结 - 初级

编程语言 JAVA

面向对象 - String类和常量池

← 返回目录

String类

        String类基础:String类又被称作不可变字符序列,Java字符串就是Unicode字符序列;

Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例;String位于java.lang包中,Java程序默认导入java.lang包下的所有类。

package me.hzyis.test;
public class Test {
  public static void main(String[] args) {
    String a = "测试"; //定义字符变量
    String b = new String("测试2"); //创建String类对象
    String c = "测试"+"3"; //字符串拼接
    String d = "测试"+4; //有一个字符串,+号则变为字符串连接符
    System.out.println(a+"\r\n"+b+"\r\n"+c+"\r\n"+d);
  }
}
package me.hzyis.test;
public class Test {
  public static void main(String[] args) {
    String s1 = "core Java";
    String s2 = "Core Java";
    System.out.println(s1.charAt(3)); //提取下标为3的字符,从0开始索引,所以第三个值为"e",不可为负数
    System.out.println(s2.length()); //字符串的长度,算上空格共10个字符
    
    System.out.println(s1.equals(s2)); //比较两个字符串是否相等
    System.out.println(s1.equalsIgnoreCase(s2)); //比较两个字符串是否相等(忽略大小写)
    
    System.out.println(s1.indexOf("Java")); //字符串s1中是否包含"Java"字符,如果存在返回指定字符在序列的位置
    System.out.println(s1.indexOf("java")); //字符串s1中是否包含"java"字符,如果没有返回-1
    
    String s = s1.replace(' ','&'); //将s1中的空格替换为&符号,替换后赋值给s,s1不会有任何变化
    System.out.println("result is:" + s);
    System.out.println("\r\n****************************\r\n");
    
    String st = "";
    String st1 = "How are you?";
    System.out.println(st1.startsWith("How")); //是否以How开头
    System.out.println(st1.endsWith("you")); //是否以You结尾
    
    st = st1.substring(4); //从下标为4的字符开始 到 字符串结尾为止,提取子字符串
    System.out.println(st);
    st = st1.substring(4,7); //提取下标是4到7,包括4不包括7的字符串
    System.out.println(st);
    
    st = st1.toLowerCase(); //全部转小写
    System.out.println(st);
    st = st.toUpperCase(); //全部转大写
    System.out.println(st);
    
    String st2 = " How old are you!! ";
    st = st2.trim(); //去除首尾空格,无法去除中间的空格
    System.out.println(st); //st2不变,生成新的st字符串输出
    System.out.println(st2); //因为String是不可变字符序列,所以st2不变
  }
}

 

常量池

        全局字符串常量池(String pool):全局字符串常量池中存放的内容是在类加载完成后存到String Pool中的,在每个VM中只有一份,存放的是字符串常量的引用值(在堆中生成字符串对象实例)。

        class文件常量池(Class Constant Pool):class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量(文本字符串、final常量等)和符号引用。

        运行时常量池(Runtime Constant Pool):运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。

package me.hzyis.test;
public class Test {
  public static void main(String[] args) {
    String test1 = "abc";
    String test2 = "abc";
    String test3 = new String("abc");
    System.out.println("是否相同:" + (test1==test2)); //test1和test2处在相同对象中,所有为true
    System.out.println("是否相同:" + (test3==test2)); //test3是不同对象,所以为false
  }
}

 

 


↓ 点击翻页 ↓

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

分享