第十五章上课内容 String讲解

package ch15;  
  
import java.util.Scanner;  
  
public class Test  
{  
    public static void main(String[] args)  
    {  
        /* .         * byte short int long float double char boolean 
        */  
        // 我叫什么  
        char[] cs1 = new char[] { '我', '叫', '王', '亚', '杰' };  
        char[] cs2 = new char[] { '我', '叫', '王', '亚', '杰' };  
        char[] cs3 = { '我', '叫', '王', '亚', '杰' };  
        char[] cs4 = cs1;  
        System.out.println(cs4 == cs1);  
        System.out.println(cs2 == cs3);  
  
        // for (int i = 0; i < cs.length; i++)  
        // {  
        // System.out.print(cs[i]);  
        // }  
        // 第一个 要迭代数组的数据类型  
        // 是迭代的变量名  
        // 要迭代的数组名  
        // 好处,避免数组下标越界  
        // java.lang.ArrayIndexOutOfBoundsException  
        for (char c : cs1)  
        {  
            System.out.print(c);  
        }  
 
        boolean b = compar(cs1, cs3);  
        System.out.println(b);  
        System.out.println("******************");  
        String str1 = "我叫王亚杰";  
       String str2 = new String("我叫王亚杰");  
        String str3 = "我叫王亚杰";  
  
        // str3=str1;  
  
        // 获取到字符串长的长度  
        System.out.println(str1.length());  
        System.out.println();  
        // 这两个的值是否相等  
        // equals 比较两个值是否相等的  
        System.out.println(str1.equals(str2));  
        // str1==str2 地址是否相等  
       System.out.println(str1 == str2);  
       System.out.println(str1 == str3);  
       System.out.println("******************");  
        char c1 = 'A';// 65---91  
        char c2 = 'a'; // 97--123  
        System.out.println(c1 - c2);  
        System.out.println((char) (c1 + 32));  
        // 不区分大小写 比较  
        System.out.println(c1 == c2);  
        System.out.println('a' == 97);  
 
        b = compar2(c1, c2);  
        System.out.println(b);  
          
        // 验证码  不区分大小写  
        String str4="abc";  
        String str5="ABC";  
        // 忽略大小写比较  
        System.out.println(str4.equalsIgnoreCase(str5));  
        // 全部变成大写  
        System.out.println(str4.toUpperCase());  
        // 全部小写  
        System.out.println(str5.toLowerCase());  
        // abcABC  
      String str6=str4+str5;  
//       拼接字符串  
        String str6=str4.concat(str5);  
        System.out.println(str6);  
        System.out.println("******************************");  
           
        // 985860612@qq.com  
         // 在字符串中查找一个字符,如果找不到那么就返回-1  如果找到了返回字符所在的位置  
        String str7="985860612@qq.com";  
        int index=str7.indexOf('@');  
        System.out.println(index);  
        index=str7.indexOf('#');  
        System.out.println(index);  
          
        index= str7.indexOf("qq");// 返回找到开始位置  
        System.out.println(index);  
        System.out.println(8=='8');  
        index=str7.indexOf('8', 1);// 第一个参数要查找的字符   第二个参数 从第几位开始查找  
        System.out.println(index);  
        index=str7.lastIndexOf('8');// 最后出现的位置  
        System.out.println(index);//  
        // 截取字符串        从第几位开始截取(从0开始数,包含你数到的那一位)  
        String com=str7.substring(10);//   
        System.out.println(com);  
        String qq=str7.substring(0, 9);// 鸵鸟  顾头不顾尾  
        System.out.println(qq);  
          
          
        //   
        String str8="          985860612      ";  
      Scanner input = new Scanner(System.in);  
     System.out.println("请输入用户名");  
      String name=input.next();  
      if(name.equals(str8.trim())){  
          System.out.println("登录成功");  
      }else{  
          System.out.println("登录失败");  
      }  
       // 去除空格  
        // 去除空格  
        System.out.println(str8);  
        System.out.println(str8.trim());  
          
        // ***************欢*迎*光*临****************  
        String str9="欢迎光临";  
        int count=8;  
        char [] cs5=str9.toCharArray();//把字符转成字符数组  
          
        for (int i = 0; i < count; i++)  
        {  
            System.out.print("*");  
        }  
          
       for (int i = 0; i < cs5.length; i++)  
        {  
            System.out.print(cs5[i]+"*");  
       }  
          
        for (int i = 0; i < count-1; i++)  
        {  
            System.out.print("*");  
        }  
        System.out.println("/************************************");  
          
        String str10="欢 迎 光 临";  
        String[] strs=  str10.split(" ");// 拆分字符串  
        String str11="";  
          
        for (String s : strs)  
        {  
            System.out.println(s);  
              
            str11+=s;  
        }  
        System.out.println(str11);  
        String[] strs2=str7.split("6"); // 铁链  
        for (String s : strs2)  
        {  
            System.out.println(s);  
        }  
    }  
  
    // 不区分大小写比较字符  
    private static boolean compar2(char c1, char c2)  
    {  
       // 统一大写比较  
        if (c1 < 65 || c1 > 91)  
        {  
            if (c1 >= 97 && c1 <= 123)  
           {  
                c1 = (char) (c1 - 32);  
            }  
  
        }  
        if (c2 < 65 || c2 > 91)  
        {  
            if (c2 >= 97 && c2 <= 123)  
            {  
                c2 = (char) (c2 - 32);  
            }  
  
        }  
        return c1==c2;  
    }  
  
    private static boolean compar(char[] cs1, char[] cs2)  
    {  
        /*  
         * 数据类型 [] 数组名; 数组名=new 数据类型[长度]; 获取数组长度 数组名.length (这是一个属性)  
         */  
        // == 比较的是内存地址  
        if (cs1 != null && cs2 != null)  
       {  
            if (cs1 == cs2)  
            {  
                return true;  
            }  
            if (cs1.length == cs2.length)  
            {  
                for (int i = 0; i < cs2.length; i++)  
                {  
                    if (cs1[i] != cs2[i])  
                    {  
                        return false;  
                    }  
                }  
                return true;  
            }  
        }  
        return false;  
  
    }  
}  




[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
package ch15;  
  
public class Test02  
{  
    public static void main(String[] args)  
    {  
  
        String str="1";  
        str+=2;  
        System.out.println(str);  
        StringBuffer sb=new StringBuffer();  
        sb.append("1");  
        sb.append("2");// 拼接  
        sb.append("3");  
        sb.insert(1, 'a');// 插入  
        System.out.println(sb.toString());  
          
          
          
        // 记录开始时间592  
        long start = System.currentTimeMillis();  
  
      for (int i = 0; i < 1000; i++)  
     {  
         str+=i;  
      }  
 
       // 记录结束时间,=开始时间  
        System.out.println(System.currentTimeMillis() - start);  
    }  
}  



使用优化算法,以优化VMD算法的惩罚因子惩罚因子 (α) 和分解层数 (K)。 1、将量子粒子群优化(QPSO)算法与变分模态分解(VMD)算法结合 VMD算法背景: VMD算法是一种自适应信号分解算法,主要用于分解信号为不同频率带宽的模态。 VMD的关键参数包括: 惩罚因子 α:控制带宽的限制。 分解层数 K:决定分解出的模态数。 QPSO算法背景: 量子粒子群优化(QPSO)是一种基于粒子群优化(PSO)的一种改进算法,通过量子行为模型增强全局搜索能力。 QPSO通过粒子的量子行为使其在搜索空间中不受位置限制,从而提高算法的收敛速度与全局优化能力。 任务: 使用QPSO优化VMD中的惩罚因子 α 和分解层数 K,以获得信号分解的最佳效果。 计划: 定义适应度函数:适应度函数根据VMD分解的效果来定义,通常使用重构信号的误差(例如均方误差、交叉熵等)来衡量分解的质量。 初始化QPSO粒子:定义粒子的位置和速度,表示 α 和 K 两个参数。初始化时需要在一个合理的范围内为每个粒子分配初始位置。 执行VMD分解:对每一组 α 和 K 参数,运行VMD算法分解信号。 更新QPSO粒子:使用QPSO算法更新粒子的状态,根据适应度函数调整粒子的搜索方向和位置。 迭代求解:重复QPSO的粒子更新步骤,直到满足终止条件(如适应度函数达到设定阈值,或最大迭代次数)。 输出优化结果:最终,QPSO算法会返回一个优化的 α 和 K,从而使VMD分解效果最佳。 2、将极光粒子(PLO)算法与变分模态分解(VMD)算法结合 PLO的优点与适用性 强大的全局搜索能力:PLO通过模拟极光粒子的运动,能够更高效地探索复杂的多峰优化问题,避免陷入局部最优。 鲁棒性强:PLO在面对高维、多模态问题时有较好的适应性,因此适合海上风电时间序列这种非线性、多噪声的数据。 应用场景:PLO适合用于优化VMD参数(α 和 K),并将其用于风电时间序列的预测任务。 进一步优化的建议 a. 实现更细致的PLO更新策略,优化极光粒子的运动模型。 b. 将PLO优化后的VMD应用于真实的海上风电数据,结合LSTM或XGBoost等模型进行风电功率预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值