黑马程序员——String

本文详细介绍了 Java 中 String 类的各种特性和方法,包括字符串的不可变性、比较方式、常用操作如获取长度、索引查找、替换及转换等,并对比了 String、StringBuffer 和 StringBuilder 的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ------- android培训java培训、期待与您交流! ---------- 

 String类用于描述字符串

 

 String s1 = "abc";//s1是一个类类型变量,"abc"是一个对象

字符串最大的特点:一旦被初始化就不可以被改变

 

String s2 = new String("abc");      创建了两个对象

System.out.println(s1 == s2);    false                

System.out.println(s1.equals(s2));  true  String类复写了Object类中的equals方法,判断字符串是否相同

 

 

 

 方法

1,获取

 1.1 int length();           //获取字符串的长度

 1.2  char charAt(index);     //通过索引获取对应的字符//超过长度出现角标越界异常
  2.3 int  indexOf( int ch);             //通过传入int数或者是字符找对应索引//如果没有找到返回-1
     int idnexOf( int  ch,fromIndex);    //在指定fromIndex的位置查找传入的字符

   2.4 int indexOf(string str);        //通过传入字符串查找字符串所对应的索引;如果返回-1,表示该str不在字符串中,可以用于判断是否包含

     int idnexOf(string str,fromIndex);       //通过指定fromIndex的位置查找传入的字符串

   2.5  String substring(start);            //通过传入的索引值开始向后截取,截取的是索引到length

      String substring(start,end);        //通过传入的两个索引值截取,有开始有结尾,包含头不包含尾

 

 

2,判断

   2.1 boolean equals(Object);        //判断传入的字符串是否与调用的字符串字符序列是否相同

 2.2 boolean contains(string);       //判断传入的字符串是否被调用的字符串包含

 2.3 boolean startsWith(string);      //判断调用的字符串是否以传入的字符串开头
 2.4 boolean endsWith(string);      //判断调用的字符串是否以传入的字符串结尾
 2.5  boolean  isEmpty();             //判断字符串是否为空,1.6以后。判断长度是否为0

 

  3,转换

  3.1 static String copyValueOf(char[]);     //将字符数组转换成字符串

       static String copyValueOf( char [] data, int  offset,  int  count);   //将字符数组转换字符串,通过offset开始,截取count个

  3.2 static String valueOf(int);        //将一个int数转换成字符串

      static String valueOf( double );
      static String valueOf( boolean );

* 3.3 char[]  toCharArray();           //将字符串转换成字符数组

  3.4 byte[]  getBytes();         //将字符串转换成字节数组    

 

4,替换

   4.1 String replace(oldChar,newChar);        //将newChar替换OldChar。如果OldChar不存在,原字符串直接赋值给替换后字符串

   4.2 String replace(string,string);

 

5,切割

     String[] split(regex);      //通过regex切割字符串,切割后会产生一个字符串数组

         String s = "a,b,c,d";

     String[] arr = s.split( "," );

 

6,去除字符串两空格。

    String trim();   
   转换大小写 
   String toUpperCase();
   String toLowerCase() 
   对两个字符串进行自然顺序比较(大于返回正数,等于返回负数)
   int compareTo(sstring)  

 

 

 

 

StringBuffer

1,可以添加基本数据和引用数据。添加数据完毕,其实底层都是将其转成字符串进行使用。通过toString方法转成字符串。
2,该容器和数组不一样,数组是固定长度的,而且只能添加同一类型。而StringBuffer长度是可变的,可以添加不同类型。类型一致的数据,可以使用数组,也可以StringBuffer。
但是数组添加元素,可以保证数据的类型不变。而StringBuffer添加完数据,全变成字符串。
3,StringBuffer可以对字符串进行修改

 

 

StringBuffer的常用方法
     1, 添加
         1.1  StringBuffer append( int  x);          //在缓冲区的末尾追加        
         1.2  StringBuffer insert( int  index,String str);   //在指定索引位置添加
 
     2 ,删除
         2.1  StringBuffer delete( int  start,  int  end);     //包含头索引,不包含尾部索引
         2.2  StringBuffer delete( 0 ,sb.length);        //清空缓冲区
         StringBuffer sb =  new  StringBuffer();
         sb.append( "aaaaa" );
         sb =  new  StringBuffer();
         2.3  StringBuffer deleteCharAt( int  index);    //根据指定的索引删除索引对应的元素             
         
     3 ,修改
         3.1  StringBuffer  replace( int  start, int  end,string); //用String替换,包含头不包含尾   
           3.2  void  setCharAt( int  index , char );       //修改,把指定索引位置的值改成传入的char值       
           3.3  StringBuffer reverse();             //将缓冲区的元素反转            
           3.4  void  setLength( int  len);            //根据传入的len值截取缓冲区的长度                
         
     4 ,查找
         4.1  int  indexOf(str);            //查找str在缓冲区第一次出现的位置
         4.2  int  lastIndexOf(str);        //从后向前查找查找str在缓冲区第一次出现的位置

 

 StringBuilder(1.5后)和StringBuffer 

1.StringBuilder和StringBuffer与String的区别
 StringBuilder和StringBuffeer是可变字符序列
 String是不变得,一但被初始化,就不能改变
  
 2.StringBuilder和StringBuffer的区别
 StringBuilder是线程不安全的,所以效率比较高,1.5版本出现
 StringBuffer是线程安全的,效率相对较低,1.0版本出现的

 

基本数据类型             引用数据类型 

 int                                      Integer

char                                    Character

 

用于基本数据类型和字符串类型之间的转换

基本数据类型+""

基本数据类型.toString(基本数据类型值)

静态调用

xxx a = XXX.perseXxx(String)

int parseInt(String str)

对象调用

Inerger i = new  Inerger("123");

int num = i.intValue()

 

进制转换

Integer.toBinaryString()

Integer.toHexString()

Integer.toOctalString

 

Integer.parseInt(string,radix)

 

 

==和equals区别

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。

 

如果数值在byte范围内容,对于新特性,如果数值已经存在,则不会再开辟新的空间

内容概要:本文档详细介绍了基于MATLAB实现多目标差分进化(MODE)算法进行无人机三维路径规划的项目实例。项目旨在提升无人机在复杂三维环境中路径规划的精度、实时性、多目标协调处理能力、障碍物避让能力和路径平滑性。通过引入多目标差分进化算法,项目解决了传统路径规划算法在动态环境和多目标优化中的不足,实现了路径长度、飞行安全距离、能耗等多个目标的协调优化。文档涵盖了环境建模、路径编码、多目标优化策略、障碍物检测与避让、路径平滑处理等关键技术模块,并提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,对无人机路径规划和多目标优化算法感兴趣的科研人员、工程师和研究生。 使用场景及目标:①适用于无人机在军事侦察、环境监测、灾害救援、物流运输、城市管理等领域的三维路径规划;②通过多目标差分进化算法,优化路径长度、飞行安全距离、能耗等多目标,提升无人机任务执行效率和安全性;③解决动态环境变化、实时路径调整和复杂障碍物避让等问题。 其他说明:项目采用模块化设计,便于集成不同的优化目标和动态环境因素,支持后续算法升级与功能扩展。通过系统实现和仿真实验验证,项目不仅提升了理论研究的实用价值,还为无人机智能自主飞行提供了技术基础。文档提供了详细的代码示例,有助于读者深入理解和实践该项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值