首页 > 其他分享 >04String类

04String类

时间:2023-10-20 20:01:47浏览次数:30  
标签:java String 04String System str println out

String类

  • 字符串是常量,创建之后不可改变。

  • 字符串字面值存储在字符串池中,可以共享。

  • String str = "Hello";产生一个str对象,字符串Hello在字符串池(常量池)中存储。

  • String str1 = new String("Hello");产生两个对象,堆、池里面各存储一个。str1指向堆里面的空间,堆里面指向常量池里面的字符串。

    案例:

    public static void main(String[] args) {
    		String name = "hello";//常量,存储在字符串池中(也叫常量池)
    		name = "zhangsan";//“张三”,给name赋值时并没有修改数据hello,而是重新开辟一个空间放入"zhangsan",然后name指向它地址。
    		String name2="zhangsan";
    		
    		//演示字符串的另一种创建方式,new String();
    		String str = new String("java");
    		String str2 = new String("java");
    		System.out.println(str==str2);		//它们的对象地址是不同的,但是对象指向的字符串是同一个
    		System.out.println(str.equals(str2));
    	}
    

    内存分析:

    内存分析

    运行结果:

    2

一、String常用方法

  • public int length():返回字符串的长度。

  • public char charAt(int index):根据下标获取字符。

  • public boolean contains(String str):判断当前字符串中是否包含str。

    案例:

    public static void main(String[] args) {
    		String str = "java是世界上最好的编程语言";
    		System.out.println(str.length());
    		System.out.println(str.charAt(9));
    		System.out.println(str.charAt(str.length()-1));
    		System.out.println(str.contains("java"));
    		System.out.println(str.contains("php"));
    	}
    

    运行结果:

    4

二、String常用方法2

  • public char[] toCharArray():将字符串转换成数组。

  • public int indexOf(String str) : 查找str首次出现的下标,存在返回下标;不存在,则返回-1。

  • public int lastIndexOf(String str):查找字符串再当前字符串中最后一次出现的下标索引。

    public static void main(String[] args) {
    		String str = "java是世界上最好的java编程语言,java真香";
    		System.out.println(Arrays.toString(str.toCharArray())); //打印
    		System.out.println(str.indexOf("java"));
    		System.out.println(str.indexOf("java", 4));//从第四个下标开始索引
    		System.out.println(str.lastIndexOf("java"));//索引最后一个java
    	}
    

    运行结果:

    5

三、String常用方法3

  • public String trim():去掉字符串前后空格。

  • public String toUpperCase():将小写转换成大写。-->toLowerCase();把大写转成小写。

  • public boolean endsWith(String str):判断字符串是否以str结尾。-->startWith(String str);判断是否已str开头。

    案例:

    public static void main(String[] args) {
    		String str2 = "   Hello Word    ";
    		
    		System.out.println(str2.trim()); //去掉前后空格
    		System.out.println(str2.toUpperCase());//字母全部大写
    		System.out.println(str2.toLowerCase());//字母全部小写
    		
    		String str3 = "hello.java";
    		
    		System.out.println(str3.endsWith(".java"));//判断是否以.java结尾
    		System.out.println(str3.startsWith("hello"));//判断是否以hello开头
    	}
    

    运行结果:

    6

四、String常用方法4

  • public String replace(char oldChar,char newChar);:将旧字符串替换成新字符串。

  • public String[] split(String str);:根据str做拆分。 split:分裂,使分裂。

    案例:

    public static void main(String[] args) {
    		String str = "java是世界上最好的java编程语言,java真香";
    		
    		System.out.println(str.replace("java", "php"));
    		
    		String say="java is the best,programing language";
    		
    		//String[] arr = say.split(" "); //以空格作为拆分符号
    		String[] arr = say.split("[ ,]+");//以空格或者是`,`作为拆分符号,`+`表示可以有一个或多个符号成为修饰符 
    		System.out.println(arr.length); //返回arr的长度
    		for(String string : arr) {
    			System.out.println(string);
    		}
    		
    		//补充两个方法、equals();、compare();比较大小;
    		System.out.println("------比较---------");
    		String s1 = "hello";
    		String s2 = "HELLO";
    		System.out.println(s1.equals(s2));
    		System.out.println("不区分大小写的比较:"+s1.equalsIgnoreCase(s2));//不区分大小写的比较
    		
    		String s3 = "abc";//a:97
    		String s4 = "xyz";//X:120
    		
    		System.out.println(s3.compareTo(s4));//97-120=-23,运行的结果是-23
    		
    		String s5 = "abc";
    		String s6 = "abcxyz";
    		System.out.println(s5.compareTo(s6));//这次比的是长度 -3,反过来就是 +3
    	}
    

    运行结果:

    7

  • 补充:

    • substring();:截取,括号内一个参数时,是从那个参数开始。两个时,是一个开始,一个结束。

    案例:

    //1.将str中的单词单独获取出来
    	//2.将str中的text替换成practice
    	//3.再text前面插入一个easy
    	//4.将每个单词的首字母改为大写
    	
    	public static void main(String[] args) {
    		
    		String str = "this is a text";
    		
    		//1.将str的单词单独获取出来
    		System.out.println("---1.将str的单词单独获取出来-----");
    		String[] arr = str.split(" ");
    		for (String s : arr) {
    			System.out.println(s);
    		}
    		
    		//2.将str中的text替换成practice
    		System.out.println("---2.将str中的text替换成practice----");
    		System.out.println(str.replace("text", "practice"));
    		
    		//3.再text前面插入一个easy
    		System.out.println("---3.再text前面插入一个easy----");
    		System.out.println(str.replace("text", "easy text"));
    		
    		//4.将每个单词的首字母改为大写
    		
    		for(int i=0;i<arr.length;i++) {
    			char first = arr[i].charAt(0);
    			//把第一个字符转成大写
    			char upperfirst = Character.toUpperCase(first);
    			//大写的首字母+从下标1开始截取单词
    			String news = upperfirst+arr[i].substring(1);
    			//打印新数组
    			System.out.println(news);
    		}
    	}
    

    运行结果:

    8

五、可变字符串

  • StringBuffer:可变长字符串,JDK1.0提供,运行效率缓慢、线程安全。

  • StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全。

  • 和String的区别:

    • 直接开辟一个缓冲区,我们操作的时候直接再缓冲区上操作。
    • 效率要比String高,比String节省空间。
  • 方法:

    • append();:追加缓冲区后面加字符串。

    • insert();:添加

    • replace();替换

    • delete();删除

      案例:

      public static void main(String[] args) {
      		
      		StringBuffer sb = new StringBuffer();
      		//1.append();追加
      		sb.append("java真香!");
      		System.out.println(sb.toString());
      		sb.append("java世界第一");
      		System.out.println(sb.toString());
      		
      		//2.insert();添加
      		sb.insert(0, "我在最前面");
      		System.out.println(sb.toString());
      		
      		//3.replace();替换
      		sb.replace(0, 5, "hello");//将指定的下标0开始到第五个下标替换为"hello"
      		System.out.println(sb.toString());
      		//4.delete();删除
      		sb.delete(0, 5); //从0开始删除5个
      		System.out.println(sb.toString());
      		
      		//清空
      		sb.delete(0, sb.length());
      		System.out.println(sb.length());
      	}
      

      运行结果:

      9

  • 补充:

    • currentTimeMillis();获取当前时间。

标签:java,String,04String,System,str,println,out
From: https://www.cnblogs.com/ahbzbn/p/17777900.html

相关文章