String字符串

1、获取键盘输入
1.import java.util.Scanner // 导包
2.Scanner scanner = new Scanner(System.in);
3.String str = scanner.next();
4.查看成员方法
		public String next() : 
			获取键盘录入的字符串(不能包含空白字符),遇到空白字符/回车换行就认为录入结束
			
        public String nextLine() :
        	获取键盘录入的一行字符串(可以包含空白字符),遇到回车换行就认为录入结束
/*
    注意:
        1.先使用nextLine方法,后面再使用next/nextInt/nextDouble方法,是没有问题的

        2.先使用next/nextInt/nextDouble方法,后面使用nextLine方法,是有问题的
            可以理解为: nextLine方法,会抢其它方法的回车

    解决方案:
        (1)单独创建一个新的Scanner对象给nextLine使用
        (2)全部使用nextLine方法,不使用类似next的方法
        (3)全是使用类似next的方法,不使用nextLine方法
 */
2、String类的介绍
java.lang.String: 用来描述的字符串的
	说白了: String 类代表字符串。
	Java 程序中的所有字符串字面值(字符串常量)都作为此类的实例对象。 

	字符串是常量;它们的值在创建之后不能更改(但凡是你感觉它要变化的时候,其实都是创建了一个新的字符串)String类的对象的体现形式:
	1.所有双引号""引起来的内容,都是String类的对象,都可以调用String类中定义的方法
	2.和前面一样,使用new关键字创建String类的对象 
    3.String str = new String("Hello World") ;
注意:
    ""引起来的叫做字符串常量对象,这种东西被存储在常量池中(专门用来存储字符串常量对象的),在创建一个字符串对象的时候,它先会到字符串常量池中去查找看是否有该字符串对象,如果没有就创建字符串对象,如果有就引用常量池中对象的地址。通过第二种new的形式创建字符对象时,如果常量池中没有要创建的字符串,那么就相当于开辟了两块空间。一块是在常量池中,一块在堆内存空间中。
    例:
    String str = new String("Hello World"); 此时常量池中和堆内存中分别有开辟空间存储"Hello World",但是str指向的是堆内存空间开辟的空间,所以此时的常量池中的空间没有指向就会变成一块垃圾空间。
    但是如果此时str1 = "Hello World" ,str1就会指向常量池中的空间。
    4. "abc" 等效于 char[] data={ 'a' , 'b' , 'c' }
        jdk8及以前: String内部使用的就是字符数组
        jdk9及以后: String内部使用的就是字节数组
        例如: 
            String str = "abc"; 
            相当于: 
                char data[] = {'a', 'b', 'c'}; 
                String str = new String(data); 
                // String底层是靠字符数组实现的。
    5.	创建字符串对象两种方式的区别(理解)
        1.直接new的方式: 字符串变量中直接保存的堆内存空间的地址值
        2.直接""的方式: 字符串变量中直接保存的常量池中字符串常量对象的地址值

    ==的使用: 
        1.基本类型: 比较的是具体的数据值是否相同
        2.引用类型: 比较的是地址值是否相同 
    String类的对象一旦创建就不能改变,因为不能改变,所以在常量池中会被共享

在这里插入图片描述

3、String类的构造方法
/*
	1.public String(): 创建一个空白字符串对象,不含有任何内容,等价于""
	2.public String(char[] chs) 根据构造方法字符数组chs,创建一个字符串对象
	3.public String(byte[] bs): 根据构造方法字节数组bs,创建一个字符串对象
	4.String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
*/
public class Demo01{
    public static void main(String[] args) {
        //(1)public String(): 创建一个空白字符串对象,不含有任何内容,等价于""
        String s1 = new String();
        System.out.println("Hello"+s1+"World");//HelloWorld

        //(2)public String(char[] chs) 根据构造方法字符数组chs,创建一个字符串对象
        char[] chs = {'a','b','c'};
        String s2 = new String(chs);
        System.out.println(s2);//abc

        //(3)public String(byte[] bs): 根据构造方法字节数组bs,创建一个字符串对象
        byte[] bs = {97,98,99};
        String s3 = new String(bs);
        System.out.println(s3);//abc

        //(4)String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
        String s4 = "abc";
        System.out.println(s4);//abc


    }
}
4、String类的判断方法
判断功能的方法 
	- public boolean equals(Object anObject) :
		将此字符串(调用分的对象)与指定对象(传递给方法的参数)进行比较内容是否相同, 区分大小写。
		举例:
			s1.equals(s2):比较s1和s2的内容是否一模一样,如果一样返回true,否则返回false
    
	- public boolean equalsIgnoreCase (String anotherString) :
		将此字符串与指定对象进 行比较内容是否相同,忽略大小写。 
		举例:s1.equalsIgnoreCase(s2):比较s1和s2的内容是否相同,但是不区分大小写 
		
	- public boolean contains(String str) : 当且仅当此字符串包含指定的str时,返回 true。 
		举例:s1.contains(s2): s1中包含s2,返回true,不包含返回false 
5、String类的获取方法
获取功能的方法
    - public int length () :返回此字符串的长度。
        举例:s.length() 获取s中的字符的数量

    - public String concat (String str) :将指定的字符串连接到该字符串的末尾。
        举例:s1.concat(s2) 把s2连接到s1的末尾 等价于 s1 += s2
	
    - public char charAt (int index) :返回指定索引处的 char值。
        举例:s1.charAt(5) 获取s1中索引为5的字符
		
    - public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
         举例:s1.indexOf(s2) 查找s2在s1中第一次出现的位置,如果不存在,返回-1
         
    - public String substring (int beginIndex) :
    	返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
        举例:s1.substring(5) 截取s1字符串从索引5开始一直到最后的内容

    - public String substring (int beginIndex, int endIndex) :
        返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
        举例:s1.substring(5,10) 截取s1字符串从索引5开始一直到索引10之间的内容(包含5,不包含10)
    - public char[] toCharArray()
		将此字符串转换为新的字符数组。
6、String类的转换方法
转换功能的方法
    - public char[] toCharArray () :把字符串变成对应的字符数组。
        举例:s1.toCharArray() 把s1变成字符数组

    - public byte[] getBytes () :把字符串变成对应的字节数组。
        举例:s1.getBytes() 把s1变成字节数组

    - public String replace (String oldStr, String newStr) :
    	把字符串中的所有的oldStr替换成newStr。
        举例:s1.replace("a","A") 把s1中的所有的"a"替换成"A"
7、String类的切割方法
	"aa bb cc dd"
    分割功能的方法
        - public String[] split(String regex) :
        	将此字符串按照给定的regex(规则)拆分为字符串数组
            举例:
                String[] "a,b,c,d".split(",")"a,b,c,d"按照逗号切割,将切割后的多个子字符串存入String[]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值