JAVASE23天从入门到精通_Day10

可变参数
可变参数 : 关于形参的一种编写方式

    在方法的形参上定义可变参数 ->  数据类型...变量名

    可变参数的本质就是一个数组

    注意事项:
        1. 如果方法的形参定义了可变参数,那么调用方法时可以传入任意个此类型的实参!
        2. 可变参数的后面不可以有任何类型的形参
        3. 可变参数的前可以有任意类型的形参
API的概述
API : Application Programming Interface -> 应用程序编程接口
	API 提供了后续编写Java代码的规范!! --> 学习Java的词典!!
    
学词典 -> 会用!!  会查词典!    
API的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Random的种子
Random(long seed)  : 带有种子的 随机数对象生成

	种子的功能 : 
		让同一颗种子的每一次随机数序列固定!! 如果更换种子,那么随机数序列就会变化
Scanner键盘录入字符串
    经验 : int nextInt();
    假设 : String nextString();
    实际 :
         String next() : 可以录入字符串,但是如果录入了空格,空格之后的内容不能再录入了!!
         String nextLine() : 一次录入一行, 以回车键结束 
 
String字符串的类
String : 字符串的类
	特殊的原因: Java中唯一一个即是常量也是对象的 东西;

	字符串的特点:
		1. 字符串不能变!! -> 一旦定义一个字符串此字符串就不能改变,如果改变了那么一定是生成了新的字符串!
            	String str = "Hello"; 
				str = "HelloWorld";
		2. 字符串是Java中唯一一个不需要new就可以生成的对象!!-> 只需要用双引号引起来就可以了
				"双引号可以引一切内容,这些内容都会变成字符串" --> 字符串对象!
        3. 字符串也是Java中唯一一个可以做加法的对象!!(本质是连接,结果一定是字符串类型)
        4. 字符串的底层是一个字符数组; "Hello" -> char[] chs = {'H','e','l','l','o'};
			//字符串的底层是一个字节数组
		5. 字符串因为是常量所以可以被共享!!
          //因为字符串不会变,所以字符串类中对字符串内容改变的方法都是生成了新的字符串,所以记得接收方法的结果!!
String字符串对象的创建
    最为推荐的创建方式  : 直接赋值
	String 对象名 = "直接赋值字符串即可";

    String() : 创建一个内容为空的字符串对象
    String(String original): 传入一个字符串对象,根据传入的字符串对象内容生成一个字符串对象!

    **char[] --> String对象
    String(char[] value) : 把传入的字符数组内容封装成一个字符串对象
    String(char[] value, int offset, int count) : 把传入的字符数组的一部分内容封装成一个字符串对象
        offset : 偏移量 -> startIndex : 起始索引
        count : 转几个

    ** byte[] --> String对象 : 依仗ASCII码表(后续依仗各国的编码表)
    String(byte[] bytes) : 把传入的字节数组内容封装成一个字符串对象
    String(byte[] bytes, int offset, int length) 把传入的字节数组的一部分内容封装成一个字符串对象
        offset : 偏移量 -> startIndex : 起始索引
        length : 转几个

    String(StringBuffer buffer) :StringBuffer对象 转换成字符串对象
    String(StringBuilder builder) :StringBuilder对象 转换成字符串对象

    输出对象就应该看到对象在堆内存中的地址值,但是如果你没有看到地址值而是别的内容,肯定有人在捣乱! 

在这里插入图片描述

String的比较功能
 boolean equals(Object anObject) : 比较字符串对象和传入的字符串对象内容是否相同,相同返回true
 	//严格区分大小写 :  校验用户名和密码
 boolean equalsIgnoreCase(String anotherString)  : 比较字符串对象和传入的字符串对象内容是否相同(忽略英文大小写) 
     //不区分大小写 :校验 验证码
     
源码分析:
	public boolean equals(Object anObject) {
        //第一板块 : 自己比自己
        if (this == anObject) {//比较 调用equals方法的字符串对象 和 传入的对象 地址值是否相同
            //地址相同所以肯定是同一个对象,是同一个对象 就直接返回true!
            //提高代码的效率
            return true;
        }
        
        //第二板块 : 如果传入的对象不是String类型 直接走第三板块 -> 认为不相同!!
        // 提高代码效率,提高代码安全性
        if (anObject instanceof String) {
            //向下转型!!把实参的类型转回成字符串
            String anotherString = (String)anObject;
            //value : 字符串对象底层的数组
            //value.length :获取数组的(字符串对象的)长度
          	//this.value.length : 调用方法字符串中字符串的长度 --> n
            int n = /*this.*/value.length;
            //调方法字符串的字符个数 和 传入方法字符串的字符个数 做 == 比较
            //假设判断是false 说明2个字符串的字符个数都不一样,肯定内容不相同
            //所以就没有必要比较每个字符是否相同
            if (n == anotherString.value.length) {//提高代码的效率
                //能从if进来说明2个字符串的长度一定是相同的
                //调方法字符串底层数组赋值给 v1
                char v1[] = this.value;
                 //传入方法字符串底层数组赋值给 v2
                char v2[] = anotherString.value;
                //遍历其中某一个字符串,因为2个字符串长度一样,所以索引是对的上的
                //初始化语句
                int i = 0;
                //条件判断语句
                while (n-- != 0) {
                    //循环中
                    if (v1[i] != v2[i]){//只要其中一个索引位置的字符不相同
                        //进if: 直接返回false
                        return false;
                    }
                    i++;//索引变化
                }
                //当上方循环执行完毕都没有进循环中的if判断,直接返回 true -> 内容相同
                return true;
            }
        }
        
        //第三板块 : 直接返回false -> 比较的结果是false -> 内容不相同
        return false;
    }
String的转换功能
    String --> char[]
    char[] toCharArray()  : 把字符串对象变回成字符数组

    String --> byte[]
    byte[] getBytes() : 把字符串对象变回成字节数组 -> 使用开发平台默认的编码格式转换汉字为字节
        UTF-8 编码格式下 汉字占用3个字节
    byte[] getBytes(String charsetName) :  按照指定的编码格式把字符串对象变回字节数组
        GBK : 汉字占用2个字节
        
        汉字的字节一定是以负数开头
        
    ----------------------------------------------
     String toUpperCase() : 把字符串中英文小写字符变成英文大写字符
     String toLowerCase() : 把字符串中英文大写字符变成英文小写字符
String的获取功能
char charAt(int index) : 查找字符串中指定索引位置的字符
int length() : 获取字符串中字符的个数 / 获取字符串的长度

----------------------------------------
int indexOf(int ch) : 获取传入的字符第一次出现在字符串的索引位置
int indexOf(int ch, int fromIndex) : 从fromIndex开始算传入字符第一次出现在字符串的索引位置 
int indexOf(String str) 
int indexOf(String str, int fromIndex)  
 
///最后一次出现的索引位置    
int lastIndexOf(int ch) 
int lastIndexOf(int ch, int fromIndex) 
int lastIndexOf(String str)   
int lastIndexOf(String str, int fromIndex)      
String的判断功能
 boolean contains(CharSequence s)  :判断字符串中是否包含传入的字符串内容
 	看到方法的形参是 CharSequence 类型 你就可以把它当String,StringBuilder,StringBufferboolean startsWith(String prefix) : 判断字符串是否以传入的字符串开头 -> 判断姓氏
 boolean endsWith(String suffix) : 判断字符串是否以传入的字符串结尾 -> 判断文件后缀名
     
 boolean isEmpty()  :当且仅当 length()0 时返回 true。 判断字符串是否是空字符串; 
String的替换功能
 String replace(char oldChar, char newChar) : 把newChar字符替换字符串中oldChar字符,生成新的字符串
 String replace(CharSequence target, CharSequence replacement) :把replacement字符串替换原字符串中的target字符串,并生成新的字符串对象
 //String replace(String target, String replacement) :
String的截取功能
String substring(int beginIndex) : 从beginIndex开始截取字符串到字符串结尾,获得新的字符串
String substring(int beginIndex, int endIndex) : 从beginIndex开始截取字符串到endIndex结束,获得新的字符串; --> [beginIndex,endIndex) 
String的切割功能
String[] split(String regex)  : 根据传入的字符串切割原字符串,生成切割后的字符串数组
        String regex: 按什么切 就传入什么!

       注意:
            1. 如果传入的参数在源字符串中不存在,直接返回原字符串到结果的数组中!
            2. regex : 正则表达式  --> 一套专门用来校验的语法
                   在字符串中 \\ 代表 \
                   . : 正则的通配符 -> 就要按.:
                   \ : 转义符 --> \\\\
                   X+ : X代表你要使用的字符 X+ 这个字符出现一次或者多次都按一次计算
String的匹配功能
 boolean matches(String regex)  : 判断调用方法的字符串是否符合传入的正则规则!!
     
     常见的正则规则 : 上网百度!!
String的其他功能
String concat(String str)  : 把传入的字符串对象拼接到调用方法字符串的后方,生成新的字符串对象
	//废物方法 -> 字符串的拼接 可以用 +
    
String toString() : 把调用方法的字符串对象转换成字符串对象
	//废物方法

static String valueOf(任意对象) : 把任意对象转成字符串类型 -> 底层用到的是 toString()方法
	//废物方法 -> 任意对象 + ""
          
//等效于构造: String(char[] value)
static String copyValueOf(char[] data)  
//等效于构造: String(char[] value,int offset,int count)    
static String copyValueOf(char[] data, int offset, int count) 
    
String trim(): 去除字符串2端的空格 -> 有事没事trim一下
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值