java基础之String类

本文深入探讨Java中的字符串处理,包括String类的特点与用法、StringBuffer与StringBuilder的区别及应用场景,同时还介绍了基本数据类型与字符串之间的转换方法。

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


String类里面的内容必须会,必须熟悉,


public final class String 字符串是一个特殊的对象,这个类不能有子类。


String s = new String();与String s1 = "";是等价的。


String s1 = "abc"; //s1是一个类类型变量,“abc”是一个对象。
字符串最大的特点,一旦被初始化就不能被改变。




String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
System.out.println(s1==s2);//结果是false
System.out.println(s1.equals(s2));//结果是和True,
String 覆盖了Object类中的equals方法,
该方法用于判断字符串内容是否相同。


s1和s2的区别?
s1在内存中有一个对象,s2在内存中有两个对象。


System.out.println(s1==s3);//true,因为在常量池中发现已经有这个内容,所以就引用原来的
所以就相等。




怎么简单,就怎么封装


--------------------------------------------------------------------------------------------------------------------------


StringBuffer是字符串缓冲区,是一个容器,被final修饰,不能被继承。
三个特点:
1.长度可变化,
2.可以操作多个数据类型
3.最终会通过toString()方法变成字符串。


CURD  create update read dalete


StringBuffer sb = new StringBuffer();
sb.append("abc").append(true).append(21);//这个叫作方法调用链。
就是方法调用过程中,返回还是本类对象,所以还可以调用本类方法。


JDK1.5版本以后出现了StringBuffer的替换者StringBuilder。
StringBuffer与StringBuilder的区别,前者是同步的,后者不同步,也就是说
StringBuffer是安全的,StringBuilder是不安全的。StringBuilder
因为效率快。单线程用StringBuilder,多线程用StringBuffer


JAVA的升级一般是三个方面。
1.提高效率
2.简化书写
3.提高安全性。
StringBuilder就是为了提高效率。


建议使用StringBuilder。




package com.String;


public class DemoString
{

public void gainMethod()
{
String str = "ArraryList.java";
//判断文件名是否以.java结尾
System.out.println(str.endsWith(".java"));
//判断文件名是否以ArrayList开头
System.out.println(str.startsWith("ArraryList"));
//判断文件中是否包含ArrayList
System.out.println(str.contains("ArraryList"));

//字符串的长度
sop(str.length());
//根据索引获取字符
sop(str.charAt(3));

//获取字符的索引
sop(str.indexOf(2));
sop(str.indexOf(9,str.length()));

sop(str.indexOf("List"));
sop(str.indexOf("List",1));
}
public void transMethod()
{
//字符数组转换成字符串
char[] ch = {'a','b','c','d'};
String str = new String(ch);
sop(str);

String str2 = new String(ch,0,2);
sop(str2);

//静态方法实现
sop(String.copyValueOf(ch));
sop(String.copyValueOf(ch,1,2));
sop(String.valueOf(ch));

//字符串转换成字符数组
char[] ch1 = str.toCharArray();
for(int x=0; x<ch.length; x++)
{
sop(ch[x]);
}
byte[] b = str.getBytes();
for(int x=0; x<b.length; x++)
{
sop(b[x]);
}
//基本数据类型转换成字符串
sop(str.valueOf(465786));
sop(str.valueOf(false));
}

public void judgeMethod()
{
String str = "fjdalkfd";
String str2 = "djaf;lk";
String str3 ="abcd";
String str4 = "ABCD";
//判断是否包含字符串
sop(str.contains("dalk"));
sop(str.indexOf("fjda"));

//判断字符串是否为空
sop(str.isEmpty());
//判断字符串是否以指定内容开头
sop(str.startsWith("fj"));
//判断字符串是否以指定内容结尾
sop(str.endsWith("fd"));
//判断两个字符串内容是否相同,这里的equals已经覆写了Object里面的equals
sop(str.equals(str2));
sop(str3.equalsIgnoreCase(str4));
}

public void replaceMethod()
{
//用新的字符串替换旧的字符串,如果被替换的内容不存在,
//就用原来的字符串。
String str = "abcd.java";
String str2 = str.replace(".java", ".c++");
sop(str2);
}
public void splitMethod()
{
//根据规则切割字符串
String str = "c++,java,c,php,.net,";
String[] str2 = str.split(",");
for(int x=0; x<str2.length; x++)
{
sop(str2[x]);
}
}
public void gainSubString()
{
//获取字符串的子串
String str = "abcd.java,aa.c++,demo.c";
sop(str.substring(5,9));
sop(str.substring(5));

}
public void tans_Trim_CompareMethod()
{
//字符串的大小写转换
String str = "abcd";
String str2 = str.toUpperCase();
sop(str2);
sop(str2.toLowerCase());

//去掉字符串两端的空格
String str3 = "   dafkj  fdkaj.java   ";
sop(str3.trim());

//对两个字符串进行自然排序
sop(str.compareTo(str2));

}
public <T>void sop(T t)
{
System.out.println(t);
}
public static void main(String[] args)
{
new DemoString().tans_Trim_CompareMethod();
// new DemoString().gainSubString();
// new DemoString().splitMethod();
// new DemoString().replaceMethod();
// new DemoString().judgeMethod();
// new DemoString().transMethod();
// new DemoString().gainMethod();


}



}


------------------------------------------------------------------------------------------------




基本数据类型对象包装类。


基本数据类型     引用数据类型
byte               Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character


IPA文档中的字段摘要也就是常量,可以用类名直接调用


基本数据类型对象最常见的作用就是,基本数据类型和字符串类型之间做转换
比如基本数据类型转换成字符串,Integer.toString(34);
字符串转换成基本数据类型,Integer.parseInt(2323);




package com.String;


public class BasicDataType
{

public void method()
{
String str = "1343";
//字符串转换成基本数据类型
// System.out.println(Integer.MAX_VALUE+".........."+Integer.MIN_VALUE);
// System.out.println(Integer.valueOf(str));
// System.out.println(Integer.parseInt(str));
// System.out.println(new Integer(str).intValue());
// sop(Double.valueOf(str));
// sop(Double.parseDouble(str));

//基本数据类型转换字符串
// new Integer(564).toString();
// sop(new Integer(3213).toBinaryString(6));
// sop(new Integer(54).hashCode());

//JDK1.5以后出现的新特性
Integer x = new Integer(131);
Integer y = new Integer("131");
sop("x=y:"+(x==y));//false,这里比较的是两个对象的地址值,
sop("x.eqauls(y):"+x.equals(y));//true这里比较的是两个对象的内容是否相等。

Integer x2 = null;//可以指向空指针。
Integer x1 = 4;//自动装箱,等同于这个new Integer(4);
int y1 = x1+2;//x1.inValue(),自动拆箱,变成int型再和2进行运算
//再将值赋给y1;
sop(y1);


}
public <T>void method1()
{
Integer x = 128;
Integer y = 128;
sop(x==y);//false,因为是比较两个对象地址址值不一样,
Integer m = 127;
Integer n = 127;
sop(m==n);//true,也是比较两个对象地址值,但是他们两个指向
//同一个对象,因为当数值在byte范围内,对于新特性
//如果该数值已经存在,则不会再开辟新的内存空间。
}
public <T>void sop(T t)
{
System.out.println(t);
}
public static void main(String[] args)
{
new BasicDataType().method1();

}


}



































































































































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值