专业的JAVA编程教程与资源

网站首页 > java教程 正文

JAVA基础&String&StringBuffered&StringBuilder

temp10 2024-11-27 21:00:45 java教程 15 ℃ 0 评论

JAVA基础&String&StringBuffered&StringBuilder

String 类

JAVA基础&String&StringBuffered&StringBuilder

字符串的特点:

1、java中用String类来描述字符串。

2、字符串一但初始化就不可以被改变,因为是个常量。所以可以被共享

String s = "abc";// 定义一个类类型的变量s指向了一个字符串对象

String s2 = new String("abc");

这两个是有差别的,s对应的字符串在字符串缓冲池中。

当我们定义s2后此时在堆内存中创建了一个字符串对象,然后把缓冲池中的内容存放到对象中。

如何创建字符串对象呢?

1,直接使用 "".String s = "abc";

2,将一个字节数组或其中的部分变成字符串。

3,将一个字符数组或其中的部分变成字符串。

将数组变成字符串,可以用字符串构造函数来完成

String( char [] value ) 将字符数组转换成字符串

/*

* 字符串的特点:

* 1,java中用String类来描述字符串。

* 2,字符串一但初始化就不可以被改变。因为是个常量。

*/

String s = "abc";//定义一个类类型的变量 s 指向了一个字符串对象。

String s1 = "abc";

System.out.println(s == s1);//true

String s2 = new String("abc");

System.out.println(s == s2);//false;

System.out.println(s.equals(s2));//String类的equals覆盖了Object中的equals方法,

//用来判断字符串对象的内容是否相同。

String a = "abcd";

String a1 = "ab";

String a2 = "cd";

String b = a1+a2;

String c = "ab"+"cd";

System.out.println("a==b:"+(a==b));

System.out.println("a==c:"+(a==c));

按照面向对象的思考方式来思考字符串对象的功能。

1,获取;

1.1 获取长度。

int length();

1.2 获取字符串中的字符。

char charAt(index);

1.3一个字符或者一个字符串在一个字符串的中的位置。

int indexOf(ch)

int indexOf(string)

int indexOf(ch,fromIndex)

int indexOf(string,fromIndex)

int lastIndexOf(ch);

这些获取索引位的方法,如果没有要查找的内容,返回-1.

所以这个方法还有另一个应用,就是判断字符或者字符串是否存在。

1.4获取部分字符串。

String substring(begin,end);包含头,不包含尾。

2,判断。

2.1 是否包含指定的字符串。

boolean contains(string);

2.2 是否是以指定的字符串开头。

boolean startsWith(string);

2.3 是否是以指定的字符串结尾。

boolean endsWith(string);

2.4忽略大小写判断字符串内容。

boolean equalsIgnoreCase(string);

3,转换。

3.1 将字符串转成大小写。

String toLowerCase();

String toUpperCase();

3.2 将字符串转成数组。

byte[] getBytes();//字节数组。

char[] toCharArray();//字符数组

3.3 将字符串转成字符串数组。

String[]

3.4 将字符串中的中内容进行替换。

String replace(ch1,ch2);

String replace(string1,string2);

3.5 去除字符串两端的空格。

String trim();


StringBuffer 是一个容器

当要创建一个对象的时候,首先查阅API文档,看是否有

构造函数存在,如果有才能创建,否则无法创建此类的实例对象

字符串缓冲区的特点:

1、用于存储数据的容器。

2、该容器的长度是可变的。

3、该容器可以存储基本数据和引用数据类型

append() 支持常见数据类型 但是不能直接添加 byte 和 short

常见创建容器对象

StringBuffer sb = new StringBuffer();

既然是容器

应该具备一些常见的功能

1、添加数据

StringBuffer s1 = sb.append("ab"); 太烂了

StringBuffer s1 = sb.append("cd");

常用

sb.append("ab").append("cd"); 方法链调用

append是在结尾追加数据,前面数据和此时添加数据变成一个字符串

insert() 插入数据, StringBuffer insert(index , data) 根据指定的位置插入data数据

当前位置上的数据会被顺延。

2、删除数据

delete( int start , int end ) 一般有头有尾的参数,一般都是包含头不包含尾

清空缓冲区

sb.setlength(0);

StringBuffer sb = new StringBuffer();从新开辟了一个缓冲区

sb.delete(0.sb.length); 最合理

3、查找数据

char charAt(int index);

int indexOf(String str);

indexOf(String str, int fromIndex)

4、修改数据

setCharAt(int index, char ch);

replace(int start,int end,String str);

reverse();字符串换反转

可变数组的原理:

字符串缓冲区和数组的区别:

1、数组是固定长度

字符串缓冲区是可变长度

2、数组中的元素类型是固定同一类型

字符串缓冲区的元素类型是任意类型,也可以是用一类型

3、数组对象,只有一个length属性,然后通过角标操作数组的元素

字符串缓冲区是通过一系列的方法(怎删改查)来炒作缓冲区中的元素

4、数组中的元素,通过角标直接访问使用

字符串缓冲区的元素通常经过操作后,都要通过toString变成字符串使用。

StringBuilder 是JDK1.5 以后才出现的

是可以替代 Stringbuffer 的

但是他是线程不同步的,StringBuffer是线程同步的

虽然它在多线程时不安全,但是在单线程时效率高

StringBuilder 和 StringBuffer 的用法一模一样

对于java的升级无外乎是哪个原因:

1、提高效率

2、简化书写

3、提高安全性

基本数据类型包装成类

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

charCharacter

booleanBoolean

把基本数据类型封装成对象有什么好处呢?

可以吧对象中的定义更多的属性和行为对基本数据值进行操作

比如,整数的范围。如果整数被封装成对象,那么整数的取值范围,当然是整数对象自己最清楚

所以只要调用对象中的属性和行为就可以了。

基本数据类型包装类,它的最常见作用之一:完成基本数据和字符串之间的转换

完成字符串格式数值转成整数

Integer.parseInt("23"+4);结果27

对于其他数据类型的字符串转换方式都一样

xxx a = Xxx.parseXxx(Xxxstring);

int a = Integer.parseInt("23");

但是需要注意有一种类型没有转换

Character

怎么将整数转成字符串呢?

int num = 4;

String s = num + "";

String s = Integer.toString(num);

怎么将一个整数值封装成对象呢?通过构造函数.还可以通过静态方法valueOf的形式

Integer i1 = new Integer(4);

Integer i2 = new Integer("4");

sop(i1==i2); false

sop(i1.equals(i2)); true

怎么将整数对象装成整数呢?

使用 intValue方法

int y = i1.intValue()

将其他进制转换成十进制

int x = Integer.parseInt("110",2);

sop(x+1);

在1.5版本后对基本数据类型对象包装类进行升级,可以像操作解一般数据类型一样,操作包装类型数据

这就是升级中的简化书写

但是需要注意,在使用简写时,要注意z可以的取得值中多了一个null

如果自动装箱的数据在byte范围之内,同样的数据不在开辟空间

基本数据用大小与符号比较

对象比较用compareTo比较

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表