java基础篇笔记3

字符串

String类
声明一个字符串就是传建一个字符串,如果只声明不赋值,此时字符串为空,不能对其进行操作。
赋值字符串的方法:
1 引用字符串常量
2 利用构造方法直接实例化
3 利用字符数组实例化

字符串是常量,可直接赋值给String
示例
String a=“时间就是金钱”;
String a=“hello world”;

public String(String[] oringal)
String a =new String(“我爱火锅”);
String b =“我爱清汤”;
String c =new String(a);

字符串的变量实质上是一个对象
char chararray[]={‘t’,‘i’,‘m’,‘e’};
String a =new String(chararray);

char charArray[]={‘时’,‘间’,‘就’,‘是’,金’,‘钱’};
String a =new String(charArray,4,2);
(后面两个参数是开始位置和提取元素个数)

拼接字符串
使用+运算符可实现拼接多个字符串的功能
使用+=运算符同样可实现拼接多个字符串的功能

Concat
示例
String str=“abc”;
str= str.concat(“de”);

字符串是常量,在内存中是不可变的
(拼接后重新在栈内存中储存并赋值给字符串)

数字转换为字符串
显示转换
String valueOf(args)
示例
String strint = String.valueOf(126);
String strLong = String.valueOf(126L);
……
String strBoolean = String.valueOf(false);

隐式转换
字符串 = 字符串 + 数字
String str=“abc”+123;
常用的System.out.pringln(“1+1的结果等于”+2);
就是利用了隐式转换将整型转换成字符串并打印输出

使用隐式转换有注意事项:
String a=“1”+2+3+4;
String b=1+2+3+“4”;
String a=“1”+(2+3+4);
则a,b,c的输出结果分别是1234, 64, 19
也就是说:
1 碰到字符串后,会直接输出后面的内容;
2 碰到字符串前,先做运算,后输出内容;
3 碰到大括号,先运算括号内的值,后输出内容

字符串的长度(密码设置的长度)
字符串的length方法可直接调用,类似数组但要注意是有括号的
int size= password.Length();
字符串中的空格是被计算长度的
在调用length方法必须要确定字符串是有值的,null字符串会报错

获取指定位置字符
charAt(int index);
示例
String name=“免贵姓郭”;
char ch =name.charAt(name.length()-1);
输出为最后一个字符郭

获取子字符串的索引位置
有4种方法:
1 public int indexOf(String str)(获取第一次出现的索引位置)
2 public int indexOf(String str, int fromindex)
3 public int lastindexOf(String str) (从后向前索引)
4 public int lastindexOf(String str, int fromindex)

判断字符串首尾内容
Public boolean endsWith(String suffix)
Public boolean strartsWith(String suffix)
示例
String filename=“helloworld.java”;
boolean bool1=fileName.endsWith(".java");
boolean bool2=fileName.endsWith(".jpg");
boolean bool3=fileName.strartsWith(“hello”);

获取字符数组
将字符串变成字符数组
public char[] toCharArray()
示例
String str =“这是一个字符串”;
char[] ch=str.toCharArray();

判断子字符串是否存在
public boolean contains(String string)
示例
String str=“88888B88888”;
boolean bool1=str.contains(“B”);
boolean bool2=str.contains(“H”);

还可以使用indexOf()方法来判断(索引位置)
当str.index.Of(“B”)的值大于等于0就是存在,为-1是就是不存在

比较字符串是否相等
String name=new String(“tom”);
String dbvalue=new String(“tom”);
但是此时name和 dbvalue不相等
因为name和dbvalue是在堆中创建了不同的对象,在栈中指向不同的地址,而判断是否是同一内存地址所以表现为namedbvalue是false

public boolean equals(String anotherString)
示例
String name=new String(“tom”);
String dbvalue=new String(“tom”);
boolean bool =name.equals(dbvalue);
在比较时可忽略大小写的语句:
public boolean equalsIgnoreCase(String anotherString)
示例
String str1=new String(“abc”);
String str2=new String(“ABC”);
boolean bool =str1.equalsIgnoreCase(str2);
特殊情况
1 如果创建字符串不是用new而是直接引用字符串那么结果就会不同,直接引用时是把内存地址给字符串使用,此时引用相同字符串的字符串是使用同一匿名对象内存地址相同,那么==也就成立了。
2 字符串用new构造,字符串拼接和直接引用字符串,内容相同的字符串会相等吗?
拼接和直接引用的字符串是想等的

截取字符串
public String substring(int beginInedx)

public String substring(int beginInedx, int endIndex)

替换字符串
1 public String replace(“旧字符串”,“新字符串”)
2 public String replaceAll(“旧字符串或正则表达式”,“新字符串”)
3 public String replaceAllFirst(“旧字符串或正则表达式”,“新字符串”)(只替换第一次出现的字符串)

字符串分割

pubilc Sreing[] split(String regix)
示例
String str =“abc,def,ghi”;
String[] strArray=str.split(",");

pubilc Sreing[] split(String regix,int limit) (限制分割次数)

字符串的大小写转换
public String toUpperCase() (将字符串转换成大写)
public String toLowerCase() (将字符串转换成小写)

去除首尾空白内容
public String trim()
示例
String str=" abv ";
String shortStr=str.trim();

去除字符串中所欲空白内容
示例
String str=" a b cd e f g “;
String shortstr=str.replaceAll(”\s","");
输出“abcdefg”

格式化字符串
Stringformat(String format,Object…args)
示例
Data date=new Date();
String str= String.format("%tf",date);
输出年月日2019-06-27
表现形式也有tf,fD,tc和tr格式

常规格式化
在API文档中搜索String,然后找到format,在其中找到常规和格式化的转化符

数字格式化标志
只配合%d数字格式化
在转义符之间使用数字标志,就可以控制数字的输出

可变字符串
可变字符串类有两种
1 StringBuffer
2 StringBuilder

StringBuffer类是线程安全的可变字符序列,他是一个类似于string的字符串缓冲区,其实体容量会随着存放的字符串增加而自动增加。

StringBuffer sbf=new StringBuffer();
StringBuffer sbf=new StringBuffer(“abc”);
StringBuffer sbf=new StringBuffer(32); 表示初始字符序列容量为32个字符,内存所占容量:32个字符
而string str=new StringBuffer(“32”); 表示初始字符序列值为“32”,内存所占容量:16个字符(默认)

追加字符序列:
public StringBuffer appendObject obj)

修改指定索引处的字符:
public void setCharAt(int index, char ch)
示例:
StringBuffer sbf=new StringBuffer(“123456”);
sbf.setCharAt(3,‘A’);
会输出“123A456”

删除子字符串
public StringBuffer delete(int start, int end)

stringBuffer可以改变指定范围内的子字符串

StringBuilder类与StringBuffer类具有兼容的API,所以两者的使用方法相同。但是StringBuilder类不能保证线程同步,所以会比StringBuffer稍快一些。

String、StringBuilder类与StringBuffer类之间的关系
三者都是字符串常量,可以相互进行转化

StringBuffer的线程安全型最高,而StringBuilder的执行效率最高
综上所述:
1操作少,数据少,用string
2 单线程,操作多,数据多,用StringBuilder
3 多线程,操作多,数据多,用StringBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值