黑马程序员第二节:String类和Stringbuffer

本文深入探讨 Java 中 String 类的特点及应用,包括不可变性、创建方式、字符串操作方法如替换、切割、转换等,并对比 String 与 StringBuffer、StringBuilder 的区别。

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

1.String  类是不可被继承的
  String  s=new String ();
  String s1="";  //多用
  两者是相同的
2.String s="abc"  //s 是一个类类型的变量,"abc"是一个对象 ,字符串是一个特殊的对象
//字符串最大的特点:一旦被初始化,就不能改变了
3.String s1=new String("abc");
String s2="abc";
s1 和s2有什么区别?
s1在内存中只有一个对象
s2在内内存中有两个对象
4.字符替换
     String s="Hello.java";
        String s1=s.replace('a','A');
       System.out.print("s="+s);
        System.out.print("s1="+s1);
  
 打印s的结果还是Hello.java
 打印s1的结果是Hello.jAvA
 为什么s的值没有改变?
答:字符串一但被赋值了,则不可改变的, 改变的只是引用.
5.切割(分隔符)
String []split();
6.字串
  String s="hello.java"
    System.out.print(s.substring(4));//从指定数组下标位置到字符串结尾
 System.out.print(s.substring(2, 4));//包含头,但不包含尾。即从指定数组的2下标到4下标的前一个结束
7.转换
 7.1 将字符串转换成大写或者小写
      String  toUpperCase
 7.2 去除字符串中的空格
  trim();
  7.3 比较字符串大小
   String s="abc";
   String  s2="ABC";
   System.out.println(s.compareTo(s2));
   如果比较结果为一个正整数。则s >s2 ;
   如果这两个字符串相等,则结果为 0
   如果比较结果为一个负整数。则s >s2 .
8.去除空格的实例去除两边的空格
  8.1 String str="       we are     ";
public static String Trim(String str)
   {
    int start = 0;  int end =str.length() - 1;
  while (start < end && str.charAt(start) == ' ')
   { start++; }
  while (str.charAt(end) == ' ')
   { end--; }
  return str.substring(start, end + 1);
  }
  8.2 如何将单词与其它字符之间将多个空格转换成一个空格
  String str1="we  are   boy      hkaf           8888";
  str1=str1.replaceAll(" {2,}", " ");//意思是说将出现2个或者是2个以上的空格替换成1个空格
  System.out.println(str1);
 8.3如何除去左边的空格
  String s="         java  com ";
  System.out.println(s.substring(s.indexOf("j"), s.length()));
 }
运行结果: java  com
9.如何将字符串反转
String s="上海好美"——>"美好海上"
   char[] ch;
   ch=s.toCharArray();
   for(int j=s.length()-1;j>=0;j--){
    System.out.print(ch[j]);
   
   }
10.StringBuffer 字符串缓冲区
CURD
C ——>create
U——>update
R——>read
D——>delete
StringBuffer 和 StringBuilder
StringBuffer 线程同步的 www.2cto.com
StringBuilder 线程不同步(1.5才出现的)
如果是单线程的则选择 StringBuilder 因为可以提高效率
以后开发建议使用 StringBuilder
两者方法基本相同,区别在于一个有锁(同步),一个没有锁
11.基本数据类型包装类
byte   Byte
short  Short
int  Integer
char  Character
11. 1 把一个整数封装成对象好处体现在:最大值和最小值是个固定值,不需要刻意去记,Integer.MAX_VALUE
11 .2 基本数据类型最常见的用法就是基本数据类型和字符串之间的转换
(1) 基本数据类型装换成字符串最简单的方式:
基本数据类型+""
  (2)专业转法:
  Integer.toString(88);
(3)十进制转换成其他进制
toBinaryString();
toHexString();
toOctalString();
int num=Integer.paseInt("110",10)  //将二进制转换成10进制
int num=Integer.paseInt("16",2)  //将10进制转换成2进制
11.JDK1.5新特性只自动拆箱装箱机制
问:
Integer  x=new Integer("888");
Integer  y=new Integer (888);
x==y?   false //两个不同的对象,所以指向的地址不同,当然是false了
 x.equals(y)? true
JDK1.5升级后为了简化书写
可以直接写为:Integer  x=  888;//=new Integer("888");
Integer  x=  888;等号左边是引用数据类型,右边必然是对象,因为类类型变量必然指向对象
x=x+2  //x进行了自动拆箱,有对象变成基本数据类型,和2进行加法运算,在自动装箱赋给x
        //拆箱原理x.Valueof(),当x为null时要进行判断,以为x为空时,不会调用Valueof方法
(2)Integer x=127
 Integer y=127
 x==y?   //true 因为不同引用指向同一对象,
 Integer m=128;
 Integer n=128;
 m==n?  //false 以为对于JDK1.5的新特性来说,对于不在byte(-128  到 127)范围类的数值,它会从新开辟一个新空间
                //而不会认为该数值已存在

 

 

摘自 黄方 (舞动的心弦) 的专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值